流程定位
节点维护看起来只是重启机器,实际是一套固定顺序:确认冗余与容量,cordon 阻止新调度,drain 迁移负载,执行维护(系统更新、内核升级、硬件检查),uncordon 恢复调度,最后核对 Pod 分布与业务指标。适用平台是 Kubernetes。缺任何一步都可能把局部维护扩大成全局故障,尤其是跳过冗余确认直接排水这一步。
基本信息
| 适用平台 | Kubernetes,节点级运维流程 |
|---|---|
| 核心命令 | cordon、drain、uncordon,配合 get pods -o wide 核对分布 |
| 前置条件 | 业务副本冗余足够、PDB 允许中断、无本地卷独占工作负载 |
| 验证项 | 维护后节点 Ready、组件健康、业务指标与容量回到基线 |
典型使用场景
- 系统补丁与内核升级:需要重启节点前的标准动作
- 硬件维护:换内存、加磁盘前的例行清空
- 节点池换代:旧机型逐步退役、新机型接替
- 故障排查:怀疑节点侧问题时先清空再复现,避免影响业务
- 演练与文档:把流程固化成检查单,降低交接成本
流程命令
流程命令
kubectl get pods -A -o wide --field-selector spec.nodeName=node1 # 1 盘点受影响负载
kubectl get pdb -A && kubectl get nodes -o wide # 2 确认冗余与容量
kubectl cordon node1 # 3 禁止新调度
kubectl drain node1 --ignore-daemonsets --delete-emptydir-data # 4 优雅迁移
# ... 节点维护:系统更新、重启 kubelet 与容器运行时 ...
kubectl uncordon node1 # 5 恢复调度
kubectl get pods -A -o wide --field-selector spec.nodeName=node1 # 6 复核落点检查单
| 阶段 | 确认项 | 不通过时的处理 |
|---|---|---|
| 准备 | 业务副本冗余与节点剩余容量 | 先扩副本或错峰维护 |
| 准备 | PDB 的 allowed disruptions | 必要时临时放宽并记录 |
| 执行 | drain 是否顺利结束 | 有卡住的 Pod 先查原因再重试 |
| 恢复 | 节点回到 Ready | 查 kubelet 与运行时状态 |
| 复核 | Pod 分布与业务指标回到基线 | 与维护前对照 |
维护前确认:业务副本冗余够吗、PDB 会不会阻塞、本地卷的工作负载可否迁移、监控与日志代理是否仍覆盖该节点。
维护后不要只看节点 Ready:还要确认业务侧的副本数、延迟与错误率回到基线,容器运行时与 CNI 是否正常启动。