标准答案

  1. 查看 Node conditions、events、kubelet 日志、容器运行时状态和心跳时间,区分资源压力与通信失败。
  2. 检查磁盘、inode、内存、CPU、时间同步、证书、CNI、DNS 和到 API Server 的网络。
  3. 节点故障时先确认 Pod 是否被安全驱逐和重新调度,状态型工作负载要评估卷挂载和数据一致性。
  4. 修复后验证节点恢复、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、网络、存储和工作负载。

作者信息