其实,我们从CoreDNS这个命名就不难理解,这个组件的功能应该是用来做DNS解析的。但是,具体它是如何工作的呢?
下面我们就来一探究竟。
从下面命令的查询结果来看,我们发现 kube-dns 服务的集群IP为10.96.0.10
# kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 21d
然后,我们分别进入两个Pod内部,看看他的nameserver的IP地址是什么:
第一个Pod:
# kubectl exec -ti nginx-9dfb46bc4-vf89k -n slb -- bash
root@nginx-9dfb46bc4-vf89k:/# cat /etc/resolv.conf
nameserver 10.96.0.10
search slb.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
第二个Pod:
# kubectl exec -ti ingress-nginx-controller-57c7885b48-bd9b9 -n ingress-nginx -- bash
cat /etc/resolv.conf
nameserver 10.96.0.10
search ingress-nginx.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
从上面的查询结果,我们验证了,kube-dns服务的集群IP,也就是Pod的DNS服务器的IP,并通过这个IP地址进行地址的解析。