High-performance Network I/O with Single Root I/O Virtualization (SR-IOV) orchestrated through Kubernetes*
Overview
Kubernetes is typically used to run workloads of production web applications at massive scale. While NFV control plane functions are similar to the usual Kubernetes workloads, data plane functions different greatly and require special attention to extend the capabilities of Kubernetes to support NFV use cases. The Kubernetes Intel SR-IOV network device plug-in extends the capabilities of Kubernetes to address high-performance network I/O by discovering and advertising SR-IOV network virtual functions (VFs) in a Kubernetes host.
Features
- Handles SR-IOV capable/not-capable devices (NICs and Accelerators alike)
- Supports devices with both Kernel and userspace (UIO and VFIO) drivers
- Allows resource grouping using "Selector"
- User configurable resourceName
- Detects Kubelet restarts and auto-re-register
- Detects Link status (for Linux network devices) and updates associated VFs health accordingly
- Extensible to support new device types with minimal effort if not already supported
Supported SR-IOV NICs
The following NICs were tested with this implementation. However, other SR-IOV capable NICs should work as well.
- Intel® Ethernet Controller X710 Series 4x10G - PF driver: v2.4.6 - VF driver: v3.5.6
please refer to Intel download center for installing latest Intel Ethernet Controller-X710-Series drivers
- Intel® 82599ES 10 Gigabit Ethernet Controller
- PF driver: v4.4.0-k
- VF driver: v3.2.2-k
please refer to Intel download center for installing latest Intel-® 82599ES 10 Gigabit Ethernet drivers
- Mellanox ConnectX®-4 Lx EN Adapter
- Mellanox ConnectX®-5 Adapter
Network card drivers are available as a part of the various linux distributions and upstream. To download the latest Mellanox NIC drivers, click here.
Installation and Usage
- Creating SR-IOV Virtual Functions
- Build SR-IOV CNI
- Build and run SR-IOV network device plugin
- Install one compatible CNI meta plugin