What Is Multus CNI?
Multus CNI (Container Network Interface) is a novel approach to managing multiple CNIs in your container network (Kubernetes).
Join the DZone community and get the full member experience.Join For Free
Multus CNI (Container Network Interface) is a novel approach to managing multiple CNIs in your container network (Kubernetes). Based on its name, which means multiple in Latin, Multus is an open-source plug-in, which serves as an additional layer in a container network, to enable multi-interface support.
For example, Virtual Network Functions (VNFs) often depend on connectivity towards multiple network interfaces.
The CNI project itself, backed by the Cloud Native Computing Foundation, defines a minimum specification on what a common interface should look like. The CNI project consists of three primary components:
- Specification: an API that lies between the network plugins and runtimes.
- Plugins: depending on use-cases, they help set up the network.
- Library: CNI specifications as Go implementations, which are then utilized by runtimes.
Each CNI can deliver different results, which makes Multus a wonderful plugin to manage these functionalities and make them work together.
Multus delivers this functionality in form of a contact between the container runtime and a selection of plugins, which are called upon to do the actual net configuration tasks.
- Manage contact between container runtime and plugins.
- No net configuration by itself (dependent on other plugins).
- Uses Flannel to group plugins into delegates.
- Support for reference and third-party plugins.
- Supports SRIOV, DPDK, OVS-DPDK & VPP workloads with cloud-native and NFV-based applications.
Multus Plugin Support and Management
Currently, Multus supports all plugins maintained in the official CNI repository, as well as third-party plugins like Contiv, Cilium, or Calico.
Management of plugins is done by handling plugins as delegates (using Flannel), which can be invoked into a certain sequence, based on either a JSON scheme or CNI configuration.
Flannel is an overlay network in Kubernetes, which configures layer 3 network fabric and therefore satisfies Kubernetes requirements (run by default on many plugins).
Multus then invokes the eth0 interface in the pod for the primary/master plugin, while the rest of the plugins receive netx interfaces (net0, net1, etc.).
Information regarding Multus is not scarce but scattered over several pages. I hope this helps bring the highlights of Multus to light!
Published at DZone with permission of Filip Čúzy. See the original article here.
Opinions expressed by DZone contributors are their own.