卷皮淘客网站怎么做个人网页设计链接
背景
部署过多套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
