- OVN docker插件
- Workflow
- Initialize ovn bridge
- Create network
- Create container
- Delete container
- Delete network
- 参考文档
- Workflow
OVN docker插件
# start dockerdocker daemon --cluster-store=consul://127.0.0.1:8500 \--cluster-advertise=$HOST_IP:0# start north/usr/share/openvswitch/scripts/ovn-ctl start_northdovn-nbctl set-connection ptcp:6641ovn-sbctl set-connection ptcp:6642# start southovs-vsctl set Open_vSwitch . \external_ids:ovn-remote="tcp:$CENTRAL_IP:6642" \external_ids:ovn-nb="tcp:$CENTRAL_IP:6641" \external_ids:ovn-encap-ip=$LOCAL_IP \external_ids:ovn-encap-type="$ENCAP_TYPE"/usr/share/openvswitch/scripts/ovn-ctl start_controller# start openvswitch pluginpip install FlaskPYTHONPATH=$OVS_PYTHON_LIBS_PATH ovn-docker-overlay-driver --detach# create docker networkdocker network create -d openvswitch --subnet=192.168.1.0/24 foo
Workflow
Initialize ovn bridge
ovs-vsctl --timeout=5 -vconsole:off -- --may-exist add-br br-int \-- set bridge br-int external_ids:bridge-id=br-int \other-config:disable-in-band=true fail-mode=secureovs-vsctl --timeout=5 -vconsole:off -- get Open_vSwitch . external_ids:ovn-nbovs-vsctl --timeout=5 -vconsole:off -- set open_vswitch . external_ids:ovn-bridge=br-int
Create network
nid="red-net"ovn-nbctl ls-add $nid -- set Logical_Switch $nid external_ids:subnet=10.160.0.0/24 external_ids:gateway_ip=10.160.0.1ovn-nbctl show
Create container
nid="red-net"eid="blue-container"ip="10.160.0.2"mac="02:38:e1:a2:28:38"ovn-nbctl lsp-add $nid $eidovn-nbctl lsp-set-addresses $eid "$mac $ip"ip netns add $eidip link add veth_inside type veth peer name veth_outsideip link set dev veth_inside address $macip link set veth_inside netns $eidip link set veth_outside upip netns exec $eid ip addr add 10.160.0.2/24 dev veth_insideip netns exec $eid ip route add default via 10.160.0.1ovs-vsctl --timeout=5 -vconsole:off \-- add-port br-int veth_outside \-- set interface veth_outside \external_ids:attached-mac=$mac \external_ids:iface-id=$eid \external_ids:vm-id=$eid \external_ids:iface-status=active
Get endpoint status
ovn-nbctl --if-exists get Logical_Switch_Port $eid addresses
Delete container
ip netns del $eidip link delete veth_outsideovs-vsctl --if-exists del-port veth_outsideovn-nbctl lsp-del $eid
Delete network
ovn-nbctl ls-del red-net
参考文档
- http://docs.openvswitch.org/en/latest/howto/docker/
- http://dockone.io/article/1200
