Flow CNI Lab Guide: Federated Environment on Nutanix NKP
Introduction
Flow Container Network Interface (Flow CNI) provides unified networking for VMs and containers within Nutanix environments. By leveraging overlay-based networking and Kubernetes network integration, Flow CNI extends Nutanix Virtual Private Cloud (VPC) capabilities directly into Kubernetes. This allows both VMs and containers to coexist and communicate within a shared overlay networking domain.
This integration simplifies network management for advanced use cases, such as supporting multiple VPCs within a single Kubernetes cluster or spanning a single VPC across multiple clusters.
In a Federated Environment—which involves interconnecting VMs and Kubernetes clusters—Flow CNI orchestrates the networks connecting your traditional VMs and your modern Kubernetes pods. To achieve this, you configure the Kubernetes workload clusters in the same VPCs that contain your VMs.
Note
Flow CNI exclusively supports Kubernetes clusters that are created and managed by the Nutanix Kubernetes Platform (NKP).
Capabilities of Flow CNI
Flow CNI delivers a rich set of networking features for hybrid deployments:
- Overlay Networking: Supports overlay networking for Kubernetes pods using Geneve encapsulation.
- Comprehensive Traffic Routing: Supports both east-west and north-south traffic routing within and across cluster nodes.
- Service Communication: Facilitates reliable pod-to-service communication utilizing cluster IP addresses and native load balancing.
- External Access: Enables secure external access through SNAT, egress IP addresses, and egress services.
- Control Plane Federation: Supports the federation of VM and Kubernetes control planes via a global control plane that spans across clusters.
- Hybrid Environment Integration: Seamlessly supports environments where VMs and Kubernetes containers share the same VPCs, enabling mutual service discovery and network access between VMs and Kubernetes services.
The following is the lab flow:
stateDiagram-v2
direction LR
state DeployNKPk8sMGT {
[*] --> CreateBootStrapCluster
CreateBootStrapCluster --> CreateNKPCluster
CreateNKPCluster --> DeployKommander
DeployKommander --> [*]
}
state DeployNKPFlowCNI {
[*] --> DeployNKPFlowCNICluster
DeployNKPFlowCNICluster --> ConfigureFlowCNI_PC
ConfigureFlowCNI_PC --> [*]
}
state DeployApp {
[*] --> DeployAPP_VM
DeployAPP_VM --> DeployAPP_CTR
DeployAPP_CTR --> [*]
}
PrepWorkstation --> DeployJumpHost
DeployJumpHost --> DeployNKPk8sMGT
DeployNKPk8sMGT --> DeployNKPFlowCNI
DeployNKPFlowCNI --> DeployApp
DeployApp --> TestNetworking
TestNetworking --> [*]