Contiv-VPP is an alternative to have use-space data plane for K3s. And I tried to install Contiv-VPP on K3s with default configuration. When I finished installation, realized Pods on K3s failed to create Pod networking interface with Contiv-VPP CNI. After some investigation on Contiv-VPP along with source code. I realized containerd
as default container runtime of K3s was not supported by Contiv-VPP due to naming of network namespace is different between containerd
and docker
(here and here). So docker
is required as container runtime if you would like to enable Contiv-VPP as CNI. By default, fannel
is used as CNI plugin on K3s. K3s provides a confiugration during installation: --flannel-backend=none
. So the command to install K3s should be:
$ curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server --flannel-backend=none" sh -s - --docker
Since Contiv-VPP uses DPDK as its underlying library for process packets from NICs. Needs to make sure hugepages is enabled on host. The following command could be used to enable it (need to restart K3s):
$ sudo sysctl -w vm.nr_hugepages=512