kubeone

Von Null bis zur Produktion: KubeOne auf Bare-Metal-Servern

Abubakar Siddiq Ango
Abubakar Siddiq Ango Senior Developer Advocate
1. März 2026 3 Min. Lesezeit Mittelstufe
Bare-Metal Produktion Erste Schritte

Voraussetzungen

  • 3 Bare-Metal-Server (oder VMs) mit Ubuntu 22.04
  • Ein Load Balancer (Hardware, HAProxy oder keepalived+HAProxy), der die Steuerungsebene auf TCP-Port 6443 bereitstellt
  • SSH-Zugriff mit schlüsselbasierter Authentifizierung
  • kubectl ist auf Ihrem lokalen Rechner installiert
  • Grundkenntnisse in Kubernetes

Einführung

KubeOne ist das Open-Source-Tool von Kubermatic zur Automatisierung des gesamten Lebenszyklus von Kubernetes-Clustern. In diesem Tutorial lernen Sie, wie Sie von Bare-Metal-Servern zu einem produktionsreifen Cluster gelangen.

Schritt 1: KubeOne installieren

Laden Sie die neueste KubeOne-Binärdatei für Ihre Plattform herunter:

curl -sfL https://get.kubeone.io | sh
kubeone-Version

Schritt 2: Bereiten Sie Ihre Infrastruktur vor

Bei einer Bare-Metal-Umgebung können Sie Terraform komplett überspringen – Ihre Server sind ja bereits vorhanden. Sie benötigen jedoch eine Komponente vor der Steuerungsebene: einen Load Balancer. Dies ist für die Hochverfügbarkeit (HA) unabdingbar, da kubectl und jeder Worker-Knoten benötigt eine einzige feste Adresse, mit der er kommunizieren kann, und nicht drei separate IP-Adressen der Steuerungsebene.

Die einfachste Open-Source-Lösung ist HAProxy auf einer separaten kleinen VM (oder zwei, mit Keepalived für den VIP), die den TCP-Port 6443 an alle drei Control-Plane-Knoten weiterleitet. Für dieses Tutorial gehen wir davon aus, dass Ihr Load Balancer unter api.production-edge.example.com.

Die HA-Topologie sieht wie folgt aus:

flowchart TD
    Client["kubectl / workers"]
    LB["Load balancer
api.production-edge.example.com:6443"] Client --> LB LB --> CP1["control-plane-1
203.0.113.10
kube-apiserver + etcd"] LB --> CP2["control-plane-2
203.0.113.11
kube-apiserver + etcd"] LB --> CP3["control-plane-3
203.0.113.12
kube-apiserver + etcd"] CP1 <-.->|etcd raft| CP2 CP2 <-.->|etcd raft| CP3 CP1 <-.->|etcd raft| CP3

Warnung: Stellen Sie sicher, dass alle Server im privaten Netzwerk miteinander kommunizieren können. Die Firewall-Regeln müssen den Datenverkehr für die Kubernetes-API (6443), etcd (2379–2380) und kubelet (10250) zwischen den Knoten der Steuerungsebene sowie den Datenverkehr von Port 6443 vom Load Balancer zu jedem Knoten der Steuerungsebene zulassen.

Schritt 3: Erstellen der KubeOne-Konfiguration

apiVersion: kubeone.k8c.io/v1beta2
kind: KubeOneCluster
name: production-edge

versions:
  kubernetes: "v1.30.2"

cloudProvider:
  none: {}

apiEndpoint:
  host: "api.production-edge.example.com"
  port: 6443

controlPlane:
  hosts:
    - publicAddress: "203.0.113.10"
      privateAddress: "10.0.0.10"
      sshUser: "ubuntu"
    - publicAddress: "203.0.113.11"
      privateAddress: "10.0.0.11"
      sshUser: "ubuntu"
    - publicAddress: "203.0.113.12"
      privateAddress: "10.0.0.12"
      sshUser: "ubuntu"

Die API-Endpunkt Der Block ist das, was diesen Cluster tatsächlich hochverfügbar macht. KubeOne schreibt diesen Hostnamen in die generierte Kubeconfig-Datei und in die Kubelet-Konfiguration jedes Worker-Knotens, sodass jeder API-Aufruf den Load Balancer erreicht und jeden funktionsfähigen Knoten der Steuerungsebene ansprechen kann. Wenn man ihn weglässt, erhält man drei Knoten der Steuerungsebene, zwischen denen niemand ein Failover durchführen kann.

Schritt 4: Cluster bereitstellen

kubeone apply --manifest kubeone.yaml

KubeOne wird:

  1. Container-Laufzeitumgebung (containerd) installieren
  2. Den ersten Knoten der Steuerungsebene initialisieren
  3. Den verbleibenden Knoten der Steuerungsebene beitreten
  4. Netzwerk konfigurieren (standardmäßig Canal CNI)
  5. Maschinensteuerung für Worker-Knoten bereitstellen

Schritt 5: Überprüfen Sie Ihren Cluster

export KUBECONFIG=$PWD/production-edge-kubeconfig
kubectl get nodes
kubectl get pods -A

Sie sollten alle drei Knoten der Steuerungsebene in Bereit Zustand.

Nächste Schritte

  • Worker-Knoten mithilfe von MachineDeployments hinzufügen
  • Konfigurieren Sie persistenten storage einem CSI-Treiber
  • Richten Sie die Überwachung mit Prometheus und Grafana ein
  • Cluster-Autoskalierung aktivieren

Zusammenfassung

Sie haben mithilfe von KubeOne erfolgreich einen hochverfügbaren Kubernetes-Cluster auf Bare-Metal-Hardware bereitgestellt. Der Cluster ist produktionsbereit und verfügt über drei Control-Plane-Knoten, die für Fehlertoleranz sorgen.