这是indexloc提供的服务,不要输入任何密码
Skip to content

CNI-Genie for choosing pod network of your choice during deployment time. Supported pod networks - Calico, Flannel, Romana, Weave

License

Notifications You must be signed in to change notification settings

thandayuthapani/CNI-Genie

 
 

Repository files navigation

CNI-Genie

CNI-Genie enables container orchestrators (Kubernetes, Mesos) to seamlessly connect to choice of CNI plugins (Calico, Canal, Romana, Weave) configured on a Node. Without CNI-Genie, kubelet is bound to a signle CNI plugin passed to kubelet on start. CNI-Genie allows for multiple CNI plugins being available to kubelet simultaneously.

Build Status

Note: this repo is still in inital development phase, so expect cracking sounds at times! :)

Also please note that this initial proto-type is tested only with Kubernetes build. Mesos will be coming soon...

Demo

Here is a 6 minute demo video that demonstrates 3 scenarios

  1. Assign IP to pod from a particular network solution eg; Get IP from "Weave"
  2. Assign multi-IP to pod from multiple network solutions eg: Get 1 IP from "Weave" 2nd IP from "Canal"
  3. Assign IP to pod from IDEAL network solution eg: Canal has less load, CNI-Genie assigns IP to pod from Canal

asciicast

Contributing

We always welcome contributions to our little experiment. Feel free to reach out to these folks:

karun.chennuri@huawei.com

kaveh.shafiee@huawei.com

Why we created CNI-Genie?

CNI Genie is an add-on to Kuberenets open-source project and is designed to provide the following features:

  1. Multiple CNI plugins are available to users in runtime. This figure shows Kubernetes CNI Plugin landscape before and after CNI-Genie image

    • 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. The user can manually select one (or more) CNI plugin(s) to be added to containers upon creating them. Multiple IP addresses can be injected into a single container making the container reachable across multiple networks image

    • 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, is 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. The user can leave the CNI plugin selection to CNI-Genie. CNI-Genie maintains a list of Key Performance Indicators (KPIs) to smartly select one (or more) CNI plugin

    • CNI Genie maintains a list of KPIs for every CNI plugin including occupancy rate, number of subnets, network latency, available network bandwidth
    • CNI Genie maintains a list of KPIs for every container, e.g., network bandwidth utilization
  4. CNI-Genie network policy engine for network level ACLs

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

About

CNI-Genie for choosing pod network of your choice during deployment time. Supported pod networks - Calico, Flannel, Romana, Weave

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 92.1%
  • Shell 6.3%
  • Makefile 1.3%
  • Dockerfile 0.3%