Kube-OVN的使用过程中,不少小伙伴可能都有这样一个疑问:不同节点可以指定不同的tunnel网卡名吗?答案是肯定的。下面咱们就详细讲讲相关内容。

一、Overlay网卡选择规则

当一个节点上有多块网卡时,Kube-OVN默认会挑与Kubernetes Node IP对应的网卡,来负责容器之间跨节点通信,同时建立相应的隧道。打个比方,这就好比在一个城市里有很多条路,默认情况下,Kube-OVN会选择一条特定的路(对应Kubernetes Node IP的网卡)让容器们“通行”,去和其他节点的容器交流。

二、手动选择其他网卡建立隧道的方法

要是你不想用默认的网卡,而是想用其他网卡来建立容器隧道,有几种方法可以实现。

(一)安装脚本中修改

在安装脚本里,你可以通过修改配置来指定网卡。具体做法是设置IFACE参数,比如:

IFACE=eth1 

这里设置IFACEeth1,就表示选择eth1这块网卡。而且这个选项很灵活,支持用逗号分隔的正则表达式,像ens[a-z0-9]*,eth[a-z0-9]*这种,能满足不同的复杂需求。

(二)安装后修改DaemonSet参数

安装完成之后,如果还想调整网卡选择,也没问题。可以通过修改kube-ovn-cni DaemonSet的参数来实现。具体代码如下:

args: - --iface=eth1 

这样就能把隧道使用的网卡改成eth1了。

(三)使用节点annotation配置

如果每台机器的网卡名各不相同,也没有什么固定规律,这时候可以用节点annotation来进行单独配置。每个节点可以添加ovn.kubernetes.io/tunnel_interface这个annotation,添加后,它会覆盖iface的配置,优先按照annotation的设置来选择网卡。示例代码如下:

kubectl annotate node no1 ovn.kubernetes.io/tunnel_interface=ethx 

上面的代码就是给名为no1的节点设置使用ethx这块网卡作为tunnel网卡。

通过这些方法,我们就能在Kube-OVN中根据实际需求,为不同节点指定不同的tunnel网卡名了。