Getting your hardware ready

Virtualisation or bare metal

One important aspect is to determine whether the clusters should run on an OS directly on the machines, or if it makes sense to add a virtualisation layer.

Running directly on the hardware gives you a 1-1 relationship between the machines and the nodes. This is not always advised if the machines are particularly beefy. Running directly on the hardware will of course have lower latency than when adding a virtualisation layer.

A virtualisation layer can benefit via abstracting the actual hardware, and enable simple zero downtime hardware maintenance.

In case virtualisation is chosen, the below recommendations are what you would run in your VM. For setting up your VM’s we recommend Talos with KubeVirt.

Decision Matrix

Problem domainDescriptionReason for importanceTool recommendation
Kubernetes Node Operating SystemThe Operating System running on each of the hosts that will be part of your Kubernetes clusterChoosing the right OS will be the foundation for building a production-grade Kubernetes cluster
Storage solutionThe underlying storage capabilities which Kubernetes will leverage to provide persistence for stateful workloadsChoosing the right storage solution for your clusters needs is important as there is a lot of balance tradeoffs associated with it, e.g redundancy vs. complexity
Container Runtime (CRI)The software that is responsible for running containersYou need a working container runtime on each node in your cluster, so that the kubelet can launch pods and their containers
Network plugin (CNI)Plugin used for cluster networkingA CNI plugin is required to implement the Kubernetes network modelCilium