【问题标题】:why host-gw of flannel requires direct layer2 connectivity between hosts?为什么 flannel 的 host-gw 需要主机之间的直接 layer2 连接?
【发布时间】:2017-07-25 03:19:18
【问题描述】:

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

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

【问题讨论】:

    标签: kubernetes tunnel flannel


    【解决方案1】:

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

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

    如果hosts在不同的网络,引入L3,涉及routersrouters不知道containers的存在,任何容器包都会被丢弃,无法通信。

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

    【讨论】:

      【解决方案2】:

      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
      

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-01
        • 1970-01-01
        • 2016-09-03
        • 2021-04-17
        • 1970-01-01
        • 1970-01-01
        • 2015-03-23
        相关资源
        最近更新 更多