Kubernetes

Abkürzung: K8s

Kubernetes verwaltet Container in einem Verbund aus vielen Servern, einem Cluster. Man beschreibt, welche Anwendungen in welcher Zahl laufen sollen, und Kubernetes sorgt dafür, dass dieser Zustand eintritt und bleibt: Es verteilt Container auf die Server, startet abgestürzte neu, verlegt sie bei einem Serverausfall auf andere und verteilt die Last. Diese Aufgabe heißt Container-Orchestrierung.

Kubernetes stammt von Google, das im Jahr 2014 ein internes System zur Verwaltung seiner Rechenzentren als Vorbild nahm und eine offene Neuentwicklung vorstellte. Version 1.0 erschien 2015, zugleich ging das Projekt an die neu gegründete Cloud Native Computing Foundation. Der Name ist griechisch und bedeutet Steuermann. Die Abkürzung K8s steht für K, acht weitere Buchstaben, s.

Grundprinzip

Kubernetes arbeitet deklarativ: Man beschreibt den gewünschten Zustand, nicht die Schritte dorthin. Eine Beschreibung sagt etwa „drei Instanzen dieses Webservers, erreichbar unter diesem Namen“. Kubernetes vergleicht laufend den gewünschten mit dem tatsächlichen Zustand und gleicht Abweichungen aus. Fällt ein Server mit einer Instanz aus, startet es eine neue auf einem anderen.

Bausteine

BausteinBedeutung
Clusterder Verbund aller Server, die Kubernetes verwaltet
Nodeein einzelner Server im Cluster, physisch oder als virtuelle Maschine
Control Planedie Steuerung des Clusters: Schnittstelle, Datenspeicher, Verteilung der Arbeit
Podkleinste Einheit: ein oder mehrere Container, die zusammen auf einem Node laufen und sich Netz und Speicher teilen
Deploymentbeschreibt eine Anwendung: welches Image, wie viele Pods, wie aktualisiert wird
Servicefester Name und feste Adresse für eine Gruppe von Pods, deren Adressen sich ständig ändern
Ingressleitet Anfragen von außen an die richtigen Services weiter
NamespaceUnterteilung eines Clusters, etwa nach Team oder Umgebung
Persistent Volumedauerhafter Speicher, der einen Pod überlebt

Die Beschreibungen werden in YAML-Dateien abgelegt und mit dem Befehlszeilenwerkzeug kubectl an den Cluster übergeben.

Was Kubernetes übernimmt

AufgabeWie
VerteilungPods werden auf Nodes mit freien Ressourcen gelegt
Selbstheilungabgestürzte Container werden neu gestartet, Pods ausgefallener Nodes anderswo neu angelegt
Skalierungmehr oder weniger Pods, von Hand oder automatisch nach Last
Aktualisierungneue Versionen werden schrittweise ausgerollt, bei Fehlern zurückgerollt
LastverteilungAnfragen an einen Service verteilen sich auf alle passenden Pods
KonfigurationEinstellungen und Zugangsdaten werden getrennt vom Image verwaltet

Docker und Kubernetes

Docker baut Container und startet sie auf einem Rechner. Kubernetes verteilt und überwacht sie auf vielen. Für einen einzelnen Server reicht Docker mit Compose meist aus; Kubernetes lohnt sich, wenn Anwendungen auf mehreren Servern laufen und Ausfälle ohne Eingriff überstehen sollen.

Kubernetes startet Container nicht selbst, sondern über eine Laufzeitumgebung wie containerd oder CRI-O. Die direkte Anbindung an Docker wurde mit Version 1.24 im Mai 2022 entfernt. Images aus Docker laufen weiterhin.

Varianten und Distributionen

Kubernetes selbst ist ein Baukasten. Für den Betrieb gibt es fertige Zusammenstellungen:

ArtBeispieleEinsatz
Leichtgewichtige Distributionenk3s, MicroK8skleine Cluster, Edge, Test, Einplatinenrechner
UnternehmensplattformenOpenShift von Red Hat, Ranchereigener Betrieb mit Verwaltung, Sicherheit und Unterstützung durch den Hersteller
Verwaltete DiensteAngebote großer Cloud-Anbieter und vieler HosterControl Plane betreibt der Anbieter, der Kunde nur seine Anwendungen

Anwendungen für Kubernetes werden oft als Helm-Charts verteilt: Pakete, die alle nötigen Beschreibungen bündeln und sich mit Parametern anpassen lassen.

Aufwand

Kubernetes ist mächtig, aber anspruchsvoll. Netz, Speicher, Zugriffsrechte, Zertifikate, Überwachung und Aktualisierungen des Clusters selbst wollen beherrscht werden. Für kleine Umgebungen ist der Betrieb eines eigenen Clusters oft mehr Aufwand als Nutzen. Ein verwalteter Dienst nimmt einen Teil davon ab.

Im Rechenzentrum

Kubernetes verändert, was ein Rechenzentrum liefern muss, kaum: Es läuft auf gewöhnlichen Servern oder virtuellen Maschinen. Die Anwendungen werden aber unabhängiger von einzelnen Servern. Fällt ein Server aus, laufen die Dienste auf den anderen weiter — vorausgesetzt, der Cluster ist über genug Server und idealerweise über mehrere Brandabschnitte oder Standorte verteilt. Für Daten in Datenbanken gilt das nicht automatisch; sie brauchen weiterhin Replikation und Sicherung.

Weblinks

Erstellt: