All Projects → cni-genie → Cni Genie

cni-genie / Cni Genie

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

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Cni Genie

Kube Spawn
A tool for creating multi-node Kubernetes clusters on a Linux machine using kubeadm & systemd-nspawn. Brought to you by the Kinvolk team.
Stars: ✭ 392 (-3.92%)
Mutual labels:  cni, kubeadm
Terway
CNI plugin for Alibaba Cloud VPC/ENI
Stars: ✭ 312 (-23.53%)
Mutual labels:  cni
GPU-Kubernetes-Guide
How to setup a production-grade Kubernetes GPU cluster on Paperspace in 10 minutes for $10
Stars: ✭ 34 (-91.67%)
Mutual labels:  kubeadm
kucero
KUbernetes CErtificate ROtation
Stars: ✭ 27 (-93.38%)
Mutual labels:  kubeadm
rak8s
Stand up a Raspberry Pi based Kubernetes cluster with Ansible
Stars: ✭ 362 (-11.27%)
Mutual labels:  kubeadm
terraform-provider-kubeadm
A Terraform provider/provisioner for deploying Kubernetes with kubeadm
Stars: ✭ 60 (-85.29%)
Mutual labels:  kubeadm
netarbiter
Multi-site Network Emulation, Kubeadm-installed Kubernetes, NVMe over Fabrics
Stars: ✭ 18 (-95.59%)
Mutual labels:  kubeadm
Kurl
Production-grade, airgapped Kubernetes installer combining upstream k8s with overlays and popular components
Stars: ✭ 391 (-4.17%)
Mutual labels:  kubeadm
Kubekey
Provides a flexible, rapid and convenient way to install Kubernetes only, both Kubernetes and KubeSphere, and related cloud-native add-ons. It is also an efficient tool to scale and upgrade your cluster.
Stars: ✭ 288 (-29.41%)
Mutual labels:  kubeadm
ctnr
rootless runc-based container engine - deprecated in favour of podman
Stars: ✭ 30 (-92.65%)
Mutual labels:  cni
vsphere-kubernetes-drivers-operator
vSphere Kubernetes Driver Operator to simplify and automate the lifecycle management of CSI and CPI for Kubernetes cluster running on vSphere
Stars: ✭ 21 (-94.85%)
Mutual labels:  cni
jenkins-blue
Quickly provision jenkins blue ocean on kubernetes with persistent configuration
Stars: ✭ 20 (-95.1%)
Mutual labels:  kubeadm
cni-benchmarks
A simple program to benchmark various container networking (CNI) plugins.
Stars: ✭ 85 (-79.17%)
Mutual labels:  cni
firecracker-task-driver
nomad task driver that uses firecracker to start micro-vms
Stars: ✭ 85 (-79.17%)
Mutual labels:  cni
Sealos
一条命令离线安装高可用kubernetes,3min装完,700M,100年证书,版本不要太全,生产环境稳如老狗
Stars: ✭ 5,253 (+1187.5%)
Mutual labels:  kubeadm
circuit
Container Network Management
Stars: ✭ 43 (-89.46%)
Mutual labels:  cni
bridget
Simple bridge network for kubernetes
Stars: ✭ 37 (-90.93%)
Mutual labels:  cni
kubernetes-deployment
No description or website provided.
Stars: ✭ 15 (-96.32%)
Mutual labels:  kubeadm
Rak8s
Stand up a Raspberry Pi based Kubernetes cluster with Ansible
Stars: ✭ 354 (-13.24%)
Mutual labels:  kubeadm
Kubenow
Deploy Kubernetes. Now!
Stars: ✭ 285 (-30.15%)
Mutual labels:  kubeadm

CNI-Genie

CNI-Genie enables container orchestrators (Kubernetes, Mesos) to seamlessly connect to the choice of CNI plugins installed on a host, including

  1. 'reference' CNI plugins, e.g., bridge, macvlan, ipvlan, loopback
  2. '3rd-party' CNI plugins, e.g., (Calico, Romana, Weave-net)
  3. 'specialized' CNI plugins, e.g., SR-IOV, DPDK (work-in-progress)
  4. any generic CNI plugin of choice installed on the host

Without CNI-Genie, the orchestrator is bound to only a single CNI plugin. E.g., for the case of Kubernetes, without CNI-Genie, kubelet is bound to only a single CNI plugin passed to kubelet on start. CNI-Genie allows for the co-existance of multiple CNI plugins in runtime.

Build Status Go Report Card

Please feel free to post your feedback, questions on CNI-Genie Slack channel

Demo

Here is a 6 minute demo video that demonstrates 3 scenarios

  1. Assign an IP address to a pod from a particular network solution, e.g., 'Weave-net'
  2. Assign multi-IP addresses to a pod from multiple network solutions, e.g., 1st IP address from 'Weave-net', 2nd IP address from 'Canal'
  3. Assign an IP address to a pod from the "less congested" network solution, e.g., from 'Canal' that is less congested

asciicast

Contributing

Contributing

Code of Conduct

Why we created CNI-Genie?

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

  1. wide range of network offerings, CNI plugins, available to the 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

Watch multiple CNI plugins demo

  1. Multiple NICs per container & per pod. The user can select multiple NICs to be added to a container upon creating them. Each NIC can get an IP address from an existing CNI plugin of choice. This makes the container reachable across multiple networks. Some use-cases from SIG-Network are depicted in the figure below image

Watch multi-NICs per 'container' demo

Watch multi-NICs per 'pod' demo (IP addresses assigned not only to the container, but also to the Pod)

  1. Network Attachment Definition. CNI-Genie supports NPWG Multi-Network Specification v1 style network attachment to pods, where pods can be assigned IP according to network-attachment-definition CRD objects created by user.

  2. The user can leave the CNI plugin selection to CNI-Genie. CNI-Genie watches the Key Performance Indicator (KPI) that is of interest to the user and selects the CNI plugin, accordingly.

    • CNI Genie watches KPI(s) of interest for existing CNI plugins, e.g., occupancy rate, number of subnets, latency, bandwidth

Watch Smart CNI Plugin Selection demo

  1. Default plugin support. Another useful feature from genie. Using this, we can ensure to get ip address(es) for a pod by selecting default set of plugins

  2. Network isolation, i.e.,

    • Dedicated 'physical' network for a tenant
    • Isolated 'logical' networks for different tenants on a shared 'physical'network

    Usecase : Obtaining Pod Ip address from customized subnet

  3. CNI-Genie network policy engine for network level ACLs

  4. Real-time switching between different (physical or logical) networks for a given workload. This allows for

    • Price minimization: dynamically switching workload to a cheaper network as network prices change
    • Maximizing network utilization: dynamically switching workload to the less congested network at a threshold

    image

Note: CNI-Genie itself is NOT a routing solution! It makes a call to CNI plugins that provide routing service

More docs here Getting started, CNI-Genie Feature Set

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].