About different behaviors of Coredns between using Docker and Containerd

I build two bare-metal kubernetes servers which are using two different container runtimes each, Docker and Containerd. Both servers are working well, but I needed to set an extra coredns configuration for only with Containerd while its deployment.

My network environment doesn’t have any DNS servers. By default, there was a forwarding setting in coredns’ configmap so I had to remove it when using Containerd as a cri of my kubernetes server to avoid forwarding.


forward . /etc/resolv.conf {
max_concurrent 1000
}

If I keep the above setting as it is, coredns pods will be on CrashLoopBackOff state with “no nameservers found” log. However, I didn’t need to change the configmap when using Docker though there’s no DNS servers to forward.

Are there any differences affecting coredns behavior between these container runtimes?

Cluster information:

Kubernetes version: 1.22.1
Cloud being used: bare-metail
Installation method: kubeadm
Host OS: RedHat Enterprise Linux 8.4
CNI and version: weave-net 1.16
CRI and version: Docker 20.10.10 / Containerd 1.4.11