如何验证coreDNS是否正常工作?

在安装完Kubernetes cluster环境后,如何验证coreDNS是否在正常工作?这是一项很重要的工作,将会影响将来在容器中部署的服务能否被正常调用。

我们可以通过创建一个busybox 的pod,再在busybox里去解析服务名的方式来验证coreDNS是否正常工作。

具体可参考kubernetes官方文档《Debugging DNS Resolution》

busybox的yaml 文件

svw@master:~$ cat busybox.yaml
apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - name: busybox
    image: busybox:1.28
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
  restartPolicy: Always


创建Busybox pod

svw@master:~$ kubectl create -f busybox.yaml
pod/busybox created
svw@master:~$ kubectl get pods busybox
NAME      READY   STATUS              RESTARTS   AGE
busybox   0/1     ContainerCreating   0          12s
svw@master:~$ kubectl get pods busybox
NAME      READY   STATUS    RESTARTS   AGE
busybox   1/1     Running   0          31s

busybox的resolv.conf内容

svw@master:~$ kubectl exec busybox cat /etc/resolv.conf
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local csvw.com
options ndots:5
svw@master:~$ kubectl get pods --namespace=kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-576cbf47c7-6b6dj         1/1     Running   143        16d
coredns-576cbf47c7-vgr5g         1/1     Running   144        16d
etcd-master                      1/1     Running   10         16d
kube-apiserver-master            1/1     Running   11         16d
kube-controller-manager-master   1/1     Running   12         16d
kube-flannel-ds-amd64-24tsk      1/1     Running   12         16d
kube-flannel-ds-amd64-lxsr7      1/1     Running   8          14d
kube-proxy-ck8x6                 1/1     Running   10         16d
kube-proxy-slp66                 1/1     Running   5          14d
kube-scheduler-master            1/1     Running   10         16d

在busybox 的pod里解析kubernetes.default 的IP地址

svw@master:~$ kubectl exec -ti busybox -- 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

在busybox 的pod里解析外部IP地址 ,按照前文coreDNS的配置,是通过pod所在node上的/etc/resolv.conf 来代理解析的

参见我的博客《用kubeadm安装Kubernetes 1.12.3 cluster 详解》 3(6)

svw@master:~$ kubectl exec -ti busybox -- nslookup www.sina.com.cn
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      www.sina.com.cn
Address 1: 202.102.94.124

在busybox 的pod里解析php guestbook application 中创建的服务

svw@master:~$ kubectl get service
NAME           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
kubernetes     ClusterIP   10.96.0.1        <none>        443/TCP    16d
redis-master   ClusterIP   10.100.206.174   <none>        6379/TCP   17h
redis-slave    ClusterIP   10.98.90.234     <none>        6379/TCP   17h
svw@master:~$ kubectl exec -ti busybox -- nslookup redis-master
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      redis-master
Address 1: 10.100.206.174 redis-master.default.svc.cluster.local
svw@master:~$ kubectl exec -ti busybox -- nslookup redis-slave
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      redis-slave
Address 1: 10.98.90.234 redis-slave.default.svc.cluster.local

通过以上例子可见,coredns工作正常。在我们创建的Kubernetes 1.12.3 cluster中,coredns既可以管理新生成的service的域名,又可以解析出外部域名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

alpha xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值