k8s,coredns内部测试node节点上的pod的calico是否正常的一个小技巧
阅读原文时间:2023年07月08日阅读:1

最近由于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 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 //检查和其他pod是否正常联通
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的情况,很省力的就可以断定某个节点有问题,我们只要ping pod ip即可,如果不通,基本该节点的calico是有问题的
   有时候你用 calicoctl也发现不了异常情况。而且有些节点可能就是好的,如果你的机器多的情况下,反而比较奏效这种方法
   否则你进入某个pod里面去ping 可能就是目的地达到不的提示。