# Initial Configuration The Kubernetes documentation states: ===== When using Docker, kubeadm will automatically detect the cgroup driver for the kubelet and set it in the /var/lib/kubelet/config.yaml file during runtime. If you are using a different CRI, you must pass your cgroupDriver value to kubeadm init, like so: ``` apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration cgroupDriver: ``` Please mind, that you only have to do that if the cgroup driver of your CRI is not cgroupfs, because that is the default value in the kubelet already. > Note: Since --cgroup-driver flag has been deprecated by kubelet, if you have that in /var/lib/kubelet/kubeadm-flags.env or /etc/default/kubelet(/etc/sysconfig/kubelet for RPMs), please remove it and use the KubeletConfiguration instead (stored in /var/lib/kubelet/config.yaml by default). Restarting the kubelet is required: ``` sudo systemctl daemon-reload sudo systemctl restart kubelet ``` The automatic detection of cgroup driver for other container runtimes like CRI-O and containerd is work in progress. * https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#configure-cgroup-driver-used-by-kubelet-on-control-plane-node ===== Admitidly, I could not figure out how to pass that cgroupDriver value to kubeadm. Using the Arch Wiki, I did find that you can create / edit `/etc/kubernetes/kubelet.env` and add the line `KUBELET_EXTRA_ARGS="--cgroup-driver='systemd'"`. Then continue with the `kubeadm init`. Once the init is done, the line can be removed from the `kubelet.env` file, and the line `cgroupDriver: systemd` can be added to the `/var/lib/kubelet/config.yaml` file. * https://wiki.archlinux.org/index.php/Kubernetes Note! - At the moment, you **WILL** need to add the line to the `/var/lib/kubelet/config.yaml` file of **EACH** node that you add to the cluster which is using a cgroup driver that is not cgroupfs. I know of the following: * containerd * CRI-O