无论哪种模式,想要让容器使用OVN都必须在所有容器宿主机上安装Open vSwitch。
Overlay模式
使用OVN的”overlay”模式要求的Open vSwitch最小版本是2.5。
初始化中心节点
在OVN的架构中,需要有一个中心节点用来存储网络定义。在需要部署的机器中选择一台作为中心节点,IP地址是$CENTRAL_IP。
通过以下命令启动ovsdb-server,监听在TCP的6640端口:
ovs-appctl -t ovsdb-server ovsdb-server/add-remote ptcp:6640
启动ovn-northd守候进程,这个进程用来将Docker存储在OVN_Northbound中的网络定义同步到OVN_Southbound中:
/usr/share/openvswitch/scripts/ovn-ctl start_northd
初始化各节点(仅需执行一次)
以下过程在每个你需要启动容器的机器上仅执行一次(除非OVS数据库清空后,任何其他清空执行多次都会带来问题。)
下面的命令中,
LOCAL_IP指宿主机可以被访问的IP地址,OVS将通过这个IP与其他宿主机通讯。
LOCALIP指宿主机可以被访问的IP地址,OVS将通过这个IP与其他宿主机通讯。ENCAP_TYPE指通道类型。目前可选项是”geneve” 和 “stt”。(注意你的宿主机内核必须支持你选择的
ENCAP_TYPE类型。这两种类型都默认包含在了Open vSwitch的内核模块中。如果你的Open vSwitch内核模块来自于上游Linux发行版,那么geneve最低支持的内核版本是3.18。发行版中的内核模块不支持stt。你可以通过lsmod | grep
ENCAPTYPE类型。这两种类型都默认包含在了OpenvSwitch的内核模块中。如果你的OpenvSwitch内核模块来自于上游Linux发行版,那么geneve最低支持的内核版本是3.18。发行版中的内核模块不支持stt。你可以通过lsmod∣grepENCAP_TYPE来确认是否支持相应的模式。)
ovs-vsctl set Open_vSwitch . external_ids:ovn-remote=“tcp:$CENTRAL_IP:6640” \
external_ids:ovn-encap-ip= L O C A L I P e x t e r n a l i d s : o v n − e n c a p − t y p e = " LOCAL_IP external_ids:ovn-encap-type=" LOCAL