k8s coredns无法启动问题
【问题描述】
部署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
更多推荐
所有评论(0)