kubernetes中的pod不能訪問域名問題排查


一、進入pod可以訪問IP,不能訪問域名

bash-5.0# ping www.baidu.com
ping: bad address 'www.baidu.com

二、進入目標pod容器,查看/etc/resolv.conf

bash-5.0# cat /etc/resolv.conf 
nameserver 10.96.0.10
search hl95-notary.svc.master69.kubernetes.blockchain.hl95.com svc.master69.kubernetes.blockchain.hl95.com master69.kubernetes.blockchain.hl95.com hlqxt
options ndots:5

可以看到dns服務器IP為0.96.0.10,我們查看下系統的coredns pod容器信息

[root@redis-03 kubernetes]# kubectl get pods -n kube-system -o wide |grep coredns
coredns-66bff467f8-6w5j5            1/1     Running   0          3d20h   10.244.3.9     redis-03.hlqxt   <none>           <none>
coredns-66bff467f8-h2zgp            1/1     Running   0          3d20h   10.244.4.9     redis-02.hlqxt   <none>           <none>

可以看到兩個coredns pod位於兩個node節點上,並且狀態是running,正常

我們再進一步查看dns service信息

[root@redis-03 kubernetes]# kubectl get svc -n kube-system -o wide
NAME       TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE    SELECTOR
kube-dns   ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   5d2h   k8s-app=kube-dns

kube-dns服務的IP正是10.96.0.10,這樣我們知道了pod是通過kube-dns 服務來解析域名的,現在的問題是POD無法與kube-dns通信呢?還是coredns本身域名解析有問題呢,我們需要進一步來確認kube-dns 服務后端正確綁定了coredns容器,我們查看endpoint來確認

[root@redis-03 kubernetes]# kubectl get endpoints -n kube-system -o wide|grep kube-dns
kube-dns                  10.244.3.9:53,10.244.4.9:53,10.244.3.9:9153 + 3 more...   5d2h
[root@redis-03 kubernetes]# 

可以看到kube-dns后端正確的綁定了兩個coredns pod的IP。

我們再將目標pod中的nameserver 的ip地址改為coredns pod的IP地址,繞過kube-dns服務,直接與coredns pod通信

bash-5.0# cat /etc/resolv.conf 
nameserver 10.244.3.9
#nameserver 10.96.0.10
search hl95-notary.svc.master69.kubernetes.blockchain.hl95.com svc.master69.kubernetes.blockchain.hl95.com master69.kubernetes.blockchain.hl95.com hlqxt
options ndots:5

10.244.3.9:為coredns pod其中一個的IP

再執行ping 

bash-5.0# ping www.baidu.com
PING www.baidu.com (110.242.68.3): 56 data bytes
64 bytes from 110.242.68.3: seq=0 ttl=50 time=9.281 ms
64 bytes from 110.242.68.3: seq=1 ttl=50 time=9.296 ms
64 bytes from 110.242.68.3: seq=2 ttl=50 time=9.203 ms
64 bytes from 110.242.68.3: seq=3 ttl=50 time=9.233 ms
64 bytes from 110.242.68.3: seq=4 ttl=50 time=9.241 ms
64 bytes from 110.242.68.3: seq=5 ttl=50 time=9.259 ms
64 bytes from 110.242.68.3: seq=6 ttl=50 time=9.270 ms
64 bytes from 110.242.68.3: seq=7 ttl=50 time=9.342 ms

可以看到域名解析成功

說明coredns pod工作是正常的,應用目標pod也是工作正常的問題出在kube-dns服務與coredns節點通信上,服務與pod之間通信是通過kube-proxy實現

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM