node-notready

Kubernetes 节点 NotReady 的定位与修复

现象

kubectl get nodes 显示节点 NotReady,该节点上的 Pod 可能被标记为异常或迁移。常见于 kubelet、容器运行时、磁盘/内存压力或网络插件故障。

快速定位

kubectl get nodes -o wide
kubectl describe node <node>
kubectl get events -A --sort-by=.lastTimestamp | tail -30

登录节点:

systemctl status kubelet
journalctl -u kubelet --since '30 min ago' | tail -100
systemctl status containerd
df -h
free -m
crictl ps

常见根因

  1. kubelet 停止、崩溃或配置错误。
  2. containerd/CRI-O 运行时故障。
  3. 节点磁盘、内存或 PID 压力触发 NotReady。
  4. CNI 网络插件异常,节点网络不通。
  5. 证书过期、时钟偏差或 apiserver 连接失败。
  6. 云厂商节点/网络故障。

修复

相关命令

读完自测

合上页面,先回答,再展开对照。

  1. 节点 NotReady 时先看什么?
  2. 如何在节点上检查 kubelet 与容器运行时?
  3. 资源压力或节点无法恢复时怎么处理?
答案
  1. 看 kubectl describe node 的 Conditions 和 kubelet 日志,确认是运行时、资源压力、网络还是证书/时间问题。
  2. 用 systemctl status kubelet/containerd、journalctl -u kubelet 看状态与日志,crictl ps 验证运行时,df -h/free -m 看资源。
  3. 先清理磁盘/内存并调整 kubelet 阈值;无法恢复时先 drain,再重建节点,避免影响业务。