kubelet failed with kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"
Possible cause
kubelet 1.7.3 not reading config file /etc/systemd/system/kubelet.service.d/10-kubeadm.conf #50748
Solution
If you are using CentOS and encounter difficulty while setting up the master node, verify that your Docker cgroup driver matches the kubelet config:
docker info | grep -i cgroupcat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
If the Docker cgroup driver and the kubelet config don’t match, change the kubelet config to match the Docker cgroup driver. The flag you need to change is --cgroup-driver. If it’s already set, you can update like so:
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
This can be replaced with:
CG=$(sudo docker info 2>/dev/null | sed -n 's/Cgroup Driver: \(.*\)/\1/p')sed -i "s/cgroup-driver=systemd/cgroup-driver=$CG/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
On my environment it only worked the other way around. Setting systemd results always in an error. Here is my current setup
OS: CentOS 7.6.1810 Minikube Version v1.0.0Docker Version 18.06.2-ce
The solution for me was:Check /etc/docker/daemon.json
and change systemd to cgroupfs
{ "exec-opts": ["native.cgroupdriver=cgroupfs"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ]}
Then reload systemctl systemctl daemon-reload
Kill the previous minikub config minikube delete
and start the minikube again minikube start --vm-driver=none
Now check the command line the output should find cgroupfs
in both outputs
docker info | grep -i cgroupcat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
In the end you should see
kubectl is now configured to use "minikube"= Done! Thank you for using minikube!
Simple solution:Start your minikube with the Extra config parameter
--extra-config=kubelet.cgroup-driver=systemd
The complete command to start up minikube is the next line
minikube start --vm-driver=none --extra-config=kubelet.cgroup-driver=systemd
All the best and have fun
To get minicube running on a CentOS 7, I need to start it with a --extra-config=kubelet.cgroup-driver=systemd
as suggested in https://github.com/kubernetes/minikube/issues/2192.