KubeOne auf Hetzner
Richte einen produktionsreifen Kubernetes-Cluster mit KubeOne als Provisioner ein.
Voraussetzungen
- lok8s CLI installiert
- hcloud CLI installiert und authentifiziert
- Ein SSH-Schlüsselpaar, das zu deinem Hetzner-Projekt hinzugefügt wurde
- Hetzner-Cloud-API-Token als
HCLOUD_TOKENexportiert
Cluster-Konfiguration
Erstelle eine cluster.lok8s.yaml mit kind: KubeOne:
yaml
apiVersion: cluster.lok8s.dev/v1beta1
kind: KubeOne
metadata:
name: production
spec:
kubernetes:
version: "v1.35.5"
provider: hetzner
hcloud:
region: fsn1
sshPublicKeyFile: "~/.ssh/id_ed25519.pub"
network:
cidr: "10.0.0.0/16"
ssh:
user: root
publicKeyFile: "~/.ssh/id_ed25519.pub"
privateKeyFile: "~/.ssh/id_ed25519"
controlPlane:
replicas: 3
type: cx33
workers:
platform:
replicas: 2
type: cpx31Bereitstellen
bash
lo provisionDies wird:
- Hetzner-Cloud-Server für Control Plane und Worker erstellen
- Das private Netzwerk einrichten
- Kubernetes via KubeOne installieren
- Die kubeconfig unter
~/.kube/configspeichern
Überprüfen
bash
kubectl get nodes
# NAME STATUS ROLES AGE VERSION
# cp-1 Ready control-plane 5m v1.35.5
# cp-2 Ready control-plane 5m v1.35.5
# cp-3 Ready control-plane 5m v1.35.5
# worker-1 Ready <none> 4m v1.35.5
# worker-2 Ready <none> 4m v1.35.5HA-Überlegungen
- Verwende
controlPlane.replicas: 3für die Produktion - Control-Plane-Nodes werden automatisch über Fehlerdomänen verteilt
- Das private Netzwerk (
hcloud.network.cidr) isoliert den Cluster-Traffic
Bootstrap-Addons hinzufügen
Cluster-Infra-Addons (CNI, CCM, cert-manager, Monitoring, …) stehen unter spec.bootstrap und werden beim Provisionieren in Reihenfolge angewendet:
yaml
bootstrap:
- cilium
- ccm
- monitoringFühre lo provision erneut aus, um Bootstrap-Änderungen schrittweise anzuwenden.
Nächste Schritte
- Registrierung — beim kubehz-Dashboard registrieren
- GitHub Actions — Bereitstellung in CI automatisieren
- CAPI — alternativer Provisioner mit Cluster API
Doku-Status
| Aspekt | Detail |
|---|---|
| Zustand | aktiv |
| Zuletzt geprüft | 2026-07-10 |