hello云胜

技术与生活

0%

跨界点pod无法ping通排查

这两个pod不通

image-20210603090707772

先用calicoctl查看容器A的workloadEndpoint:

1
calicoctl get workloadendpoint -o yaml

image-20210603092232495

可以看到pod的网卡情况

hfs-pro-101:ip:1x.xxx.130.69,mac: 网卡:cali51ddf6e78e5, node:node1

进入容器,查看容器路由

image-20210603095142729

去node1上看cali网卡的mac

image-20210603095212260

使用calico后,在容器内只有一条默认路由,所有的报文都通过169.254.1.1送出。但是这个IP是RFC约定保留的无效IP,报文怎么还能送出去呢?
秘密就是容器内的arp记录,在容器A内记录的169.254.1.1的mac地址是:
node上的caliXX网卡的mac。
node上的caliXX网卡和容器内的eth0网卡,是一对veth设备。veth网卡的特性是,向eth0写入的报文,会通过caliXX流出。
在容器A中向eth0写入的报文,它目的mac是caliXX网卡的mac,当报文经caliXX流出时,就 进入到了node的协议栈中,开始在node的网络空间中流转。