为什么host-gw的法兰绒需要在主机之间直接连接第二层?

时间:2017-07-25 03:19:18

标签: kubernetes tunnel flannel

由于host-gw使用通过远程机器IP到子网的IP路由,它看起来像纯粹的L3网络解决方案。

因此,为什么需要主机之间的直接L2连接?

2 个答案:

答案 0 :(得分:2)

host-gw在主机上添加路由表条目,以便主机知道如何传输容器网络数据包。

这适用于L2,因为它只涉及hostsswitchescontainersswitches不关心IP和路由,hosts知道containers存在,以及如何路由到它们,containers只是发送和接收数据。

如果hosts位于不同的网络,则引入L3,并涉及routersrouters不知道containers存在,任何容器数据包都将丢弃,无法进行通信。

当然,您可以在routers上添加路由表条目,但这已失控flannel

答案 1 :(得分:0)

host-gw在每台主机上添加路由表entires。条目如下:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.110.110.1    0.0.0.0         UG    100    0        0 eth0
10.100.14.0     10.110.110.21   255.255.255.0   UG    0      0        0 eth0
10.100.38.0     0.0.0.0         255.255.255.0   U     0      0        0 docker0
10.110.110.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
169.254.169.254 10.110.110.1    255.255.255.255 UGH   100    0        0 eth0

最重要的项目是Gateway(10.110.110.21)的值。路由表将目标mac地址更改为节点(10.110.110.21)的mac_address,该节点将L2直接连接到10.110.110.22(当前节点)。

如果未连接L2,则无法将数据包传递到节点(下一跳)