【k8s集群Docker + cri-dockerd】服务器重启或关机后 apiserver/controller/scheduler 无法自动恢复

说明:

一、我在使用 Kubernetes 集群时遇到一个启动依赖问题,具体表现如下:

1)服务器重启后,控制平面组件(kube-apiserver、kube-controller-manager、kube-scheduler)无法自动恢复,导致整个集群不可用。

2)底层容器运行时使用的是 Docker,并通过 cri-dockerd 作为 CRI 接口桥接 kubelet 与 Docker,三者存在明确的依赖关系:

kubelet ------> cri-dockerd ------> docker。

3)目前我通过配置 systemd 依赖(如 After=cri-dockerd.service)和环境变量,已实现"服务器重启"后集群自动恢复。

4)但 在"关机后再开机"的场景下,这些控制平面 Pod 依然无法自动拉起,必须手动执行以下命令才能恢复集群:

二、请问大家是如何彻底解决这个问题的?

1)是否有一种方案,能让 Kubernetes 控制平面在 无论是重启还是关机再开机 的情况下,都能自动、可靠地恢复,且上层业务应用可正常访问?

如果您的环境中已经稳定解决了该问题,欢迎在评论区分享您的配置或思路,非常感谢各位大牛

2)问题如下图所示:


解决办法:

powershell 复制代码
1、master、worker都要更改kubelet服务
vi /usr/lib/systemd/system/kubelet.service
# 将以下选项注释,
#Wants=network-online.target
#After=network-online.target

# 添加上以下选项
Wants=cri-dockerd.service
After=cri-dockerd.service

最终结果如下图所示
root@master01:~# cat /usr/lib/systemd/system/kubelet.service
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/
#Wants=network-online.target
#After=network-online.target
Wants=cri-dockerd.service
After=cri-dockerd.service

[Service]
ExecStart=/usr/bin/kubelet
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target

# 重启服务
systemctl daemon-reload
systemctl restart kubelet

说明:
1)这个方法只能解决服务器重启后,k8s集群自动恢复正常
2)如果是关闭服务器,再开机启动服务器,k8s集群服务只能手动执行命令恢复

2、执行命令恢复k8s集群(master、worker都要执行)
# 重启服务
systemctl restart docker cri-docker kubelet

# 查看状态
systemctl status docker cri-docker kubelet --no-pager -l

# 验证k8s集群
netstat -tnlpu
kubectl get po -A


相关推荐
爱写代码的森6 小时前
鸿蒙三方库 | harmony-utils之ImageUtil图片保存到本地详解
服务器·华为·harmonyos·鸿蒙·huawei
大耳朵-小飞象8 小时前
电力安全运维的智能密码:BACS如何破解设备全生命周期管理难题,让电网安全“看得见、管得住”?
运维·安全·智慧城市·能耗系统·楼宇智控·未来生活
极客侃科技8 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
HLC++9 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室10 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
白露与泡影11 小时前
Arthas 实战指南:从方法耗时定位到 JVM 变量热修改
服务器·jvm·c#
神奇霸王龙11 小时前
Claude Code屠榜:MiMo与Grok紧追Codex
服务器·网络·人工智能·gpt·ai·ai编程
Web极客码12 小时前
WordPress SEO优化:提升网站排名的13个关键步骤
服务器·seo·wordpress
生活爱好者!12 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
groundhappy13 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python