Open g-rabah opened 3 years ago
CNI is an interface: it allows any kind of network to have a “plugin” to connect things up for a “runtime”.
Suggest viewing one of the “intro to CNI” videos, eg https://m.youtube.com/watch?v=YjjrQiJOyME
Multus is a meta-plugin: it acts as a plugin, and reacts to calls by calling other plugins. It exists primarily to get round limitations in one runtime, Kubernetes.
As Bryan mentioned above, CNI is the specification that defines how to create network interface in container, using 'CNI plugin'. Multus is the one of CNI plugin, which implements CNI specification.
One big feature of the multus cni is 'delegate many CNI plugin', by invoking other CNI plugin from multus. Currently most container runtimes, such as podman/kubernetes, support only one CNI plugin. So user cannot create the container which has multiple interfaces. Multus CNI makes it by delegating CNI plugin.
It is similar to the home power outlet. Let's imagine one outlet at home. We can plug-in only one device to the socket (because one outlet support one device), not more than two. If you have a power tap, you can connect two or more devices through power tap. Multus can be 'power tap' of CNI plugin.
I think multus
is more like a cascading CNI plugin for building multi container interfaces, and it is implemented on a generic interface (or spec) which is CNI
.
CNI is an interface that defines responsibly for setting up the network between the host and a pod. Multus is a CNI multiplexor that allows the use of multiple cni plugins. This is most used in Kubernetes and is supported by multiple other schedulers (Mesos, Nomad) and multiple container runtimes (not Docker). Speaking which of Nomad, they have a nice way of defining the CNI in jobs
Hi everyone,
Can someone please help me understand the diff between Multus and CNI ?
Bests