重启工作节点Docker服务后主节点Kubelet提示config.yaml文件不存在
解决Kubelet配置文件/var/lib/kubelet/config.yaml缺失的问题
我之前运维K8s集群时也碰到过一模一样的状况——重启工作节点Docker后,主节点查kubelet日志就报这个文件找不到的错误。大概率是重启操作影响了kubelet配置文件的完整性,或是节点的kubelet配置没正确初始化。下面是几个我亲测有效的解决步骤:
第一步:确认问题节点的文件状态
先登录到出问题的工作节点(不是主节点),执行命令检查文件是否真的不存在:ls -l /var/lib/kubelet/config.yaml如果输出显示"No such file or directory",就继续往下操作。
第二步:用kubeadm重新生成配置(适用于kubeadm部署的集群)
这是最稳妥的修复方式,步骤如下:- 在工作节点执行重置命令(会清空节点的K8s相关配置,执行前记得先驱逐节点上的业务Pod,避免影响服务):
kubeadm reset - 回到主节点,生成新的节点加入命令:
kubeadm token create --print-join-command - 把主节点输出的join命令复制到工作节点执行,完成后kubelet会自动生成缺失的
config.yaml文件。
- 在工作节点执行重置命令(会清空节点的K8s相关配置,执行前记得先驱逐节点上的业务Pod,避免影响服务):
第三步:检查kubelet的systemd配置(排查路径错误)
有时候不是文件真的缺失,而是kubelet启动参数里指定了错误的配置路径。可以检查kubelet的systemd配置文件:cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf查看里面的
--config=/var/lib/kubelet/config.yaml参数是否正确,如果路径写错了,修改后执行:systemctl daemon-reload systemctl restart kubelet第四步:验证修复结果
完成上述操作后,回到主节点重新查看kubelet日志:journalctl -u kubelet -f如果没有再报文件缺失的错误,再检查节点状态:
kubectl get nodes确认节点状态变为
Ready就说明问题解决了。
内容的提问来源于stack exchange,提问作者ccd
相关产品推荐
相关产品推荐

