First check what kubelet says
journalctl -u kubelet
What worked for me was that in the plugins section in /etc/containerd/config.toml that systemdcgroup had to be true
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
https://kubernetes.io/docs/setup/production-environment/container-runtimes/
systemctl restart containerd after that of course
On another cluster the logs said something like "server http response to https client" so containerd did not end up pulling images.
The solution for that was to turn on TLS skip verify
[plugins."io.containerd.grpc.v1.cri".registry.configs."<MASTERIP>:5000".tls]
insecure_skip_verify = true
and most important setting grpc.mirrors endpoint as http.
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."<MASTERIP>:5000"]
endpoint = ["http://<MASTERIP>:5000"]
So one cluster on k8s V1.26 has the systemdcgroup as true and https enabled and the other on k8s V1.23 has systemdcgroup as true and http enabled. Only after those kubectl get nodes showed a CRI of containerd on both