kubectl describe node的Conditions字段是诊断节点NotReady的首要依据:Ready=False是结果,而KubeletNotReady、NetworkUnavailable、DiskPressure等子项揭示具体病因,需结合lastTransitionTime、Events及kubelet日志(聚焦Error/timeout/x509/PLEG)综合判断。

看 kubectl describe node 的 Conditions 字段
这个字段是第一眼必须盯住的地方,它直接告诉你节点“病”在哪。Ready=False 只是结果,Conditions 里每个子项才是病因线索:
-
KubeletNotReady:kubelet 进程挂了、没响应,或证书过期导致无法跟 API Server 建连 -
NetworkUnavailable:CNI 插件 Pod 没起来,或 flannel/calico 的 host-networking 网络不通 -
DiskPressure或MemoryPressure:不是“快满了”,而是 kubelet 已触发驱逐阈值(默认 disk usage > 90%) -
Ready状态为 False 且Reason是KubeletNotRunning,基本可跳过日志直奔systemctl status kubelet
注意:Events 区域最后几条事件比 Conditions 更“新鲜”,比如出现 NodeNotReady 后紧跟 Failed to update node lease,大概率是网络或 etcd 问题。
查 journalctl -u kubelet 里的 error 和 timeout
kubelet 日志不是扫一眼就行,得带着关键词筛。重点搜这三类模式:
-
Error、Failed、timeout—— 尤其是Post https://.*:6443/apis/失败,说明连不上 API Server -
x509: certificate has expired—— kubelet client 证书过期(kubeadm 集群默认 1 年,容易被忽略) -
PLEG is not healthy—— 容器运行时卡住,常见于 containerd shim 进程陷入 D-state(比如 NFS 挂载卡死)
别用 journalctl -u kubelet -f 盲等,先加时间范围:journalctl -u kubelet --since "30 minutes ago" | grep -i "error\|timeout"。如果日志本身卡住不动,可能是系统级问题(如 dmesg 报 soft lockup)。
验证容器运行时是否真在干活
哪怕 systemctl status containerd 显示 active,也不代表它能正常响应 CRI 请求。真正有效的检查是:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 执行
crictl ps -a—— 如果卡住或返回空,说明底层 runtime 不可用 - 手动拉一个镜像:
crictl pull busybox,再试crictl runp创建 sandbox —— 卡在任一步都指向 runtime 层故障 - 检查
ss -tulnp | grep :10250—— kubelet 必须监听 10250(HTTPS metrics),否则 API Server 认为失联
特别注意:df -h /var 如果卡住,极大概率是底层存储(NFS/Ceph)挂死,导致内核 VFS 层阻塞,进而拖垮 containerd 和 kubelet。
别漏掉系统级信号:dmesg、ps、free
很多 NotReady 根因不在 Kubernetes 层,而在 Linux 内核或硬件:
-
dmesg -T | grep -E "oom|kill|soft lockup"—— OOM killer 杀了 kubelet,或内核软锁死导致整个节点僵住 -
ps auxf | grep " D "—— 找出 D-state 进程,尤其是 containerd-shim 或 nfsd,它们会把 PLEG 拖垮 -
free -h && cat /proc/meminfo | grep -i "commit"—— MemoryPressure 不只看 free 内存,还要看 CommitLimit 是否超限
最隐蔽的坑是时间不同步:date 和 uptime 卡顿,往往意味着 chronyd 异常,而 kubelet 证书校验依赖精确时间,偏差超过 1 分钟就会拒绝通信。










