1. 应用场景
场景:在实际工作中,可能某个 Master 节点需要维护,迁移,我们需要平滑的停止、启动该节点,尽量减少启停中对集群造成的影响
注意:为了确保 K8s 集群能够安全恢复,请在操作前对 K8s 数据进行备份为了确保重启 Master 节点期间 K8s 集群能够使用,集群中 Master 节点数量要大于等于3,若启停的 Master 节点上有 etcd 服务,在启停该 Master 节点期间,请勿对集群资源进行任何操作,包括添加、更新、删除等,否则会导致启停节点的 etcd 数据失效
2. 操作步骤
- 备份数据
略,后续补充 停止 Master 节点调度
# 查看信息 kubectl get node # 停止 Master 节点调度,停止后,上面已经运行的工作负载(Pod)不会受到影响,新的工作负载不会调度到该节点上 kubectl cordon sh-gpu101.aibee.cn # 再次查看信息 kubectl get node
驱逐 Master 节点上的工作负载
# --ignore-daemonsets 驱逐 pod 时忽略 daemonset # --delete-local-data 驱逐 pod 时删除 pod 的临时数据 kubectl drain sh-gpu101.aibee.cn --delete-local-data --ignore-daemonsets --force # 查看节点上是否还有业务 pod kubectl get pod -A -o wide |grep sh-gpu101.aibee.cn
停止 Master 节点
# 注意顺序 systemctl stop kubelet systemctl stop etcd systemctl stop docker
- 恢复 Master 节点
# 注意顺序
systemctl start docker
systemctl start etcd
systemctl start kubelet
systemctl status docker etcd kubelet
- 允许 Master 节点调度
# 取消不可调度
kubectl uncordon sh-gpu101.aibee.cn