文章目录
- @[toc]
- 事故背景
- 报错内容
- 修复过程
- 停止 kubelet 服务
- 备份 kubelet.config
- 重新生成 kubelet.config
- 重新生成 kubelet 配置文件
- 对比 kubeadm-flags.env
文章目录
- @[toc]
- 事故背景
- 报错内容
- 修复过程
- 停止 kubelet 服务
- 备份 kubelet.config
- 重新生成 kubelet.config
- 重新生成 kubelet 配置文件
- 对比 kubeadm-flags.env
事故背景
因为一些情况,需要 reboot 服务器,结果 reboot 机器后,kubeadm init 节点的 kubelet 目录消失了,整个
/var/lib/kubelet
目录没有了,导致 kubelet 启动失败,etcd 和 apiserver 也没法启动
报错内容
kubelet[23415]: F0616 02:29:06.942780 23415 server.go:198] 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
修复过程
参考 当 Kubernetes 集群证书被全部删除后,你该如何修复它? 这篇文章做了 kubelet 的修复,目前集群是正常了,后期暂时不知道是否会有其他异常,若有异常,后续会继续更新博客
停止 kubelet 服务
systemctl stop kubelet
发现没法停止 kubelet 服务,不影响后面的操作
Failed to stop kubelet.service: Connection timed out
See system logs and 'systemctl status kubelet.service' for details.
Failed to get load state of kubelet.service: Connection timed out
备份 kubelet.config
一般来说,删了就行
mv /etc/kubernetes/kubelet.conf{,.bak}
重新生成 kubelet.config
kubeadm init phase kubeconfig kubelet
重新生成 kubelet 配置文件
kubeadm init phase kubelet-start
对比 kubeadm-flags.env
可能之前有一些 kubeadm config 不同的地方,比如镜像的仓库什么的,可以和其他 worker 节点的对照一下,然后修改一下后,重启 kubelet
cat /var/lib/kubelet/kubeadm-flags.env