机器 reboot 后 kubelet 目录凭空消失的灾难恢复

发布于:2024-06-21 ⋅ 阅读:(138) ⋅ 点赞:(0)

事故背景

因为一些情况,需要 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

网站公告

今日签到

点亮在社区的每一天
去签到