OVS-CNI is a totally Open vSwitch CNI plugin, it create the Open vSwitch and use veth to connect the OpenvSwitch and container.
ovs-cni supports the following options in its config and you can see the example config
example/example.conf to learn how to use it.
- controller IP
- target vxlan IP
vtepIPs: [ "10.245.2.2", "10.245.2.3" ]
- bridge name
- Act as a gateway for pods.
- Support SNAT for pods traffic.
- IPAM support
ovs-cni support basic IPAM type such as host-local, you can see
example/example.conf to see how config it.
Besides, ovs-cni provide a new IPAM plugin central-ip, which use the
ETCD to perform centralized IP assignment/management and you can go to
ipam/centralip directory to see more usage about it.
If you are familiar with CNI plugin and know how to use it. you can refer to the following instruction to use it.
Otherwise you can go to
deployment directory to learn how to use it.
Because ovs-cni used the package management tool called
govendor, we have to install the govendor first.
$ go get -u github.com/kardianos/govendor
govendor to download all dependencies
$ cd ~/go/src/github.com/John-Lin/ovs-cni $ govendor sync
build the ovs-cni binary.
and the binary will come out in the
/bin directory and you can find
ovs is the main CNI plugin and the
centralip is the CNI plugin for different IPAM usage.
If you want to use
ETCD to centralizaed manage the IP address, you should also copy the
centralip binary to the CNI directory and modify the config to use it.
$ sudo ip netns add ns1 $ sudo CNI_COMMAND=ADD CNI_CONTAINERID=ns1 CNI_NETNS=/var/run/netns/ns1 CNI_IFNAME=eth2 CNI_PATH=`pwd` ./ovs <example.conf
Use the ovs-cni
Before running the ovs-cni, make sure your system meet the following requirement.
install openvswitch and run it.
download the basic cni binary (local-host) and put they in
Now, we use
ip netns to create a basic network namespace as our example.
$ sudo ip netns add ns1
change directory to bin and type following command to start the ovs-cni.
$ sudo CNI_COMMAND=DEL CNI_CONTAINERID=ns1 CNI_NETNS=/var/run/netns/ns1 CNI_IFNAME=eth2 CNI_PATH=/opt/cni/bin ./ovs < ../example/example.conf $ sudo ip netns exec ns1 ifconfig
$ sudo ip netns del ns1 $ sudo ovs-vsctl del-br br0