K8S初始化master节点不成功kubelet.service failed(cgroup driver配置问题)
一、背景
安装k8s集群,初始化master节点一直不成功。
二、排查
查看日志
ps -ef | grep kube-apiserver
[root@zjy01 home]# ps -ef | grep kube-apiserver
root 85663 4637 0 12:41 pts/1 00:00:00 grep --color=auto kube-apiserver
[root@zjy01 home]# systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node AgentLoaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)Drop-In: /usr/lib/systemd/system/kubelet.service.d└─10-kubeadm.confActive: activating (auto-restart) (Result: exit-code) since Mon 2025-06-30 12:42:02 CST; 5s agoDocs: https://kubernetes.io/docs/Process: 85670 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (code=exited, status=1/FAILURE)Main PID: 85670 (code=exited, status=1/FAILURE)Jun 30 12:42:02 zjy01 systemd[1]: Unit kubelet.service entered failed state.
Jun 30 12:42:02 zjy01 systemd[1]: kubelet.service failed.
journalctl -u kubelet -f
Jun 30 12:43:05 zjy01 kubelet[86386]: E0630 12:43:05.825806 86386 server.go:294] "Failed to run kubelet" err="failed to run Kubelet: misconfiguration: kubelet cgroup driver: \"systemd\" is different from docker cgroup driver: \"cgroupfs\""
Jun 30 12:43:05 zjy01 systemd[1]: Unit kubelet.service entered failed state.
Jun 30 12:43:05 zjy01 systemd[1]: kubelet.service failed.
发现是说kubelet的cgroup driver是systemd和docker的cgroupfs不一致。
三、解决
3.1 修改docker的cgroup driver为systemd
编辑 /etc/docker/daemon.json
文件,添加"exec-opts": ["native.cgroupdriver=systemd"],
如下:
{"exec-opts": ["native.cgroupdriver=systemd"],"data-root": "/home/docker"
}
修改后,重启docker
systemctl daemon-reload
systemctl restart docker
查看修改结果:OK
[root@wangdy home]# docker info | grep -i cgroupCgroup Driver: systemdCgroup Version: 1
查看kubelet的cgroup driver,发现两者已经保持一致
[root@wangdy home]# cat /var/lib/kubelet/config.yaml | grep cgroupDriver
cgroupDriver: systemd
3.2 查看结果
1)kubectl已经Active: active (running)
[root@wangdy home]# systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node AgentLoaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)Drop-In: /usr/lib/systemd/system/kubelet.service.d└─10-kubeadm.confActive: active (running) since Mon 2025-06-30 12:50:17 CST; 8min agoDocs: https://kubernetes.io/docs/Main PID: 93176 (kubelet)Tasks: 63Memory: 69.7MCGroup: /system.slice/kubelet.service└─93176 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config...
2)pods状态已经正常
[root@zjy01 home]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
etcd-zjy01 1/1 Running 0 8m53s
kube-apiserver-zjy01 1/1 Running 0 8m47s
kube-controller-manager-zjy01 1/1 Running 0 8m51s
kube-scheduler-zjy01 1/1 Running 0 8m54s
[root@zjy01 home]#