Cordon 与 drain 协调节点维护
Cordon 改变调度资格,drain 协调驱逐并等待 Pod 终止。两条命令都不保证维护期间工作一定保留;应用关闭逻辑、替代容量、存储和中断预算共同决定结果。应把排空视为需要观察的状态,并记录明确例外,而不是从命令名称推导节点已经可以安全关机。 Cordon 是放置限制,不证明节点已清空。Drain 不是原子事务,也不证明写入或替代副本成功。本轮没有执行原文保留的诊断命令。 Cordon 改变未来放置 Cordon 设置节点的不可调度字段,已有 Pod 继续运行,普通的新调度会避开它。Drain 自己也会执行 cordon,因此单独先做一次可以留下观察窗口,但不是必需步骤。Uncordon 重新允许调度,不保证立即出现新副本,也不会修好不健康的 kubelet;恢复前仍应核对节点状态与应用准备情况。 这项调度限制存在例外。DaemonSet Pod 容忍不可调度条件,直接填写 nodeName 的 Pod 则绕过普通调度选择。具有相应容忍度的其他 Pod 也可能符合放置条件。因此,需要检查真实剩余负载,不能把 cordon 说成阻止所有 Pod 到来的防火墙,更不能只凭不可调度字段就判断节点已经清空。 ...