Was ist Kubernetes und wie wird ein Cluster verwaltet?

Kubernetes orchestriert containerisierte Anwendungen automatisch. Dieser Ratgeber erklärt den Aufbau eines Clusters, seine wichtigsten Komponenten und wie die Verwaltung in der Praxis funktioniert.

Teilen

Moderne Software wird heute selten als ein einziges großes Programm betrieben. Stattdessen besteht sie aus vielen kleinen, voneinander unabhängigen Bausteinen, die in sogenannten Containern laufen. Sobald jedoch Dutzende oder Hunderte solcher Container über mehrere Server verteilt sind, wird die manuelle Verwaltung schnell unübersichtlich. Genau hier kommt Kubernetes ins Spiel: eine Plattform, die das Ausrollen, Skalieren und Betreiben containerisierter Anwendungen automatisiert. In diesem Ratgeber erklären wir, was Kubernetes ist, wie ein Cluster aufgebaut ist und wie die Verwaltung im Alltag abläuft.

Was ist Kubernetes überhaupt?

Kubernetes, oft mit "K8s" abgekürzt, ist ein quelloffenes System zur Orchestrierung von Containern. Ursprünglich wurde es bei Google entwickelt und 2014 als Open-Source-Projekt veröffentlicht. Heute wird es von der Cloud Native Computing Foundation (CNCF) betreut und gilt als Industriestandard in diesem Bereich.

Ein Container bündelt eine Anwendung zusammen mit allen benötigten Bibliotheken und Abhängigkeiten in einer abgeschlossenen Einheit. Das macht die Software portabel und lauffähig auf nahezu jeder Umgebung. Kubernetes übernimmt die Aufgabe, diese Container koordiniert über viele Maschinen hinweg zu betreiben. Es entscheidet, auf welchem Server ein Container läuft, startet abgestürzte Container neu und passt die Anzahl laufender Instanzen an die aktuelle Last an.

Der Aufbau eines Kubernetes-Clusters

Ein Kubernetes-Cluster ist die Gesamtheit aller Maschinen, auf denen Kubernetes läuft. Diese Maschinen werden Nodes genannt und in zwei Rollen unterteilt: die Steuerungsebene (Control Plane) und die Arbeitsknoten (Worker Nodes).

Die Steuerungsebene (Control Plane)

Die Control Plane ist das Gehirn des Clusters. Sie trifft alle wichtigen Entscheidungen und sorgt dafür, dass der tatsächliche Zustand des Clusters dem gewünschten Sollzustand entspricht. Zu ihren zentralen Bestandteilen gehören:

  • API-Server: Die zentrale Schnittstelle, über die alle Befehle und Anfragen laufen. Jede Interaktion mit dem Cluster geht durch den API-Server.
  • etcd: Ein verteilter Schlüssel-Wert-Speicher, in dem der gesamte Zustand des Clusters dauerhaft abgelegt wird.
  • Scheduler: Entscheidet, auf welchem Worker Node neue Container platziert werden, etwa anhand verfügbarer Ressourcen.
  • Controller Manager: Überwacht den Cluster und leitet bei Abweichungen vom Sollzustand automatisch Korrekturen ein.

Die Worker Nodes

Auf den Worker Nodes laufen die eigentlichen Anwendungen. Jeder Worker Node enthält das sogenannte Kubelet, einen Agenten, der mit der Control Plane kommuniziert und dafür sorgt, dass die zugewiesenen Container tatsächlich gestartet und betrieben werden. Hinzu kommt eine Container-Laufzeitumgebung wie containerd, die die Container ausführt, sowie der Kube-Proxy, der den Netzwerkverkehr regelt.

Pods, Deployments und Services

Kubernetes verwaltet Container nicht einzeln, sondern in sogenannten Pods. Ein Pod ist die kleinste deploybare Einheit und kann einen oder mehrere eng zusammengehörende Container enthalten, die sich Netzwerk und Speicher teilen.

Damit Anwendungen zuverlässig laufen, kommen weitere Konzepte hinzu:

  • Deployments: Beschreiben den gewünschten Zustand einer Anwendung, etwa wie viele identische Pods laufen sollen. Kubernetes hält diesen Zustand automatisch aufrecht.
  • Services: Stellen eine stabile Netzwerkadresse für eine Gruppe von Pods bereit, auch wenn einzelne Pods neu gestartet werden oder den Server wechseln.
  • Namespaces: Erlauben es, einen Cluster logisch in mehrere Bereiche zu unterteilen, etwa für verschiedene Teams oder Projekte.

Wie wird ein Cluster verwaltet?

Die Verwaltung eines Kubernetes-Clusters folgt einem deklarativen Prinzip. Das bedeutet: Anstatt einzelne Befehle abzuarbeiten, beschreibt man in Konfigurationsdateien den gewünschten Zielzustand. Kubernetes kümmert sich anschließend selbstständig darum, diesen Zustand herzustellen und dauerhaft zu erhalten.

Das Werkzeug kubectl

Das wichtigste Werkzeug für die tägliche Arbeit ist das Kommandozeilenprogramm kubectl. Damit kann man den Status des Clusters abfragen, Anwendungen ausrollen, Logs einsehen oder Konfigurationen anwenden. Diese Konfigurationen werden meist in Dateien im YAML-Format definiert, die genau beschreiben, wie eine Anwendung aussehen soll.

Skalierung und Selbstheilung

Eine der größten Stärken von Kubernetes ist die automatische Anpassung an wechselnde Anforderungen. Steigt die Last auf eine Anwendung, kann das System automatisch zusätzliche Pods starten. Fällt ein Container oder sogar ein ganzer Node aus, erkennt Kubernetes dies und startet die betroffenen Pods auf einer gesunden Maschine neu. Diese Selbstheilung sorgt für hohe Verfügbarkeit, ohne dass ein Administrator nachts eingreifen muss.

Verwaltung in der Praxis: selbst gehostet oder gemanagt

Grundsätzlich gibt es zwei Wege, ein Cluster zu betreiben. Beim selbst gehosteten Betrieb installiert und wartet man Kubernetes vollständig in Eigenregie, was maximale Kontrolle, aber auch hohen Aufwand bedeutet. Die meisten großen Cloud-Anbieter stellen alternativ gemanagte Dienste bereit, bei denen die Control Plane vom Anbieter betrieben wird. Dadurch entfällt ein erheblicher Teil der Wartung, etwa Updates und Backups der Steuerungsebene.

Für wen lohnt sich Kubernetes?

Kubernetes entfaltet seinen Nutzen vor allem dann, wenn Anwendungen aus vielen Komponenten bestehen, regelmäßig aktualisiert werden und zuverlässig skalieren müssen. Für kleine, einfache Projekte kann der Einstieg dagegen überdimensioniert sein, da die Plattform eine gewisse Lernkurve mit sich bringt. Wer jedoch komplexe, hochverfügbare Systeme betreibt, profitiert von der Automatisierung, der Ausfallsicherheit und der herstellerübergreifenden Standardisierung.

Fazit

Kubernetes ist heute der zentrale Standard für die Orchestrierung containerisierter Anwendungen. Ein Cluster besteht aus einer steuernden Control Plane und mehreren Worker Nodes, auf denen die Anwendungen in Pods laufen. Verwaltet wird das Ganze deklarativ, vor allem über das Werkzeug kubectl und Konfigurationsdateien. Wer den anfänglichen Lernaufwand investiert, erhält eine robuste Plattform, die Skalierung, Ausfallsicherheit und Wartung weitgehend automatisiert übernimmt.

Mehr zum Thema findest du in unserer Übersicht: Cloud & DevOps: Alle Artikel im Überblick.

Verwandte Artikel