我正在寻找处理 OVSIntPort 和 netplan 的方法。我只想配置地址、MTU,其他 OVS 内容将保留在 ovs-vsctl 中,这些内容将保存在 OVSDB 中。由于网络管理器替换了之前在 OVSDB 上创建的 OVSIntPort,因此如果它之前存在,我必须重新定义它(包括它的标签)(通过在 ifcfg 脚本上使用 OVS_OPTIONS)。这种行为不会发生在 systemd-networkd 上。我应该只为这个 OVSIntPort 转移到 systemd-networkd 吗?
此致,
答案1
我不确定我是否正确理解了这个问题,但如果你使用 Netplan v0.100(目前在 Ubuntu Groovy 和 Focal 中提出),你可以使用 Netplan 的原生 Open vSwitch 支持来创建 OVS 端口/接口。
例如(OVS Bridge:ovs0):
network:
version: 2
renderer: networkd
openvswitch:
ports: # to create OVS internal patch ports
- [patch0-1, patch1-0]
ethernets:
eth0: {} # physical ethernet interface
bridges:
ovs0:
addresses: [192.168.0.10/24]
interfaces: [patch0-1, eth0]
mtu: 9000
openvswitch: {} # this is an OVS port
ovs-vsctl
Netplan 使用 systemd-networkd 渲染器,可以在后台为您创建 OVS 补丁端口、桥接、绑定和 (vlan) 假桥接。然后,您可以根据需要通过单独的ovs-vsctl
命令修改 OVSDB。
如需进一步参考,请查看 netplan/OVS 文档和下面的 OVS 示例: https://netplan.io/reference/#common-properties-for-physical-device-types https://github.com/CanonicalLtd/netplan/blob/master/examples/openvswitch.yaml
答案2
我最近偶然遇到了同样的情况。多亏了 Lukas Maerdian 的回答,我才明白他的意思。所以最后我的 netplan 配置如下:
network:
ethernets:
real_ethernet_port0: {some regular parameters}
real_ethernet_port1: {some regular parameters}
bridges:
your_ovs_int_port:
openvswitch: {}
dhcp4: false
addresses: [192.168.1.1/24]
gateway4: 192.168.1.1
and so on...
你看,关键是要把它嵌套在桥梁:类别(不是以太网!)并且必须有这个openvswitch:{}行。顺便说一下,其中可以有其他不同的参数,请关注 Lukas 的链接。作者的意思是我们已经通过 ovs-vsctl 配置了虚拟交换机,并自动创建了 ovs 内部端口。唯一要做的就是通过 netplan 配置地址,因为如果您通过 netplan 配置地址,系统会在重启后清除它是否配置或者IP 地址添加shell 中的命令。