I am trying to learn DNS in kubernetes with https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/
I deployed the busybox
kubectl get pods busybox -o wide
NAME READY STATUS RESTARTS AGE IP NODE
busybox 1/1 Running 0 16m 10.200.1.5 worker-1
kubectl exec -ti busybox -- nslookup kubernetes.default
Server: 10.32.0.10
Address 1: 10.32.0.10 kube-dns.kube-system.svc.cluster.local
nslookup: can't resolve 'kubernetes.default'
command terminated with exit code 1
Do I need to modify the /etc/resolv.conf file of the worker-1 node. currently the /etc/resolv.conf content is below
nameserver 169.254.169.254
search c.k8s-project-193906.internal google.internal**
Also the version of the worker-1 lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.1 LTS Release: 18.04 Codename: bionic
Please help me figure out which configuration causes the resolve error. Do I need to change resolve.conf file and based on what?
You have encountered a bug in the latest versions of the busybox docker image. Use the tag busybox:1.28
instead of latest
. This bug link is here:
"Nslookup does not work in latest busybox image"
"1.27/1.28 are working , 1.29/1.29.1 are not"
Here it is failing with the busybox:latest
tag.
$ kubectl run busybox --image busybox:latest --restart=Never --rm -it busybox -- sh
If you don't see a command prompt, try pressing enter.
/ # nslookup kubernetes.default
Server: 10.96.0.10
Address: 10.96.0.10:53
** server can't find kubernetes.default: NXDOMAIN
*** Can't find kubernetes.default: No answer
/ # exit
pod "busybox" deleted
Here's the same command succeeding with the busybox:1.28
tag.
$ kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh
If you don't see a command prompt, try pressing enter.
/ # nslookup kubernetes.default
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: kubernetes.default
Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local
/ # exit
pod "busybox" deleted