问题描述
KylinOSv10安装K8S时Coredns容器报错。使用同一套利用kubeadm工具的安装脚本,相同的参数变量,在操作系统版本不同的两组服务器上安装K8S后,其中一组出现coredns容器持续重启的问题。(报错:applying cgroup configuration for process caused “No such device or address”)
coredns容器的具体报错如下:
Message: failed to create shim task: OCI runtime create failed: container_linux.go:318: starting container process caused "process_linux.go:281: applying cgroup configuration for process caused \"No such device or address\"": unknown
相关环境信息
-
操作系统
- 使用相同的kubeadm脚本准备了3套K8S集群,运行安装脚本后,K8S各节点均运行正常。
- 集群1安装的是 Kylin Linux Advanced Server V10 (Sun) 操作系统。
- 集群2、集群3安装的是 Kylin Linux Advanced Server V10 (Sword) 操作系统。
-
3套集群均安装了相同版本的软件,具体如下:
- docker-scan-plugin-0.23.0-3.el7.x86_64
- docker-ce-rootless-extras-20.10.23-3.el7.x86_64
- docker-ce-20.10.21-3.el7.x86_64
- docker-runc-1.0.0.rc3-103.ky10.x86_64
- docker-ce-cli-20.10.21-3.el7.x86_64
- kubeadm-1.25.5-0.x86_64
- kubernetes-cni-1.1.1-0.x86_64
- kubectl-1.25.5-0.x86_64
- kubelet-1.25.5-0.x86_64
集群 | 服务器IP | K8S版本 | 操作系统 | 操作系统安装介质 |
---|---|---|---|---|
集群1 | 10.20.3.49 10.20.3.50 10.20.3.51 |
kubelet-1.25.5-0.x86_64 | Kylin Linux Advanced Server V10 (Sun) | Kylin-Server-10-8.2-Release-Build09-20211104-X86_64.iso |
集群2 | 10.20.3.13 10.20.3.14 10.20.3.15 |
kubelet-1.25.5-0.x86_64 | Kylin Linux Advanced Server V10 (Sword) | Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso |
集群3 | 10.20.3.11 10.20.3.16 10.20.3.17 10.20.3.18 |
kubelet-1.25.5-0.x86_64 | Kylin Linux Advanced Server V10 (Sword) | Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso |
环境检查
使用以下命令对集群的相关配置进行检查:
[root@localhost ~]# docker info | grep -E "Cgroup Driver|Runtimes"
Cgroup Driver: systemd
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
[root@localhost ~]# cat /var/lib/kubelet/config.yaml |grep cgroupDriver
cgroupDriver: systemd
[root@localhost ~]# cat /etc/docker/daemon.json |grep native.cgroupdriver
"exec-opts": ["native.cgroupdriver=systemd"],
解决
将docker和kubelet二者使用的cgroup-driver配置改为相同的值,即可解决问题。
结果验证
当二者的cgroup-driver看似相同时
集群 | Docker的cgroup-driver | kubelet使用的cgroup-driver | 操作系统版本 | coredns运行情况 | 操作及对应结果 |
---|---|---|---|---|---|
集群1 | systemd | systemd | Kylin Linux Advanced Server V10 (Sun) | 正常 | 重建pod正常 |
集群2 | systemd | systemd | Kylin Linux Advanced Server V10 (Sword) | 持续重启 | 重建pod、重启docker、重启kubelet后,coredns容器仍然报错,持续重启 |
集群3 | systemd | systemd | Kylin Linux Advanced Server V10 (Sword) | 持续重启 | 重建pod、重启docker、重启kubelet后,coredns容器仍然报错,持续重启 |
当修改二者的cgroup-driver配置后
集群 | Docker的cgroup-driver | kubelet使用的cgroup-driver | 操作系统版本 | coredns运行情况 | 操作及对应结果 |
---|---|---|---|---|---|
集群1 | systemd | systemd | Kylin Linux Advanced Server V10 (Sun) | 正常 | 首次部署,即正常。 |
集群2 | cgroupfs | systemd | Kylin Linux Advanced Server V10 (Sword) | 正常 | 修改docker配置重启生效后,重建coredns容器,此时正常。 |
集群3 | cgroupfs | cgroupfs | Kylin Linux Advanced Server V10 (Sword) | 正常 | 修改部署参数统一为cgroupfs后,首次部署即正常。 |
进一步得出的结论
Kylin Linux Advanced Server V10 (Sword)版本的麒麟操作系统有bug:安装docker后,其native.cgroupdriver值为systemd时,并不代表cgroupfs。
注意:已测试麒麟Linux V10 SP3中没有此bug。
相关截图
文章来源:https://www.toymoban.com/news/detail-765171.html
文章来源地址https://www.toymoban.com/news/detail-765171.html
到了这里,关于KylinOSv10安装K8S时Coredns容器报错的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!