Was ist kubernetes (k8s) und wie funktioniert es?

Autor: Veröffentlicht

Kurz gesagt: Kubernetes, kurz K8s, ist eine offene Plattform zum Ausführen und Verwalten von Anwendungen in Containern. Sie sorgt dafür, dass die vorgegebene Anzahl ihrer Kopien läuft, ersetzt nicht verfügbare Instanzen und erleichtert die Bereitstellung neuer Versionen. Bei umfangreichen Systemen ist sie nützlich, doch für eine einfache Website oder eine kleine Anwendung kann ihr Betrieb aufwendiger sein als das eigentliche Hosting.

Vom Container zur Anwendungsverwaltung

Ein Container ist eine isolierte Umgebung, in der ein Anwendungsprozess ausgeführt wird. Er entsteht aus einem Container-Image, also einem Paket mit dem Code, den benötigten Bibliotheken und den Starteinstellungen. Dadurch lässt sich dieselbe Anwendungsversion in verschiedenen kompatiblen Umgebungen ausführen, ohne sämtliche Abhängigkeiten manuell installieren zu müssen.

Ein einzelner Container lässt sich relativ einfach starten. Schwierigkeiten entstehen, wenn viele Anwendungen betrieben, auf mehrere Server verteilt, ohne lange Unterbrechungen aktualisiert und bei Ausfällen wiederhergestellt werden müssen. Kubernetes automatisiert einen Teil dieser Aufgaben — diese Art der Verwaltung nennt man Container-Orchestrierung.

Der Name K8s ist eine Abkürzung des Wortes Kubernetes: Zwischen den Buchstaben „K“ und „s“ stehen acht Buchstaben. Er bezeichnet weder ein eigenes Produkt noch eine andere Version der Plattform.

Wie Kubernetes funktioniert: Cluster, Knoten und Pods

Ein Cluster ist eine Kubernetes-Umgebung, die aus einer Verwaltungsebene und Knoten besteht, auf denen Anwendungen ausgeführt werden. Ein Knoten, auf Englisch node, ist eine physische oder virtuelle Maschine. In einer kleinen Testumgebung können alle Komponenten auf einem einzigen Computer laufen.

Die Verwaltungsebene, die sogenannte control plane, speichert die Konfiguration und koordiniert den Betrieb des Clusters. Sie entscheidet unter anderem, wo eine Anwendung gestartet wird. Die Software auf den Knoten führt diese Anweisungen aus und übermittelt Informationen zum Zustand der laufenden Aufgaben.

Kubernetes arbeitet nach dem Prinzip des gewünschten Zustands. Statt jede Kopie einer Anwendung manuell zu starten, geben Sie beispielsweise vor: „Von dieser Version sollen drei Kopien laufen.“ Das System vergleicht diese Vorgabe laufend mit dem tatsächlichen Zustand und versucht, Abweichungen zu beseitigen.

Für das Verständnis der Grundlagen reichen vier Begriffe:

Die Konfiguration wird häufig in YAML-Dateien gespeichert, einem gut lesbaren Format für Textdaten. Für die Arbeit mit dem Cluster dient unter anderem das Kommandozeilenwerkzeug kubectl.

Was bei Ausfällen und Aktualisierungen passiert

Stellen Sie sich einen Onlineshop vor, dessen Komponente zur Bearbeitung von Anfragen in drei Pods auf mehreren Knoten läuft. Das Deployment legt die Anzahl der Kopien fest, und der Service leitet den Datenverkehr an die verfügbaren Pods weiter. Fällt ein Pod aus, versucht Kubernetes, einen Ersatz zu starten.

Das bedeutet keine sofortige oder bedingungslose Wiederherstellung. Der Cluster braucht freie Ressourcen, Zugriff auf das Anwendungs-Image und eine funktionierende Infrastruktur. Hat die Anwendung einen Fehler, der bei jedem Start einen Ausfall verursacht, beseitigt ein Neustart des Pods nicht die Ursache.

Bei einer Aktualisierung kann Kubernetes alte Pods schrittweise durch neue ersetzen. Bereitschaftsprüfungen, also konfigurierte Tests der Fähigkeit einer Anwendung, Anfragen zu bearbeiten, helfen dabei, keinen Datenverkehr an eine Kopie zu leiten, die noch startet. Eine Bereitstellung ohne Unterbrechung erfordert jedoch eine geeignete Konfiguration und Anwendungsarchitektur — sie ist keine automatische Garantie der Plattform.

Ähnlich funktioniert die Skalierung. Kubernetes ermöglicht es, die Anzahl der Kopien zu ändern. Nach der Einrichtung eines automatischen Skalierungsmechanismus kann es dies anhand von Metriken wie der Prozessorauslastung selbst übernehmen. Zusätzliche Pods beschleunigen jedoch weder eine überlastete Datenbank noch einen anderen gemeinsam genutzten Engpass.

Was Kubernetes nicht ersetzt

Kubernetes erstellt keine Anwendungs-Images und ersetzt nicht den gesamten Prozess des Testens und Veröffentlichens von Code. Es ist auch kein Synonym für Docker. Die Werkzeuge von Docker helfen unter anderem dabei, Container zu erstellen und lokal auszuführen. Kubernetes hingegen verwaltet ihren Betrieb im Cluster und nutzt dafür eine geeignete Laufzeitumgebung, beispielsweise containerd.

Die Plattform bietet von sich aus weder eine vollständige Überwachung noch Datensicherungen oder Anwendungssicherheit. Berechtigungen, Aktualisierungen, die Erfassung von Logs und der Schutz von Zugangsdaten müssen geplant werden. Der Zugriff aus dem Internet erfordert ebenfalls eine geeignete Netzwerkkonfiguration und meist zusätzliche Komponenten oder Dienste des Anbieters.

Besondere Aufmerksamkeit erfordern die Daten. Ein Pod kann verschwinden und neu erstellt werden. Dateien, die dauerhaft gespeichert werden müssen, sollten deshalb nicht ausschließlich in der beschreibbaren Schicht des Containers liegen. Kubernetes unterstützt persistente Volumes, doch deren Nutzung ersetzt weder eine Datensicherung noch ein erprobtes Wiederherstellungsverfahren.

Wann der Einsatz von K8s sinnvoll ist

Kubernetes ist eine Überlegung wert, wenn Sie viele Dienste betreiben, diese häufig bereitstellen, eine unabhängige Skalierung benötigen und ein Team haben, das die Plattform betreuen kann. Ein einheitliches Verfahren für Konfiguration und Bereitstellung kann dann die Zahl manueller Arbeitsschritte verringern.

Für einen Blog, eine Unternehmenswebsite oder eine einzelne kleine Anwendung bedeutet einfacheres Hosting, ein virtueller Server oder eine verwaltete Anwendungsplattform häufig weniger Aufwand. Das ist eine praktische Einschätzung, keine technische Einschränkung: Eine kleine Anwendung lässt sich in Kubernetes ausführen, doch die Vorteile gleichen den Arbeitsaufwand möglicherweise nicht aus.

Verwaltetes Kubernetes überträgt einen Teil der Aufgaben an den Anbieter, deren Umfang hängt jedoch vom jeweiligen Dienst ab. Prüfen Sie vor der Auswahl in der offiziellen Dokumentation und Preisliste, wer für Aktualisierungen verantwortlich ist, wie es um die Verfügbarkeit der Verwaltungsebene steht und welche Gebühren für Server, Speicher, Netzwerk und zusätzliche Komponenten anfallen.

Wenn Sie K8s gerade erst kennenlernen, starten Sie einen lokalen Testcluster, beispielsweise mit kind oder minikube. Stellen Sie eine einfache Anwendung mit zwei Kopien bereit und löschen Sie einen Pod. Wenn Sie beobachten, wie das System ihn ersetzt, können Sie den grundlegenden Mechanismus verstehen, ohne eine Produktionsinfrastruktur aufzubauen.

Lesen Sie auch

Wie PHP-FPM PHP-Anfragen verarbeitet, sich vom Webserver unterscheidet und wie du Prozesse an Last und Hosting-Ressourcen anpasst.
BIND ist offene DNS-Serversoftware. Erfahre, welche Aufgaben sie übernimmt und wann sich der Betrieb eines eigenen Servers lohnt.
Was Polens REGON-Register und seine Kennnummer bedeuten, wie sie sich von NIP und KRS unterscheiden und wie Sie Unternehmensdaten prüfen.