Kubernetes Node NotReady 排查

现象

Node 状态变为 NotReady,节点上的 Pod 可能无法正常运行,新 Pod 也可能无法调度到该节点。

kubectl get nodes -o wide

常见影响:

  • 节点不可调度或调度异常。
  • 节点上的 Pod 进入异常状态。
  • Service 后端实例减少。
  • 集群事件中出现 kubelet、网络、磁盘等相关告警。

环境

  • 集群:Kubernetes
  • 对象:Node / Pod
  • 常用命令:kubectl describe node, journalctl -u kubelet

排查过程

  1. 查看节点状态。
kubectl get nodes -o wide
  1. 查看节点详细信息和 Conditions。
kubectl describe node <node-name>

重点关注:

  • Ready
  • MemoryPressure
  • DiskPressure
  • PIDPressure
  • NetworkUnavailable
  • Events
  1. 查看节点上的 Pod。
kubectl get pods -A -o wide | grep <node-name>
  1. 登录节点检查 kubelet。
systemctl status kubelet
journalctl -u kubelet -n 200 --no-pager
  1. 检查容器运行时和网络。
systemctl status containerd
crictl ps
ip addr
ip route

常见根因

根因典型表现排查方向
kubelet 异常Ready 为 Unknown/False,事件中有 kubelet 心跳异常systemctl status kubelet
节点网络异常NetworkUnavailable=True,节点无法访问 apiserver网络、路由、DNS、防火墙
容器运行时异常kubelet 日志中连接 runtime 失败containerd/docker 状态
磁盘压力DiskPressure=True根分区、/var/lib/containerd、inode
内存压力MemoryPressure=True节点内存、Pod requests/limits
证书或时间异常kubelet 认证失败、时间漂移证书、NTP、节点时间

解决方法

kubelet 异常

systemctl status kubelet
journalctl -u kubelet -n 200 --no-pager

处理方式:

  • 根据日志修复 kubelet 配置。
  • 检查 kubelet 是否能访问 apiserver。
  • 修复后重启 kubelet。
systemctl restart kubelet

容器运行时异常

systemctl status containerd
journalctl -u containerd -n 200 --no-pager
crictl info

处理方式:

  • 修复 containerd/docker 服务。
  • 检查运行时 socket 配置。
  • 必要时重启运行时和 kubelet。

磁盘压力

df -h
df -i
du -xh --max-depth=1 /var/lib/containerd | sort -rh

处理方式:

  • 清理异常日志。
  • 清理无用镜像和容器缓存。
  • 扩容节点磁盘。
  • 排查是否存在持续写入的大文件。

网络异常

ip addr
ip route
ping <apiserver-ip>
curl -k https://<apiserver-address>:6443/healthz

处理方式:

  • 修复节点网络、路由、DNS。
  • 检查防火墙、安全组。
  • 检查 CNI 插件 Pod 状态。

验证结果

kubectl get nodes
kubectl describe node <node-name>
kubectl get pods -A -o wide | grep <node-name>

确认点:

  • Node 状态恢复 Ready。
  • DiskPressure、MemoryPressure 等异常条件消失。
  • 节点上的核心 Pod 正常运行。
  • 新 Pod 可以正常调度。

预防措施

  • 监控 kubelet、containerd、CNI 核心组件状态。
  • 对 Node Ready 状态建立告警。
  • 对磁盘、inode、内存、PID 数设置阈值告警。
  • 保持节点时间同步。
  • 变更节点网络、证书、运行时配置前做好回滚方案。

相关笔记