In this guide we will cover installation of Open vSwitch, Multus and ovs-cni on your arbitrary cluster.
This guide requires you to have your own Kubernetes/OpenShift cluster. If you don't have one and just want to try ovs-cni out, please refer to deployment on local cluster guide.
Open vSwitch must be installed and running on all nodes (unless you do scheduling). OVS is available in repositories of all major distributions.
On CentOS:
yum install openvswitch
systemctl start openvswitch
On Fedora:
dnf install openvswitch
systemctl start openvswitch
If you use other platform, please check Open vSwitch documentation.
You can verify that OVS is properly running.
ovs-vsctl add-br test-br
ovs-vsctl list-br
ovs-vsctl del-br test-br
With OpenShift you can either decide to install Open vSwitch from your repositories as described in previous section or using a DaemonSet.
kubectl apply -f https://raw.githubusercontent.com/kubevirt/ovs-cni/master/examples/openshift-ovs-vsctl.yml
Installation of Multus is currently a little tricky. If you have not installed any network plugin (Calico, Flannel,...) on your cluster, you can follow quick start guide of Multus. However, if you already have a network plugin running, you need to do some extra work. I would recommend you to study the quickstart guide and modify it for your own case. Multus should soon include better documentation of the installation process.
Installation of Multus on OpenShift should be easier. Please note that this is not officially supported by OpenShift, it is only a dev preview with no warranties.
kubectl apply -f https://raw.githubusercontent.com/kubevirt/ovs-cni/master/examples/multus.yml
Installation of ovs-cni can be done simply by deploying a daemon set that will deploy ovs-cni binaries on your nodes. Following command will install the latest image from this repository.
kubectl apply -f https://raw.githubusercontent.com/kubevirt/ovs-cni/master/examples/ovs-cni.yml
You can stop here and play with the cluster on your own or continue to demo that will guide you through definition of kubernetes networks, configuration of Open vSwitch bridges and attachment of pods to them.