标准答案
- 查看 Node conditions、events、kubelet 日志、容器运行时状态和心跳时间,区分资源压力与通信失败。
- 检查磁盘、inode、内存、CPU、时间同步、证书、CNI、DNS 和到 API Server 的网络。
- 节点故障时先确认 Pod 是否被安全驱逐和重新调度,状态型工作负载要评估卷挂载和数据一致性。
- 修复后验证节点恢复、Pod 就绪、Service 后端和监控告警,不以 Node Ready 单项作为恢复完成。
题目解析
Node NotReady 只是控制面根据心跳和 conditions 得出的状态,根因可能在 kubelet、container runtime、CNI、磁盘/inode、内存压力、证书、时间或到 API Server 的网络。节点重新 Ready 后,Pod 仍可能未就绪、Service 后端仍为空,存储也可能尚未安全挂载。
排查要把 Node conditions/events、kubelet 和 runtime 日志、磁盘/内存、CNI、DNS、证书和 API 连接放在同一时间线。生产节点操作前先评估副本、PDB、PVC、本地数据和故障域,恢复后验证业务流量、数据和告警,而不是只看 get nodes。
常见误区
- 误区:直接 cordon/drain 生产节点而不评估 PDB。改正:先确认副本、拓扑、卷和维护窗口,再执行有计划的迁移。
- 误区:只看 kubectl get nodes。改正:同时检查 conditions、events、kubelet/runtime、网络、存储和工作负载。