1. 故障初现:NotReady节点的诞生
那天早上我像往常一样准备部署一个新的Kubernetes集群,按照文档一步步操作。当我在host1节点上执行完所有安装步骤后,习惯性地用kubectl get nodes查看状态,却发现节点状态赫然显示着NotReady。这个红色标记就像警报灯一样刺眼,我知道又遇到麻烦了。
遇到这种情况,老司机的第一反应永远是看日志。我立刻在问题节点上执行了journalctl -f -u kubelet.service,果然发现了关键报错信息:
bash复制failed to load Kubelet config file /var/lib/kubelet/config.yaml
这个错误很典型,说明kubelet服务启动时找不到它的配置文件。仔细回想操作过程,我突然意识到自己犯了个低级错误——在还没执行kubeadm init初始化集群之前,就手快启动了kubelet服务。这就好比还没装修好房子就急着搬家具进去,结果发现连门都找不到。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 问题诊断:抽丝剥茧找根源
2.1 深入分析日志信息
日志中的错误信息直指问题核心:kubelet无法加载配置文件。但为了确保没有遗漏其他潜在问题,我决定更全面地检查日志。通过journalctl -u kubelet --no-pager查看完整日志输出,特别注意时间戳附近的警告和错误信息。
在排查过程中,我发现除了主配置文件缺失外,还有几个值得关注的日志条目:
bash复制Unable to load client CA file /etc/kubernetes/pki/ca.crt: open /etc/kubernetes/pki/ca.crt: no such file or directory
这个错误进一步验证了我的猜测——由于没有执行kubeadm init,整个PKI证书体系都没有建立起来。kubelet需要的不仅是config.yaml,还包括各种证书文件。
2.2 验证关键文件状态
为了全面了解情况,我检查了几个关键目录:
/var/lib/kubelet/:应该是空的,没有config.yaml/etc/kubernetes/:缺少pki目录和admin
