Chapter 2: Configuring Kubernetes

This section describes some of the steps that are needed to fulfill the requirements for running cOS Stream in a container in Kubernetes as highlighted in the introduction section.

2.1. Additional Components

Several additional components, that might not be available by default in all Kubernetes distributions, are needed to support running pods with multiple network interfaces. For starters, a CNI plugin that supports adding multiple interfaces is needed. cOS Stream supports using "Multus" to provide this functionality:

https://github.com/k8snetworkplumbingwg/multus-cni

To achieve high performance, and to be able to use DPDK, dedicated network devices need to be added to the pod. cOS Stream supports using "SR-IOV Network Device Plugin for Kubernetes" to manage these pools of network device resources that the pods can allocate devices from, which can be found here:

https://github.com/k8snetworkplumbingwg/sriov-network-device-plugin

An appropriate CNI plugin to assign and configure the devices in the pod are needed, a CNI plugin such as the "SR-IOV CNI plugin" which can be found here:

https://github.com/k8snetworkplumbingwg/sriov-cni

An alternative to the previous plugin ("SR-IOV CNI plugin") would be the "host-device" CNI plugin located here:

https://www.cni.dev/plugins/current/main/host-device

There are additional components, that are not required, but can help with some automation, such as the "Network Resources Injector" that can automate adding the resource allocations needed by the networks attached to the pod, to the pod specification.

https://github.com/k8snetworkplumbingwg/network-resources-injector

There may also be other components that are needed to manage the traffic flow to/from the firewall, in Kubernetes or in the surrounding network infrastructure.