Feature-1 : Using Multiple CNI Plugins for Different Pods in a Same Cluster
This feature allows users to choose specific CNI out of available CNI plugins for a pod. This feature can cater use-cases where there is a requirement of more than one CNI to enable multitude of features which are not common among all the providers.
Example-Flannel:
As seen above within a same cluster users can choose CNI's for creating pods. This CNI-Genie feature enables a pod, scheduled to run on a Node, to pickup any of the existing CNI plugins of choice running on that particular node.
Feature-2: Multiple Interfaces per Container with Multiple IP's from Different CNI
This feature enables users to create a container with multiple interfaces and associate multiple IP from more than one CNI. This feature can cater use-cases such as (a) Multi-Tenant architecture where the containers should be be reachable on the networks of all tenants, (b) router/firewall applications to run in a container which needs multiple interfaces.
As seen above the pod has two network interfaces with IP's from Calico and Flannel. In this scenario the pod makes multiple request to procure IP's from Calico and Flannel based on the number of CNI's mentioned in the CNI parameter. Similarly a pod can have multiple interfaces and IP addresses as required.
Feature-3: Custom Resource Definitions and Creation of Logical Networks
Users can create custom network objects using Kubernetes CRD. A specific CNI can be chosen for a logical network.
Pods can be selected on Labels and policy types can be added with the configuration.