Mit dem Cluster API das Verwalten von Kubernetes-Clustern vereinfachen

Kubernetes-Cluster managen

Kubernetes-Cluster managen

Mit dem Cluster API das Verwalten von Kubernetes-Clustern vereinfachen

Kubernetes-Cluster managen


Das Kubernetes-Projekt Cluster API soll es möglich machen, den Lebenszyklus eines Kubernetes-Clusters innerhalb von Kubernetes selbst zu managen. Dazu bietet es APIs für die deklarative Verwaltung an.

In diesem Artikel nähern wir uns der Möglichkeit, Kubernetes-(K8s-)Cluster deklarativ zu betreiben. Dazu ist der Artikel in folgende Abschnitte geteilt:

  • Kubernetes mit Cluster API betreiben

  • Cluster API hands-on

  • viele Kubernetes-Cluster betreiben

Kubernetes mit Cluster API betreiben

Das Cluster API [1] ist eine alternative Methode, um Kubernetes-Cluster zu betreiben. Wer selbst Kubernetes-Cluster installieren möchte, greift klassischerweise auf eine Infrastruktur zu (die oft von Terraform/OpenTofu separat aufgesetzt wird) und führt dort eigene oder komplexere Skripte aus. Leser:innen kennen vielleicht schon Kops [2] oder Kubespray [3].

Der Ansatz des Cluster API ist ein anderer: Hier werden – wie bei Kubernetes-Operatoren –

Kubernetes-Objekte bereitgestellt, mit denen die Cluster deklarativ installiert und betrieben werden. Das entspricht der Art und Weise, wie wir sonst mit Kubernetes arbeiten.

Vorweg eine kleine Analogie: Aus Kubernetes wissen wir, dass Deployment ein ReplicaSet erstellen und überwachen, während die Replica Sets sich um die Pods (sehr vereinfacht: Container) kümmern. Das Schöne an dem Konstrukt ist, dass auf deklarative Weise Hochverfügbarkeit, Skalierung und Updates (mit entprechenden Updatestrategien) ermöglicht werden. Beim Cluster API haben wir MachineDeployment, MachineSet und Machine. Diese funktionieren so wie Deployment, ReplicaSet und Pods, nur dass es hier um (Kubernetes) Machines geht. Wir können genauso deklarativ Maschines ausrollen und updaten (in Sync halten) und wenn eine Maschine verschwindet, wird automatisch eine neue erstellt – und das in unzähligen Infrastrukturen. Daraus folgt dann – Ende des Exkurses –, dass wir Cluster genauso wie Applikationen betreiben können und sollten.

Kommen wir zurück zum Anfang: Das Cluster API bietet Kubernetes-Objekte (CRDs), die ganz abstrakt einen Cluster beschreiben. Das zentrale Objekt ist dabei das Cluster-Objekt – vereinfacht gesagt wird damit lediglich signalisiert, dass ein Cluster erstellt wird (bitte beachten Sie, dass die Erklärungen bewusst einfach gehalten sind). Dieses Cluster-Objekt besitzt zwei wichtige Referenzen: Zum einen wird festgelegt, welches Objekt die Control Plane bildet, und zum anderen, in welcher Infrastruktur der Cluster betrieben wird. In der Referenz auf die Infrastruktur liegt eine besondere Stärke des Cluster API: Jede Umgebung kann über eigene Provider [4] den Glue-Code für die jeweilige Infrastruktur bereitstellen. So kann für jeden Cloud-Provider, Hyperscaler, aber auch für On-Premise-Umgebungen oder das lokale Docker entwickelt werden. Die zweite Referenz beschreibt, wie die Control Plane aufgebaut sein soll – sie...