【发布时间】:2019-12-11 05:50:09
【问题描述】:
我正在通过kubernetes the hard way 了解有关如何使用它的更多信息。我正在openstack vm上实现它。每个单独的 kubernetes worker 本地的 pod 网络需要能够通过静态路由相互通信。为了使用除了在 openstack 中配置的主 IP 地址之外的 IP 地址设置静态路由,我必须在 openstack 中使用allowed_address_pairs。如果我尝试在 eth0 上进行路由,则此方法有效,但如果我尝试在 CNI 接口 (cnio0) 上进行路由,则会失败。
我将静态路由配置为在配置为工作节点主接口别名的辅助 IP 地址之间的测试。我在proc中将ip forwarding设置为1。在 openstack 中,我使用辅助 IP 地址及其关联的 MAC 地址配置了allowed_address_pairs。
此路由配置有效。
然后我启用了 cni 并启动了几个 pod,这些 pod 触发 kubelet 在每个主机上创建一个 cnio0 接口并将 POD CIDR IP 应用于这些接口。我也将这些 IP 和它们各自的 mac 地址添加到 allowed_address_pairs,但这些接口不路由。我无法从每个单独的盒子访问 IP。
我希望能够从节点 1 的 cni0 IP 地址成功 ping 到节点 2 的 cni0 IP 地址。
我在 tcpdump 中观察了主机之间的通信,同时从节点 1 的 cnio0 接口 ping 到节点 2 的 cnio0 接口。在节点 1 上,我可以看到流量正在流出。在节点 2 上,我可以看到正在接收和发回的流量,但在节点 1 上我从未看到返回数据包。
这与我在未在 openstack 中配置 allowed_address_pairs 的情况下测试它们之间的静态路由时在别名接口上看到的行为完全相同。
如何让 cnio0 接口与 allowed_address_pairs 一起工作,以便它们可以在彼此之间路由?
【问题讨论】:
标签: kubernetes openstack cni