标准答案
- cordon 适合维护前阻止新增负载,但不会影响已经运行的 Pod。
- drain 会按驱逐规则处理 Pod,受 PDB、不可驱逐 Pod、本地数据和 DaemonSet 影响。
- delete node 只是删除 API 对象,节点主机上的进程和数据可能仍在运行,不能作为常规迁移手段。
- 维护前要确认副本、PDB、PVC、拓扑、DaemonSet 和恢复时间,完成后取消 cordon 并验证业务。
题目解析
cordon 只把节点标记为不可调度,不影响现有 Pod;drain 会按 eviction 规则排空工作负载,并受到 PDB、DaemonSet、本地数据和不可驱逐 Pod 影响;delete node 只删除 API Server 中的 Node 对象,不能代替主机关机或安全迁移。
维护前要确认副本和故障域仍有容量,检查 PDB、PVC、local volume、DaemonSet 和静态 Pod,设置观察和回滚条件。完成修复后取消 cordon,验证新节点、Pod readiness、Service 后端、存储和业务指标。
常见误区
- 误区:用 delete node 代替 drain。改正:先 cordon、评估并执行 drain,明确主机和控制面对象的不同。
- 误区:忽略单副本和本地卷。改正:在维护前确认复制、数据迁移和恢复方案。