If you’re using our example Terraform configs, all requirements are satisfied by default.

Infrastructure Requirements for Control Plane

The following infrastructure requirements must be satisfied to successfully provision a Kubernetes cluster using KubeOne:

  • You need the appropriate number of instances dedicated for the control plane
    • You need odd number of instances with a minimum of three instances for the Highly-Available control plane
    • If you decide to use a single-node control plane instead, one instance is enough, however, highly-available control plane is highly advised, especially in the production environments
  • All control plane instances must satisfy the system requirements for a kubeadm cluster
  • For highly-available control plane, a load balancer pointing to the control plane instances (the Kubernetes API server) is needed
    • Load balancer must include all control plane instances and distribute traffic to the TCP port 6443 (default port of the Kubernetes API server)
    • It’s recommended to use a provider’s offering for load balancers if such is available
    • If provider doesn’t offer load balacners, you can create an instance and setup a solution such as HAProxy
    • In our example Terraform configs, we use GoBetween when provider doesn’t offer load balancers. A simple GoBetween setup is a good way to get started, but it might not be suitable for the production environments
  • You must have an SSH key deployed on all control plane instances and SSH configured as described in the Configuring SSH document

Depending on the environment, you may need additional objects, such as VPCs, firewall rules, or images. For natively-supported providers, we recommended checking our example Terraform configs as a reference what objects you should consider creating.

Infrastructure Requirements for Worker Nodes

Instances for worker nodes can be managed in two ways:

  • using Kubermatic machine-controller, which creates and provisions instances, and joins them a cluster, automatically
  • using KubeOne Static Workers, by using the preferred tooling to create instances and then provision them using KubeOne

Using Kubermatic machine-controller is highly advised if your provider is natively supported. Otherwise, KubeOne Static Workers are recommended instead. More details about the machine-controller and the Cluster-API can be found in the Concepts document.

The requirements for the KubeOne Static Workers are similar as for the control plane instances: