【kubeadm初始化报错】failed to run Kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"
复现场景
环境
- 系统:Centos7
- kubernetes:1.18.5
- docker:19.03.9
复现步骤
1、通过 yum
或 rpm
安装 kubelet kubectl kubeadm,并 systemctl enable --now kubelet
2、安装 docker
并配置 (kubernetes官方推荐docker等使用systemd作为cgroupdriver)
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
],
"data-root": "/data/docker"
}
EOF
3、kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.18.5
提示 [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
,到最后初始化失败,提示kubelet 健康状态不正常
4、查看 kubelet 状态 systemctl status kubelet
,提示error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgroupfs"
解决方案
1、只修改docker
docker 不再设置native.cgroupdriver=systemd
,或将 systemd
改成 cgroupfs
,重启docker systemctl daemon-reload && systemctl restart docker
检查 docker info|grep "Cgroup Driver"
是否输出 Cgroup Driver: cgroupfs
kubelet 默认cgroupdriver是cgroupfs,但是它竟然推荐用systemd,interesting!
2、分别修改docker与控制平台的kubelet为systemd 【官方推荐】
鉴于用的k8s版本有点新,本文只记录当前1.18.x的修改方式,其他版本请参详官方:
重置未初始化成功的kubeadm配置
echo y|kubead reset
修改docker,只需在/etc/docker/daemon.json
中,添加"exec-opts": ["native.cgroupdriver=systemd"]
即可,本文最初的docker配置可供参考。
修改kubelet:
cat > /var/lib/kubelet/config.yaml <<EOF
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
EOF
重启docker 与 kubelet:
systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet
检查 docker info|grep "Cgroup Driver"
是否输出 Cgroup Driver: systemd
再次执行kubeadm init时,我发现kubeadm将cgroupDriver的配置到了
/var/lib/kubelet/kubeadm-flags.env
后续检查/var/lib/kubelet/config.yaml
发现,里边已经被新的配置替换掉了;
另外,在配置期间,我这里一直出现kubelet健康状态不正常的问题,重置了kubeadm,删除了执行用户的家目录下的~/.kube,之后正常了
ps: 有趣的是,kubelet自启动后,会周期性重启,还是会提示docker的cgroup driver是与kubelet不同,等kubeadm初始化成功就不这样了。
本文参考自官方文档,版本1.18.5
最新文章
- SQLMAP使用笔记
- Seafile内部云盘
- ssh连接linux服务器只显示-bash-4.1#不显示路径解决方法
- python 拷贝文件夹下所有的文件到指定文件夹(不包括目录)
- 【转】在Eclipse中配置tomcat
- html圆角提示效果
- C++ 学习笔记(一)
- Asp.net动态调用WebService
- Android -- Support包特性
- 《征服c指针》学习笔记-----统计文本单词数目的程序word_count
- javascript 关闭窗口,弹出新窗口并带有确认关闭对话框解决办法
- document.ready()的用法
- Mybatis中的CDATA标签
- MySQL8.0 优化
- C++Primer笔记之复制控制
- 微信小程序获取腾讯经纬度,得到具体地址
- oracle hint inline materialize
- 【ecshop】使用sql 清除测试数据
- 安装redis环境
- 史上最严管控,Android P非SDK接口管控特性解读及适配