Kubernetes 使用cni时如何在openstack中配置允许的地址对

Kubernetes 使用cni时如何在openstack中配置允许的地址对,kubernetes,openstack,cni,Kubernetes,Openstack,Cni,我正在学习更多关于如何使用它的知识。我正在openstack虚拟机上实现它。每个kubernetes工人的本地pod网络需要能够通过静态路由相互通信。为了使用openstack中配置的主IP地址以外的IP地址设置静态路由,我必须在openstack中使用允许的\u地址\u对。如果我尝试在eth0上进行路由,这是可行的,但是如果我尝试在CNI接口(cnio0)上进行路由,它将失败 我将静态路由配置为辅助IP地址之间的测试,辅助IP地址配置为工作节点主接口的别名。我在进程中将ip转发设置为1。在op

我正在学习更多关于如何使用它的知识。我正在openstack虚拟机上实现它。每个kubernetes工人的本地pod网络需要能够通过静态路由相互通信。为了使用openstack中配置的主IP地址以外的IP地址设置静态路由,我必须在openstack中使用
允许的\u地址\u对
。如果我尝试在eth0上进行路由,这是可行的,但是如果我尝试在CNI接口(cnio0)上进行路由,它将失败

我将静态路由配置为辅助IP地址之间的测试,辅助IP地址配置为工作节点主接口的别名。我在进程中将ip转发设置为1。在openstack中,我使用辅助IP地址及其关联的mac地址配置了
允许的\u地址\u对

这种路由配置有效

然后,我启用了cni并启动了几个POD,触发kubelet在每个主机上创建cnio0接口,并将POD CIDR IP应用于这些接口。我还将这些IP及其各自的mac地址添加到
允许的\u地址\u对中
,但这些接口不路由。我无法从每个单独的盒子中访问IP

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

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

这与我在测试别名接口之间的静态路由时在openstack中未配置
allowed\u address\u对时在别名接口上看到的行为完全相同


如何让cnio0接口与
允许的\u地址\u对一起工作
以便它们可以在彼此之间路由?

我刚刚发现,将允许的\u地址\u对的mac地址设置为主接口(在openstack中配置的那个)的mac地址,而不是cnio0接口,可以让一切正常工作