【问题描述】

       部署k8s时,发现coredns容器起不来,需将/etc/containerd/config.toml中SystemdCgroup的参数改成false才能启动。

【环境版本】

k8s版本: v1.25.16

containerd版本: v1.7.18-3.1.el9

CNI插件:calico v3.24.6

系统版本:Kylin-Server-10-SP2-Release-Build09-20210524-arm64

内核版本:4.19.90-24.4.v2101.ky10.aarch64

【排查过程】

1、检查k8s pod服务

kubectl get nodes

kubectl get pods -A

2、查看coredns容器详细信息,提示创建容器失败

kubectl describe pod coredns-565d847f94-bzhd4 -n kube-system

3、检查coredns容器日志,未有信息

[root@master ~]# cat /boot/config-`uname -r`  |grep CGROUP_FILES
# CONFIG_CGROUP_FILES is not set

4、将containerd配置中SystemdCgroup: true参数改成false,即让k8s用cgroupfs驱动来启动容器。

cp /etc/containerd/config.toml  /etc/containerd/config.toml.bak

sed -i 's/SystemdCgroup = true/SystemdCgroup = false/g'  /etc/containerd/config.toml

systemctl  restart  containerd.service

5、删除coredns容器,等容器自动创建后,coredns可恢复正常

【解决方法】

方法一:修改/etc/containerd/config.toml配置中SystemdCgroup: true参数改成false, 并重启containerd.service服务。

方法二:降级containerd版本。因为containerd.io-1.7.18-3.1.el9版本,使用的glibc版本较高(2.32),建议降低containerd.io到1.6.33-3.1.el7版本。 降级containerd版本后,coredns和其它pod都能正常启动。

【参考链接】

为什么kubernetes优先使用systemd作为Cgroup Driver? 为什么 Kubernetes 优先使用 Systemd 做为 Cgroup Driver?-CSDN博客

官网关于systemd cgroup驱动介绍      容器运行时 | Kubernetes

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐