Kubernetes集群的关闭与重启

前言
在日常对 kubernetes 集群运行维护的过程中,您可能需要临时的关闭或者是重启 kubernetes 集群对集群进行维护,本文将介绍如何去安全的关闭 k8s 集群以及如何重新启动集群。
日常节点运维方式
关闭 k8s 集群是个危险的操作!在关闭集群之前,您必须完全了解这个操作所带来的后果。首先,我们要对集群内的应用、客户定义资源 crd 和 etcd 进行备份,然后再进行重启或关闭集群的操作。在通常运维的情况下,建议您驱逐维护节点,而非重启整个集群。在这里,我们也把驱逐维护节点命令放在下面供您参考。
首先,确定想要移出的节点的名称。可以用以下命令列出集群中的所有节点:
$ kubectl get nodes  
接下来,告诉 kubernetes 需要移出的节点:
$ kubectl drain   
一旦它返回(没有报错), 你就可以下线此节点(或者等价地在云平台上,删除支持该节点的虚拟机)。如果要在维护操作期间将节点留在集群中,则需要运行:
kubectl uncordon   
然后告诉 kubernetes,它可以继续在此节点上调度新的 pods。
在进行集群关闭前的准备工作
备份是最最重要的准备工作,保障应用可以重新正常服务为目的各种操作都是必须的。做一个你自己的计划清单,在重要的步骤之前确认好。
主机之间已经设置 ssh 免密登录
集群内应用的备份
集群内客户自定义资源的备份
集群内 etcd 的备份
关闭 kubernetes 集群
再次提示在关闭集群前,请您务按照我们推荐的方法备份集群的数据与应用,以便在重新启动集群时如果遇到任何问题,可以通过备份还原集群与应用。使用本教程中的方法可以平稳关闭集群,但数据损坏的可能性仍然存在。
首先,我们要获取节点列表
k8snodes=$(kubectl get nodes -o name)  
然后,我们就要关闭节点了,您可以可一台一台的关闭。或运行以下脚本关闭节点:
for node in ${k8snodes[@]}do    echo ==== shut down $node ====    ssh $node sudo shutdown -h 1done  
注意: 前提条件是主机之间已经设置 ssh 免密登录。
此时,您就可以关闭其他的集群依赖项,对集群进行维护操作啦。
kubernetes 集群重启
在重启后,我们需要仔细检查所有节点和核心组件的状态,并确保一切就绪。
$ kubectl get nodes -o widename        status   roles                  age   version   internal-ip    external-ip   os-image             kernel-version      container-runtimemars-k8s1   ready    control-plane,master   17d   v1.21.0   172.16.60.60           ubuntu 20.04.1 lts   5.11.0-40-generic   docker://20.10.10mars-k8s2   ready                     17d   v1.21.0   172.16.60.61           ubuntu 20.04.1 lts   5.11.0-40-generic   docker://20.10.10mars-k8s3   ready                     17d   v1.21.0   172.16.60.62           ubuntu 20.04.1 lts   5.11.0-40-generic   docker://20.10.10$ kubectl get svc -n kube-systemname             type        cluster-ip       external-ip   port(s)                  agekube-dns         clusterip   10.96.0.10               53/udp,53/tcp,9153/tcp   17dmetrics-server   clusterip   10.111.227.248           443/tcp                  17d$ kubectl get pod -n kube-systemname                                ready   status    restarts   agecoredns-558bd4d5db-h7jqc            1/1     running   2          17dcoredns-558bd4d5db-wj4bn            1/1     running   2          17detcd-mars-k8s1                      1/1     running   2          17dkube-apiserver-mars-k8s1            1/1     running   3          17dkube-controller-manager-mars-k8s1   1/1     running   2          17dkube-flannel-ds-677dg               1/1     running   2          17dkube-flannel-ds-bxhx6               1/1     running   3          17dkube-flannel-ds-r5pqf               1/1     running   2          17dkube-proxy-6w52h                    1/1     running   2          17dkube-proxy-p8zfp                    1/1     running   2          17dkube-proxy-v8t7j                    1/1     running   2          17dkube-scheduler-mars-k8s1            1/1     running   2          17dmetrics-server-5f9459b95c-dtzbf     1/1     running   2          17d  
kubernetes 集群重启维护避坑指南
说点儿心里话,运维有时要看运气,这不是开玩笑,在我的职业生涯中看到了也学到了很多,在过去我有幸支持了多个国家的数据灾备业务。包括:韩国,日本,中港台,及东南亚各个 region 的客户公司,在运维做 it 架构变更的时候,买烧猪祭奠关二爷有时真的需要,我们不了解的事情还有很多,要保持敬畏。所以备份吧,多备份几次!!!
在我们这个时代人定胜天的神迹比比皆是。但是所谓割接,割下来,接不上的情况也屡见不鲜。通常情况下,重新启动 kubernetes 集群后就可以继续正常使用,但是由于意外情况,该集群可能不可用。例如:
关闭集群过程中 etcd 数据损坏或是节点故障,这在 bare metal k8s node 上很常见。
网络错误,这就需要检查所有集群依赖项的状态,一定用好监控工具,一步一步的查,别怕麻烦,要确保所有集群依赖项均已就绪。
应用的问题,节点是启动了,k8s 也好好的,应用不能对外提供服务,这时一系列的排错是最考验人的,所以备份恢复吧。这样可以确保 rto。


设计师迈克尔·穆莱巴展示了iPhone 9c的概念设计
2021跑步耳机推荐——跑步运动耳机哪个好一些
智能化、网络化、数字化成工控机显著特征
智能工业的“焦虑”与智能工业的“落地”
余承东吐槽华为智能家居:技术非常不成熟
Kubernetes集群的关闭与重启
美图表示将于2019年中旬前完全关闭手机业务
异步电动机的熔丝如何选择
电阻器的代换经验介绍
88E3015-A2-NNP1C000以太网收发器Marvell
NASA时隔30年后启动DAVINCI+任务和VERITAS任务
10年后,微软市值再次超越苹果
cpu的缓存作用和工作原理是什么?cpu温度多少正常,温度过高怎么办
你为什么会抗拒物联网?
比特币价格涨得这么贵的内在原因分析
采用北斗等技术建设数字智能城市
中国铁塔顺利实现首次出海为日后服务一带一路国家打下了坚实的基础
三大运营商展开5G布局_华为能达到怎样的高度?
滤波电容大小计算公式与选择
数据链路层的作用