它由pod1中netns的eth0网口离开,通过vethxxx进入root netns。
然后被传到cbr0,cbr0使用ARP请求,说“谁拥有这个IP”,从而发现目标地址。
vethyyy说它有这个IP,因此网桥就知道了往哪里转发这个包。
数据包到达vethyyy,跨过管道对,到达pod2的netns。
它由pod1中netns的eth0网口离开,通过vethxxx进入root netns。
然后被传到cbr0,cbr0通过发送ARP请求来找到目标地址。
本节点上没有Pod拥有pod4的IP地址,因此数据包由cbr0 传到 主网络接口 eth0。
数据包的源地址为pod1,目标地址为pod4,它以这种方式离开node1进入电缆。
路由表有每个节点的CIDR块的路由设定,它把数据包路由到CIDR块包含pod4的IP的节点。
因此数据包到达了node2的主网络接口eth0。现在即使pod4不是eth0的IP,数据包也仍然能转发到cbr0,因为节点配置了IP forwarding enabled。节点的路由表寻找任意能匹配pod4 IP的路由。它发现了 cbr0 是这个节点的CIDR块的目标地址。你可以用route -n命令列出该节点的路由表,它会显示cbr0的路由,类型如下:
网桥接收了数据包,发送ARP请求,发现目标IP属于vethyyy。
数据包跨过管道对到达pod4。