Overview#
Following requirements must be met before installing KNL.
Components installed by scripts (k3s)#
When using Install with scripts (sudo ./scripts/setup-k3s.sh --install), the following are installed automatically:
- Host / cluster: k3s, local image registry (
registry:2, NodePort30500), Helm, k9s, IPv6 forwarding - KNL prerequisites: cert-manager, KubeVirt (+ required feature gates and macvtap binding), CDI, Multus, containernetworking CNI plugins, k8slan
- KNL: operator in
knl-system,knl-pvcPVC,knlcli
Still required: the host must be Linux/x86-64 with sufficient CPU, memory, and storage for your lab nodes; nested virtualization may be needed for VM-based node types; a storage class that supports PVCs is required (k3s local-path is used by default). See the sections below for details on each component when installing manually.
k8s cluster#
KNL should work with all types of k8s cluster: bare-metal, VM or container based. the compute resource (cpu, memory and storage) requirement mostly depends on overall requirement of lab nodes running, these resource requirement could be specified in the Lab CR.
Certain KNL node types like vsr, magc requires CPU pinning and hugepage memory to performan optimally, which requires certain linux kernel settings on the k8s worker node. consult correspoding product documentation for details.
Scripts
Host and cluster constraints in this section still apply when using Install with scripts (OS, nested virtualization, admin access, etc.).
Note 0
Currently KNL only support Linux/x86-64 k8s worker
Note 1
Admin access to the cluster is required to install KNL
Note 2
In case of VM based cluster (VM as k8s worker or container as worker inside VM), to support VM type node with decent performance, nested virtualization must be enabled on each VM. see instruction here
Note 3
In case of container based cluster (like kind), to support macvtap CNI plugin that KNL/k8slan uses, host/devmoust be mounted inside worker container
registry#
Scripts
Installed automatically when using Install with scripts (local registry on NodePort30500; omit with--skip-registry).
Varies KNL node types require container image to run, and some of them like Nokia vSIM don’t have offical registry, it is important to have access to a image registry access that new image could be uploaded.
Tip
A guide to setup private registry could be found here
k8s cluster storage#
Scripts
Installed automatically when using Install with scripts (knl-pvccreated withlocal-pathby default; use--storage-classto change).
A cluster wide k8s StorageClass provisioner that supports filesystem volume like NFS is required.
kubevirt#
Scripts
Installed and configured automatically when using Install with scripts.
KNL uses kubevirt to support all VM node types like vSIM, VSR ..etc. so following kubevirt related software must be installed in the cluster:
- install kubevirt: 1.6.3+
- install kubevirt Containerized Data Importer: 1.63.1+
Tip
In case of a insecure registry is used for KNL, add it intocdiCR as described here
Following kubevirt feature gates must be enabled:
- Sidecar
- NetworkBindingPlugins
- HostDevices
- Root
- CpuManager
Register kubevirt macvtap binding plugin as described here
multus#
Scripts
Installed automatically when using Install with scripts.
Install multus as described here
k8slan#
Scripts
Installed automatically when using Install with scripts (IPv6 forwarding is enabled on the host).
k8slan provide unerlying connectity between lab nodes, read the Prerequisites before install.
verion v0.0.7+
CNI plugin#
Scripts
Installed automatically when using Install with scripts.
Following standard CNI plugin are required:
Tip
install containernetworking cni plugins including bridge could be done via CNI installer
Cert manager#
Scripts
Installed automatically when using Install with scripts.
cdtool (optional)#
Scripts
Not installed by scripts.
cdtool is a tool that converts VM disk image into container disk image that KNL could use.