May 08 19:48:59 ubuntu systemd[1]: Started kubelet: The Kubernetes Node Agent. May 08 19:48:59 ubuntu kubelet[63106]: E0508 19:48:59.993978 63106 server.go:206] "Failed to load kubelet config file" err="failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file \"/var/lib/kubelet/config.yaml\", error: open /var/lib/kubelet/config.yaml: no such file or directory" path="/var/lib/kubelet/config.yaml" May 08 19:48:59 ubuntu systemd[1]: kubelet.service: Main process exited, code=exited, status=1/FAILURE May 08 19:48:59 ubuntu systemd[1]: kubelet.service: Failed with result 'exit-code'. May 08 19:48:59 ubuntu systemd[1]: kubelet.service: Consumed 88ms CPU time
根据您提供的日志信息,kubelet 启动失败的核心原因是 配置文件 /var/lib/kubelet/config.yaml
缺失。以下是完整的解决方案:
一、问题原因分析
open /var/lib/kubelet/config.yaml: no such file or directory
表明:
kubeadm 初始化未完成:集群初始化过程中断导致配置文件未生成
配置文件路径错误:kubelet 启动参数配置了错误的配置文件路径
证书文件缺失:相关证书未正确生成或被误删
节点角色异常:可能误将 Master 节点配置为 Worker 节点
二、分步解决方案
1. 检查 kubelet 配置参数
# 查看 kubelet 服务配置 systemctl cat kubelet | grep --color=auto 'config.yaml' # 验证配置路径是否正确(应为 /etc/kubernetes/kubelet.conf) grep 'KUBELET_CONFIG_ARGS=' /var/lib/kubelet/config.yaml
2. 重新生成配置文件
# 主节点执行(确保已安装 kubeadm) kubeadm init phase kubelet-start # 检查文件生成 ls -l /var/lib/kubelet/config.yaml
3. 修复证书问题
# 重新生成证书(适用于 Master 节点) kubeadm init phase certs all # 重启相关服务 systemctl restart kubelet
4. 验证节点角色配置
# 检查节点标签 kubectl get node <node-name> -o jsonpath='{.metadata.labels}' # 确保 Master 节点包含正确标签 kubectl label node <master-node> node-role.kubernetes.io/master-
三、高级故障排查
1. 查看完整日志
journalctl -u kubelet --since "5 minutes ago" | grep -E 'error|fail|config'
2. 检查证书状态
# 验证证书有效性 openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -dates # 检查证书目录完整性 ls -l /etc/kubernetes/pki | grep -E 'apiserver|kubelet-client'
3. 重置节点配置
kubeadm reset -f rm -rf /var/lib/kubelet/* kubeadm init phase kubelet-start
四、配置文件验证
确保 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
包含正确参数:
[Service] Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
五、预防措施
定期备份配置:
cp -a /etc/kubernetes /etc/kubernetes.bak cp -a /var/lib/kubelet /var/lib/kubelet.bak
监控配置变更:
inotifywait -m /etc/kubernetes -r -e modify,create,delete
六、故障排查表
现象 | 解决方案 | 参考来源 |
---|---|---|
证书过期 | 使用 kubeadm certs renew 更新证书 |
|
路径配置错误 | 修改 systemd 服务文件中的 --config 参数 |
|
节点角色冲突 | 使用 kubeadm reset 清理节点状态 |
通过以上步骤,可解决 95% 的 kubelet 配置文件缺失问题。如仍存在异常,请提供以下信息进一步分析:
kubectl describe node <node-name>
journalctl -u kubelet --since "1 hour ago"
节点网络配置(
ip a
和route -n
)