"CNI-Genie" a multi-networking plugin for Kubernetes

451 views
Skip to first unread message

karu...@gmail.com

unread,
Mar 28, 2017, 12:25:49 PM3/28/17
to kubernetes-sig-network

Hello everyone


I am seeing that some good amount of discussion is happening around multi-networking, hence thought this is the right time to introduce "CNI-Genie" plugin for Kubernetes. Here is the GitHub repo with working source code and documentation.


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


This is something that we‘ve tested successfully with multi-vendor networking solutions running on a single host that too without making any changes to existing Kubernetes code.


CNI Genie is designed to provide the following features:

1.      Multiple CNI plugins are available to users in runtime. The user can offer any of the available CNI plugins to containers upon creating them

    • User-story: based on ‘performance’ requirements, ‘application’ requirements, “workload placement” requirements, the user could be interested to use different CNI plugins for different application groups
    • Different CNI plugins are different in terms of need for port-mapping, NAT, tunneling, interrupting host ports/interfaces

2.      Multiple IP addresses can be injected into a single container making the container reachable across multiple networks

    • User-story: in a serverless platform the “Request Dispatcher” container that receives requests from customers of all different tenants needs to be able to pass the request to the right tenant. As a result, it should be reachable on the networks of all tenants
    • User-story: many Telecom vendors are adopting container technology. For a router/firewall application to run in a container, it needs to have multiple interfaces

3.      Upon creating a pod, the user can manually select the logical network, or multiple logical networks, that the pod should be added to

4.      If upon creating a pod no logical network is included in the yaml configuration, CNI Genie will automatically select one of the available CNI plugins

    • CNI Genie maintains a list of KPIs for all available CNI plugins. Examples of such KPIs are occupancy rate, number of subnets, response times

5.      CNI Genie stores records of requests made to each CNI plugin for logging and auditing purposes and it can generate reports upon request

6.      Network policy - TBD

7.      Network access control - TBD

Note: CNI Genie is NOT a routing solution! It gets IP addresses from various CNSs 


Right now CNI-Genie has been developed to addresses only Pt. 1 of the above User stories. But we are working on it to cover rest of the points in near future.


Please let me know if anyone is also working in the same direction as we are, if yes can we collaborate on our efforts? 

I would appreciate feedback comments on this.

hemantgu...@gmail.com

unread,
Nov 27, 2018, 2:49:20 AM11/27/18
to kubernetes-sig-network
Hi,

Any good documents for Moving on with Multiple pod network with CNI -Genie so that I can create two pod network: 10.20.0.0/24 and 10.10.0.0/28

Yuval Lifshitz

unread,
Nov 27, 2018, 9:25:24 AM11/27/18
to kubernetes-sig-network
Hi,
I used weave and flannel together, with different subnets.

Yuval Lifshitz

unread,
Nov 27, 2018, 9:38:22 AM11/27/18
to kubernetes-sig-network
Hi Karun,
One of the usecases would be Kubevirt (running Virtual Machine payloads in k8s) - BTW, this was already integrated :-)
Please see here on how to use Genie CNI in order to provide multiple networks (including L2 networks) to a Virtual Machine running in Kubevirt.

Sushanth Shetty

unread,
Jan 23, 2019, 12:17:16 AM1/23/19
to kubernetes-sig-network
Thanks Yuval for your reply to this query. You can refer below link for cutomized subnet usage and also feel free to contact us if any more queries/use cases
Reply all
Reply to author
Forward
0 new messages