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

错误原因

kubernetes 的文件驱动与 docker 不一致,导致镜像无法启动。

docker info 可以看到驱动方式 Cgroup Driver: systemd

解决方案

统一资源管理,一致使用 systemd 或者 cgroupfs

Linux 上,控制组(CGroup)用于限制分配给进程的资源。

当某个 Linux 系统发行版使用 systemd 作为其初始化系统时,初始化进程会生成并使用一个 root 控制组(cgroup),并充当 cgroup 管理器。

systemdcgroup 集成紧密,并将为每个 systemd 单元分配一个 cgroup。 因此,如果你 systemd 用作初始化系统,同时使用 cgroupfs 驱动,则系统中会存在两个不同的 cgroup 管理器。

同时存在两个 cgroup 管理器将造成系统中针对可用的资源和使用中的资源出现两个视图。某些情况下, 将 kubelet 和容器运行时配置为使用 cgroupfs、但为剩余的进程使用 systemd 的那些节点将在资源压力增大时变得不稳定。

systemd 是选定的初始化系统时,缓解这个不稳定问题的方法是针对 kubelet 和容器运行时将 systemd 用作 cgroup 驱动。

docker修改方法

/etc/docker/daemon.json 文件中,新增 "exec-opts": ["native.cgroupdriver=systemd"]

重启 docker

复制代码
systemctl daemon-reload
systemctl restart docker

kubelet修改方法

/etc/sysconfig/kubelet 文件中,修改 --cgroup-driver= 参数。

例如修改为 --cgroup-driver=systemd

重启 kubelet

复制代码
systemctl daemon-reload
systemctl restart kubelet

推荐阅读

https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/
https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/
https://www.cnblogs.com/sparkdev/p/9523194.html

posted @   牛奔  阅读(333)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2022-03-25 对手价是什么意思
2020-03-25 crontab Do you want to retry the same edit? (y/n)
2020-03-25 在Windows10中运行Unbuntu
2020-03-25 go mod 安装bee 报错
点击右上角即可分享
微信分享提示