k8s,coredns內部測試node節點上的pod的calico是否正常的一個小技巧
最近由於master整個掛掉,導致相關一些基礎服務癱掉,修復中測試有些節點網路又出現不的情況
正常的啟動相關一些服務後,測試一些節點,比較費勁,還有進入pod,以及還有可能涉及名稱空間操作
這裡可以這樣,當然前提你的coredns是正常的,而且我用的版本是
版本資訊 Calico Version v3.1.3 calico/node:v3.1.3 calico/cni:v3.1.3 calico/kube-controllers:v3.1.3 包 hyperkube(KUBE_VERSION="1.10.1") caliconode.v3.1.0.tar cni.v3.1.3.tar kube-controllers.v3.1.3.tar nginx.1.13.12-alpine.tar node-problem-detector_v0.4.1.tar pause3.0.tar docker 18.03.0-ce
系統是centos7.2或7.9
核心為3.10
//檢視coredns pod
[root@etcd2 system]# kubectl get pod -n kube-system | grep core coredns-5847d5f4b5-lnlld 1/1 Running 0 2d coredns-5847d5f4b5-x4rqm 1/1 Running 0 1d
coredns的叢集訪問地址
[root@etcd2 system]# kubectl get svc -o wide -n kube-system | grep dns NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kube-dns ClusterIP 172.17.0.2 <none> 53/UDP,53/TCP 3y k8s-app=kube-dns
我這裡用三個pod分散在三個節點上
[root@etcd2 system]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE a-node-0 1/1 Running 0 22h 172.17.31.39 ht21.node b-node-0 1/1 Running 54 1d 172.17.31.54 ht22.node c-node-1 1/1 Running 109 1d 172.17.246.232 ht23.node
進入coredns pod裡面進行,相當於方向操作,而不是進入某個pod去ping 比如:eureka服務,config服務或其他的pod ip
[root@etcd2 system]# kubectl exec -it coredns-5847d5f4b5-x4rqm -n kube-system -- /bin/sh / # ping 172.17.31.39 PING 172.17.31.39 (172.17.31.39): 56 data bytes 64 bytes from 172.17.31.39: seq=0 ttl=62 time=0.506 ms 64 bytes from 172.17.31.39: seq=1 ttl=62 time=0.451 ms
[root@etcd2 system]# kubectl exec -it coredns-5847d5f4b5-x4rqm -n kube-system -- /bin/sh
/ # ping 172.17.31.54
PING 172.17.31.54 (172.17.31.54): 56 data bytes
64 bytes from 172.17.31.54: seq=0 ttl=62 time=0.409 ms
64 bytes from 172.17.31.54: seq=1 ttl=62 time=0.406 ms
/ # ping 172.17.246.232
PING 172.17.246.232 (172.17.246.232): 56 data bytes
64 bytes from 172.17.246.232: seq=0 ttl=62 time=0.331 ms
64 bytes from 172.17.246.232: seq=1 ttl=62 time=0.237 ms
/etc # cat resolv.conf nameserver 10.11.12.1 nameserver 10.11.12.2
/ # ping www.baidu.com
PING www.baidu.com (180.101.49.12): 56 data bytes
64 bytes from 180.101.49.12: seq=0 ttl=51 time=27.266 ms
^C
//只要從這裡基本就可以斷定某個節點有問題,我們只要ping pod ip即可,如果不通,基本該節點的calico是有問題的
有時候你用 calicoctl也發現不了異常情況。而且有些節點可能就是好的,如果你的機器多的情況下,反而比較奏效這種方法
否則你進入某個pod裡面去ping 可能就是目的地達到不的提示。