工作节点NotReady处理
情况一
参考链接 《Docker中的Cgroup Driver:Cgroupfs 与 Systemd》
异常信息如下
failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgroupfs"
原因分析
文件驱动默认由systemd
改成cgroupfs
, 而我们安装的docker
使用的文件驱动是systemd
, 造成不一致, 导致镜像无法启动
查看Docker信息
docker info
Cgroup Driver: systemd
或者
Cgroup Driver: cgroupfs
现在有两种方式, 一种是修改docker
, 另一种是修改kubelet
。
启动kubelet
service kubelet start
查看kubelet日志
journalctl -f -u kubelet
解决方式一:修改docker
修改/etc/docker/daemon.json,加入以下内容:
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
重启docker
systemctl restart docker
systemctl status docker
解决方式二:修改kubelet
DOCKER_CGROUPS=$(docker info | grep 'Cgroup'| cut -f4 -d' ')
echo $DOCKER_CGROUPS
cat >/etc/sysconfig/kubelet<<EOF
KUBELET_EXTRA_ARGS="--cgroup-driver=$DOCKER_CGROUPS --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1"
EOF
重启docker配置和kubelet
systemctl daemon-reload
systemctl enable kubelet && systemctl restart kubelet
情况二
查看NotReady节点,发现flannel并没有在/etc下创建/etc/cni/net.d/10-flannel.conflist
文件,而其它工作节点都有此文件
# 10-flannel.conflist
{
"name": "cbr0",
"plugins": [
{
"type": "flannel",
"delegate": {
"hairpinMode": true,
"isDefaultGateway": true
}
},
{
"type": "portmap",
"capabilities": {
"portMappings": true
}
}
]
}
从其它工作节点将该文件拷贝过来,并重启kubelet
systemctl restart kubelet