0

我正在通过kubernetes 艰难地学习更多关于如何使用它的信息。我正在openstack vm上实现它。每个单独的 kubernetes worker 本地的 pod 网络需要能够通过静态路由相互通信。为了使用除了在 openstack 中配置的主 IP 地址之外的 IP 地址设置静态路由,我必须allowed_address_pairs在 openstack 中使用。如果我尝试在 eth0 上进行路由,则此方法有效,但如果我尝试在 CNI 接口 (cnio0) 上进行路由,则会失败。

我将静态路由配置为配置为工作节点主接口别名的辅助 IP 地址之间的测试。我在proc中将ip forwarding设置为1。在 openstack 中,我配置了allowed_address_pairs使用辅助 IP 地址及其关联的 MAC 地址。

此路由配置有效。

然后我启用了 cni 并启动了一些 pod,它们触发 kubelet 在每个主机上创建一个 cnio0 接口并将 POD CIDR IP 应用于这些接口。我也添加了这些 IP 和它们各自的 MAC 地址allowed_address_pairs,但这些接口不路由。我无法从每个单独的盒子中访问 IP。

我希望能够从节点 1 的 cni0 IP 地址成功 ping 到节点 2 的 cni0 IP 地址。

从节点 1 的 cnio0 接口 ping 到节点 2 的 cnio0 接口时,我观察了 tcpdump 中主机之间的通信。在节点 1 上,我可以看到流量正在流出。在节点 2 上,我可以看到正在接收和发回的流量,但我从未在节点 1 上看到返回数据包。

allowed_address_pairs这与我在没有配置in openstack 的情况下测试它们之间的静态路由时在别名接口上看到的行为完全相同。

如何让 cnio0 接口使用,allowed_address_pairs以便它们可以在彼此之间路由?

4

1 回答 1

1

我刚刚发现将 allowed_address_pairs 的 mac_address 设置为主接口(在 openstack 中配置的那个)的 mac 地址而不是 cnio0 接口可以使一切正常。

于 2019-08-02T15:32:57.103 回答