I'm not sure it's correct, but if anyone encounters similar issue, you can try again by adding the following parameters to /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS="--container-runtime=remote \
--container-runtime-endpoint=unix:///run/containerd/containerd.sock \
"
I had a similar error while updating the cluster I set up with kubespray. In this case, the file I needed to edit was /etc/kubernetes/kubelet.env
KUBELET_ARGS="--container-runtime=remote \
--container-runtime-endpoint=unix:///run/containerd/containerd.sock \
"
Then I restarted the kubelet service and it started working with containerd instead of docker as I expected.
The answer I gave may not have been able to fully answer the question asked, but if there are those who come here by looking at the title of the question, one of the two methods I suggest will be useful.
Edit After Serve Laurijssen's answer;
According to the kubernetes docs, if you are using kubeadm, you should be aware that this tool stores cri sockets as annotation for each node, so the new cri socket must be annotated for each node.
You can do this using below command for each node you have;
kubectl annotate node $NODE_NAME --overwrite kubeadm.alpha.kubernetes.io/cri-socket=unix:///run/containerd/containerd.sock
Or according to above doc, you can also use kubectl edit node $NODE_NAME
and change cri socket annotation manually.