By default, control plane nodes run on Hetzner Cloud VMs. HCloud uses dynamic provisioning i.e. when CAPI needs a new control plane node (during a rolling update, version upgrade, or MachineHealthCheck replacement), it creates a new VM. If HCloud cannot fulfill that request due to regional capacity constraints, the operation stalls. For upgrades this means the rollout blocks mid-flight; for failure recovery it means the cluster stays degraded until capacity returns. Baremetal control planes eliminate this entirely. The server is never returned to a pool, updates roll across existing inventory and MachineHealthCheck remediates on the same host.
In order to use baremetal control planes set controlPlane.class to hetznerbaremetal in your cluster topology.
Before creating a cluster with a baremetal control plane, ensure your HetznerBareMetalHost resources are registered and labeled appropriately.
See also: Adding baremetal servers to your cluster
Each HetznerBareMetalHost should have labels that identify it. We recommend using:
For example:
Create your cluster with controlPlane.class as hetznerbaremetal and provide a host selector to match your HetznerBareMetalHost resources:
The controlPlaneHostSelectorBareMetal variable determines which HetznerBareMetalHost resources are used for the control plane.
Select hosts that have all the specified labels:
For more flexible selection use matchExpressions . For example, you can select hosts for control-plane from a pool of hosts:
This is useful when you want the control plane to be provisioned on any server from a specific pool rather than requiring all labels to match exactly.
If controlPlaneHostSelectorBareMetal is not set, an available HetznerBareMetalHost will be chosen randomly. Setting a host selector is recommended in production to ensure control plane nodes are provisioned on the intended servers.
The controlPlane.class field determines the control plane type:
| Value | Description |
|---|---|
| (not set) | Uses HCloud by default |
hcloud | Explicitly uses HCloud VMs |
hetznerbaremetal | Uses Hetzner baremetal servers |
To switch an existing cluster's control plane type, update the controlPlane.class field in the cluster topology.
Switching the control plane type triggers a rolling replacement of all control plane nodes. Plan this when the cluster is in a healthy 3/3 state and during a maintenance window.