k8s集群,master节点进入维护模式和退出维护模式

将 Master 节点(控制平面节点)进入维护模式是一个需要格外谨慎的操作,因为它直接关系到整个集群的管理能力。

虽然操作命令与 Worker 节点类似(kubectl drain),但其影响和注意事项有本质区别。


操作前的关键考量(非常重要!)

在动手之前,请务必回答以下问题:

  1. 你的集群是单 Master 还是多 Master(高可用)集群?
    • 单 Master 集群绝对不要执行 drain 操作。将唯一的 Master 节点设为不可调度并驱逐其上的 Pod,会导致整个集群的控制平面(API Server, Scheduler, Controller-Manager)完全不可用。你将无法管理集群,也无法调度新的 Pod。
    • 多 Master (HA) 集群:可以执行 drain 操作。因为其他 Master 节点仍然在线,可以接管集群的管理工作。

本指南将主要针对多 Master (HA) 集群。如果你的集群是单 Master,请不要继续向下操作。

  1. Master 节点上是否运行着关键的系统服务?
    • 除了控制平面组件,Master 节点上可能还运行着其他关键服务,例如 Ingress Controller、集群 DNS 的副本等。drain 会将这些 Pod 驱逐到其他节点,请确保其他节点有足够的资源来承载它们。

多 Master (HA) 集群的操作步骤

假设你的集群有 3 个 Master 节点,你要维护 master-01

第 1 步:确认集群状态健康

在开始之前,确保其他 Master 节点都是健康的。

kubectl get nodes -l node-role.kubernetes.io/control-plane

你应该看到除了 master-01 之外的其他 Master 节点状态都是 Ready

第 2 步:执行 drain 操作

这是将 master-01 进入维护模式的核心命令。

kubectl drain master-01 --ignore-daemonsets --delete-emptydir-data --force

参数解释:

  • --ignore-daemonsets:必须使用。Master 节点上运行着 kube-proxy、CNI 插件等 DaemonSet Pod,它们需要保留。
  • --delete-emptydir-data:推荐使用。如果控制平面组件(如 kube-apiserver)使用了 emptyDir(虽然罕见),这允许 drain 继续进行。
  • --force在 Master 节点上强烈推荐。有些静态 Pod(如 kube-apiserver)可能无法被正常驱逐,--force 会强制删除这些 Pod,让 drain 命令可以完成。删除后,kubelet 会根据 /etc/kubernetes/manifests/ 下的配置文件立即重新创建它们(但由于节点已 cordon,它们会处于 Pending 状态)。

执行后,master-01 上的 Pod(除了 DaemonSet)会被驱逐到其他 Master 节点上。

第 3 步:执行维护操作

现在 master-01 已经处于维护模式,你可以安全地:

  • SSH 登录到 master-01
  • 执行系统更新、重启、升级等操作。
第 4 步:维护完成后,将节点重新上线

维护操作完成后,将 master-01 重新加入集群调度。

kubectl uncordon master-01

执行后,kubelet 会重新在 master-01 上创建控制平面组件的静态 Pod。稍等片刻,master-01 的状态会恢复为 Ready,并重新分担集群的管理工作。


单 Master 集群的“维护模式”

如果你只有一个 Master 节点,你不能使用 drain。如果你必须维护它,流程是这样的:

  1. 接受服务中断:明确知道在维护期间,你将无法管理集群(kubectl 命令会失败),也无法创建或更新任何资源。
  2. (可选)备份 Etcd:在关机前备份 Etcd 数据库。
  3. 直接关机或重启
    # SSH 到 Master 节点
    sudo reboot
    
  4. 等待恢复:等待节点重启完成,kubelet 和容器运行时服务启动,控制平面组件恢复运行。
  5. 验证:节点重启后,检查其状态:
    kubectl get nodes
    
    确认其状态恢复为 Ready

总结

集群类型推荐操作后果
多 Master (HA) 集群kubectl drain / kubectl uncordon集群管理功能平滑切换,服务不中断。
单 Master 集群不要 drain,直接重启/维护集群管理功能在维护期间中断。

核心建议: 在生产环境中,始终使用多 Master 高可用集群,这样你就可以安全地对单个 Master 节点进行维护,而不会影响整个集群的稳定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值