解决升级docker导致的k8s崩溃问题

最近由于安装harbor升级了docker,然后发现k8s集群就启动不了。

查看kubelet日志发现:直接连不上apiserver了,直接connection refused

然后尝试启动apiserver容器直接报错:Error response from daemon: unknown or invalid runtime name: docker-runc

原因: 这是因为升级docker带来的兼容性问题

解决办法:

运行:

grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g'

system restart docker

但是这样重启docker以后, kubelet日志还是会有报错:

failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgroupfs"

很明显是docker升级以后带来cgroup驱动造成的问题

然后编辑/etc/docker/daemon.json文件,加入下面一行:

"exec-opts": ["native.cgroupdriver=systemd"]

并编辑/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf文件,加入下面一行

Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"

备注:如果10-kubeadm.conf文件不是上面的路径,就用下面的命令查找一下,再重新编辑:

find / -name 10-kubeadm.conf

然后运行

systemctl daemon-reload

systemctl restart kubelet

问题解决:

相关推荐
daidaidaiyu19 小时前
JMS, ActiveMQ 学习一则
java
优雅的造轮狮19 小时前
WSL2 Docker Desktop配置优化及迁移D盘指南
运维·docker·容器
weixin_7042660519 小时前
SpringBoot全注解开发指南
java·spring boot·mybatis
星如雨グッ!(๑•̀ㅂ•́)و✧19 小时前
Webflux fromXXX对比
java
mizuhokaga19 小时前
Linux内网集群基于Docker 安装 Chat2DB
linux·运维·docker
西柚00120 小时前
Ubuntu22.04.5 + Docker + MySQL 5.7
mysql·docker·容器
competes20 小时前
学生需求 交易累计积分,积分兑换奖品
java·大数据·开发语言·人工智能·java-ee
小羊子说20 小时前
Android系统中 socketpair 的源码解读与应用分析小结
android·java
splage20 小时前
Java进阶——IO 流
java·开发语言·python
always_TT20 小时前
从Python_Java转学C语言需要注意什么?
java·c语言·python