美文网首页
关于k8s使用ovs internal port的一些问题

关于k8s使用ovs internal port的一些问题

作者: cloudFans | 来源:发表于2022-06-15 17:41 被阅读0次

openstack 的软路由,虚拟机port已经在用internal port来接入ovs bridge,而且在性能上确实比veth-pair有提升

ovs-internal-port 11.1-11.4Gb/s (1 process) 12.9-13.3Gb/s (4 process)
veth-pair-device 10.8-11.0Gb/s (1 process) 11.8-12.2Gb/s (4 process)

但是k8s获取pod ip的方式就是通过 eth0来获取的,这是一个硬编码。

# kubelet's GetPodIPs function()
nsenter --net=/var/run/netns/ ip -o -4 addr show dev eth0 scope global

这样就要求pod内部必须要有一个eth0网卡。

为了使用internal port,
可以先创建port,接入到br-int,(不同pod使用不同的port 名)

然后将该port设备,放入pod ns内部,并进行重命名。

ip link set ‘port-name’ netns ‘pod-net-ns’

# 为了让 GetPodIPs获取到ip,就必须把这个port 重命名为eth0

ip netns exec ‘pod-net-ns’ ip link set dev ‘port-name’ name eth0 up

那么问题来了,当创建新的port的时候,或者重启openvswitch。
已经配置好的port就会从pod ns内部移出。 这样就会导致网络问题。

如果不这样做,就需要采用两个网卡的方案,用原生port名直接放进去,配置好ip,然后弄一个dummy eth0网卡,也配上ip。
但是这个逻辑又过于复杂,pod内部多网卡也不够简洁。

结论: ovs 对internal 网卡的重命名支持的不够好。

参考:

https://github.com/antrea-io/antrea/issues/1691

相关文章

网友评论

      本文标题:关于k8s使用ovs internal port的一些问题

      本文链接:https://www.haomeiwen.com/subject/hdbxvrtx.html