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, NodePort 30500), 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-pvc PVC, 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 /dev moust be mounted inside worker container

registry#

Scripts
Installed automatically when using Install with scripts (local registry on NodePort 30500; 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-pvc created with local-path by default; use --storage-class to 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:

Tip
In case of a insecure registry is used for KNL, add it into cdi CR 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.

install cert-manager

cdtool (optional)#

Scripts
Not installed by scripts.

cdtool is a tool that converts VM disk image into container disk image that KNL could use.