0

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

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

4

2 回答 2

2

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

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

如果hosts在不同的网络,则引入 L3,并routers参与其中。routers不知道containers存在,并且任何容器数据包都会被丢弃,从而无法通信。

当然,您可以在 上添加路由表条目routers,但这是无法控制的flannel

于 2017-07-25T03:45:32.397 回答
0

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

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

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

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

于 2017-08-31T12:05:03.937 回答