卷皮淘客网站怎么做个人网页设计链接
背景
部署过多套k8s集群,发现在其中一套k8s环境中,在Pod内无法访问Service Name,访问了很多次,偶尔又能通,使用Service的IP能正常访问,域名解析的问题基本确定与CoreDNS有关系,于是开始了一系列的排查之路。
使用busybox工具测试网络
- 创建
busybox的Pod 
kubectl apply -f-<<EOF
apiVersion: v1
kind: Pod
metadata:name: busybox
spec:containers:- name: busyboximage: busybox-curl:latestimagePullPolicy: IfNotPresentcommand: ["sleep","3600"]
EOF
 
- 进入
busybox的Pod 
kubectl exec busybox -it -- sh
 
- 查看
nameserver 
/home # cat /etc/resolv.conf
 
- 显示如下
 
nameserver 10.43.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
 
- 修改
nameserver为CoreDNS的Pod的IP,进行逐个测试 - 先查看CoreDNS所有的Pod的IP
 
kubectl get pods --namespace=kube-system -l k8s-app=kube-dns -o wide
 
看到的列表如下
NAME                       READY   STATUS        RESTARTS   AGE     IP              NODE      NOMINATED NODE   READINESS GATES
coredns-95dcf6b48-9vxtq    1/1     Running       0          4h52m   10.42.168.201   xxx1   <none>           <none>
coredns-95dcf6b48-lcqmt    1/1     Running       0          18h     10.42.166.89    xxx2   <none>           <none>
coredns-95dcf6b48-nwp8z    1/1     Running       0          28m     10.42.204.47    xxx3   <none>           <none>
 
- 按如下逐个修改
resolv.conf进入测试 
nameserver 10.42.204.47
#nameserver 10.42.166.89
#nameserver 10.42.168.201
#nameserver 10.43.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
 
- 每次修改一次
nameserver,就使用命令nslookup Service-Name,也可以使用ping或curl命令访问Service域名 
CoreDNS测试结果
经过测试后,发现其中一个Pod无法正常做域名解析,其它Pod均能正常解析Service域名
解决办法
- 删除无法正常工作的Pod
 
kubectl delete pod coredns-95dcf6b48-9vxtq
 
- 立马会重新启动一个新
Pod,查看IP - 放到
busybox的resolv.conf进行测试,工作正常 
参考资料
- K8S中Pod通过域名访问Service失败,提示bad address
 
