CNI-Genie demo for "Multiple CNI Plugins"

by karun
GNU/Linux ◆ xterm ◆ bash 3273 views

https://github.com/Huawei-PaaS/CNI-Genie

Right now Kubernetes Kubelet running on a slave node connects to at most one CNI plugin only i.e. either Canal or Romana or Weave. This CNI-Genie feature enbales a pod, scheduled to run on a Node, to pickup over runtime any of the existing CNI plugins running on that particular node.

The current limitation and the reason why Kubernetes cannot do this is that when you are starting the kubelet, you are expected to pass cni-plugin details as a part of ‘kubelet’ process. In this case you have to pick only one of the existing CNI plugins and pass it as a flag to the kubelet. Now we feel that’s in a way too restrictive! What if we want certain set of pods to use Canal networking and other set of pods to use weave networking? This is currently not possible in Kubernetes. For any multi-network support we need changes to be done to the Kubernetes, which leads to backward compatibility issues.

So, CNI-Genie “Multiple CNI Plugins” feature is designed to solve this problem without touching the Kubernetes code!