Eu tentei construir kubernetes usando kubeadm no meu servidor bare-metal com containerd como cri, mas parecia que o coredns falhou ao iniciar após a instalação do cni (weave-net).
Dois contêineres coredns estão agora no estado "CrashLoopBackOff" e os logs deles são:
plugin/forward: no nameservers found
E a descrição de "kubectl describe pod" é a seguinte:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 4m52s (x9 over 13m) default-scheduler 0/1 nodes are available: 1 node(s) had taint {node.kubernetes.io/not-ready: }, that the pod didn't tolerate.
Normal Scheduled 4m7s default-scheduler Successfully assigned kube-system/coredns-58cf647449-8pq7k to k8s
Normal Pulled 3m13s (x4 over 4m6s) kubelet Container image "localhost:5000/coredns:v1.8.4" already present on machine
Normal Created 3m13s (x4 over 4m6s) kubelet Created container coredns
Normal Started 3m13s (x4 over 4m6s) kubelet Started container coredns
Warning Unhealthy 3m13s kubelet Readiness probe failed: Get "http://10.32.0.3:8181/ready": dial tcp 10.32.0.3:8181: connect: connection refused
Warning BackOff 2m54s (x12 over 4m5s) kubelet Back-off restarting failed container
Se eu adicionar algumas configurações como "nameserver 8.8.8.8" em /etc/resolv.conf, os pods coredns começam a ser executados. No entanto, atualmente eu não uso nenhum dns externo, e com o Docker como cri, o coredns funcionou bem, embora não houvesse configurações em /etc/resolv.conf.
É possível lidar com este problema sem configurar algum servidor dns upstream no resolv.conf?
Informação do servidor:
OS: RedHat Enterprise Linux 8.4
cri: containerd 1.4.11
cni: weave-net 1.16
tools: kubeadm, kubectl, kubelet 1.22.1
Eu tentei usar chita como cni também, mas o resultado foi o mesmo.
A causa foi que o coredns tem uma configuração de encaminhamento em seu ConfigMap por padrão. Ele estava tentando encaminhar solicitações para o servidor DNS upstream, embora não haja configuração de DNS em /etc/resolv.conf.
Depois de excluir a seção a seguir, ele foi iniciado e funcionou corretamente.
Eu mudei a seguinte seção no configmap do coredns:
para isso:
E funciona.