
#打卡不停更# calico Vxlan 跨节点通信 原创
安装 calico vxlan
部署模板地址:https://projectcalico.docs.tigera.io/manifests/calico-vxlan.yaml
修改如下参数:
将 CrossSubnet 改为 vxlan
需要确认 backend 是否是 vxlan
部署
我们可以确认calico vxlan 模式并未通过 BGP 来进行维护,这一点和 IPIP 有着本质的区别。
当前环境
pod1 10.244.103.68 node2 192.168.0.82
pod3 10.244.42.71 node1 192.168.0.81
pod1 及其对应节点的cali网卡和路由表
pod3 及其对应节点的 cali 网卡和路由表
数据流向图
pod1 ping pod3
pod1.cap
具体细节
pod1-vxlan.cap
具体细节
通过主机路由查找网关 和 对应的网卡出口
然后 通过发送 arp 请求,找到对端网关的mac 地址,也就是对应 pod3 节点的 vxlan.calico 网卡
pod1-node.cap
具体细节,从 ip -d link show 可以看到本端的local ip。然后通过fdb表可以看到对端calico.vxlan的网卡所在的节点,即为remote ip。
local ip remote ip vni id dstport 这些原素就可以指导封装VxLAN的数据包了。
pod3.cap
细节和上边保持一致即可
pod3-vxlan.cap
![[…/image/Pasted image 20220517220839.png]]
pod3-node.cap
结论
通过报文的抓取,我们验证了 calico vxlan 跨节点通信的过程
![[…/image/Pasted image 20220517213725.png]]
我们发现 pod1 所在节点上发现一条很关键的路由表
pod1 10.244.103.68 node2 192.168.0.82
pod3 10.244.42.71 node1 192.168.0.81
在去往 10.244.42.64/26 这个网段的路由,都需要经过 vxlan.calico
网卡,我们要去往的 pod3 10.244.42.71
就需要经过 vxlan 的封装。
到达对端 pod3 所在节点解封装,然后查询本地路由到目的 pod。
