I have recently attempted to setup a 3-node Kubernetes cluster. However, when doing so, only one of the two coreDNS services functions correctly.
$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-8445fcc4f-jknn4 0/1 Running 0 15s
coredns-8445fcc4f-q9fhg 1/1 Running 0 15s
...
One waits indefinitely trying to contact the Kubernetes API server, while the other has no issue doing so. Here are the logs of the faulty node.
$ kubectl logs coredns-8445fcc4f-jknn4 -n kube-system
[INFO] plugin/kubernetes: waiting for Kubernetes API before starting server
[INFO] plugin/kubernetes: waiting for Kubernetes API before starting server
[INFO] plugin/ready: Still waiting on: "kubernetes"
[INFO] plugin/kubernetes: waiting for Kubernetes API before starting server
[INFO] plugin/kubernetes: waiting for Kubernetes API before starting server
[INFO] plugin/ready: Still waiting on: "kubernetes"
[INFO] plugin/kubernetes: waiting for Kubernetes API before starting server
[INFO] plugin/kubernetes: waiting for Kubernetes API before starting server
[INFO] plugin/kubernetes: waiting for Kubernetes API before starting server
[INFO] plugin/kubernetes: waiting for Kubernetes API before starting server
[INFO] plugin/kubernetes: waiting for Kubernetes API before starting server
[WARNING] plugin/kubernetes: starting server with unsynced Kubernetes API
The coredns configmap is as follows:
apiVersion: v1
data:
Corefile: |
.:53 {
log
errors
health {
lameduck 5s
}
ready
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
prometheus :9153
forward . /etc/resolv.conf {
max_concurrent 1000
}
cache 30
#loop
reload
loadbalance
}
kind: ConfigMap
metadata:
creationTimestamp: "2024-06-25T20:06:12Z"
name: coredns
namespace: kube-system
resourceVersion: "1261664"
uid: f0837e49-308b-4167-89af-1a182a81aea4
I have verified that the DNS containers have the appropriate permissions and endpoints and that their /etc/resolv.conf
files are correct, as per the instructions in the DNS debugging page on the kubernetes website. I have also commented out the “loop” term from the coreDNS configmap, in line with the advice from this SO answer, but the container remains unable to contact kubernetes.