1, 报错:
error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd
2, 原因:
kubelet 文件驱动默认 cgroupfs, 而我们安装的 docker 使用的文件驱动是 systemd, 造成不一致, 导致镜像无法启动.
3, 处理:
现在有两种方式, 一种是修改 docker, 另一种是修改 kubelet.
网上大部分说修改 daemon.josn
- # 修改 daemon.JSON
- vi /etc/docker/daemon.JSON
- # 添加如下属性
- "exec-opts": [
- "native.cgroupdriver=systemd"
- ]
这样会导致修改后, docker 无法启动成功, 提示 daemon.JSON 与 / lib/systemd/system/docker.service 中 native.cgroupdriver=systemd 重复存在.
4, 操作修改 docker.service
(1) 修改前查看 docker Cgroup Driver
- shell> docker info | grep Driver
- WARNING: bridge-nf-call-iptables is disabled
- WARNING: bridge-nf-call-ip6tables is disabled
- Storage Driver: overlay2
- Logging Driver: JSON-file
- Cgroup Driver: systemd
- ...
(2) 修改 docker.service
shell> vi /lib/systemd/system/docker.service
找到
--exec-opt native.cgroupdriver=systemd
修改为:
--exec-opt native.cgroupdriver=cgroupfs
(3) 重启 docker
- shell> systemctl daemon-reload
- shell> systemctl restart docker
(4) 重启 kubelet
shell> systemctl restart kubelet
(5) 查看 k8s 集群, node 是否正常
- shell> kubectl get node
- NAME STATUS ROLES AGE VERSION
- node140 Ready master 126d v1.17.0
来源: http://www.bubuko.com/infodetail-3509054.html