Kubernetes

Eintrag zuletzt aktualisiert am: 24.05.2022

Kubernetes (grieschisch für "Steuermann") ist eine Umgebung zum Clustering von Containern, oft auch als " Orchestrator" bezeichnet und als "K8s" abgekürzt. Dabei ist Kubernetes nicht auf Docker-Container beschränkt. Auch Rocket (rkt) wird unterstützt. Seit Version 1.4 unterstützt Kubernetes nicht nur Linux-Container, sondern auch Windows Container [https://kubernetes.io/docs/setup/production-environment/windows/intro-windows-in-kubernetes/]. Ursprünglich entwickelt wurde Kubernetes von Google und erstmals 2015 angekündigt. Seit 2015 wird das Go-basierte Open Source-Projekt von der Cloud Native Computing Foundation (CNCF) verwaltet. Über den ursprünglichen Codenamen des Kubernetes-Projekts freuen sich alle Star Trek-Fans: Seven of Nine. Das Kubernetes-Logo ist daher ein Steuerrat mit sieben Speichen. Ein Kubernetes-Vorgänger im Hause Google hatte den Namen "Borg". Für alle nicht Star Trek-Fans: Die Borgs assimilieren andere Völker. Seven of Nine ist eine reassimilierte Borg. So schließt sich der Kreis.

Kubernetes-Konzepte

In Kubernetes sind Nodes und Pods die zentralen Konzepte. Ein Node ist ein physisches oder virtuelles System zum Hosting von Pods. Ein Pod ist ein Arbeitsprozess, der einen oder mehrere Container umfassen kann. Ein Pods ist die kleinste verteilbare Einheit bei Kubernetes. Der so entstehende Cluster wird über einen Kubernetes Master gesteuert. Seine Aufgabe ist das Hoch- oder Herunterfahren von Nodes – zur Skalierung oder auch als Ersatz für ausgefallene Nodes. Zudem speichert der Master die Konfiguration (Key-Value-Datenbank etcd, siehe [https://github.com/etcd-io/etcd]). Für die Hochverfügbarkeit muss es mehrere Kubernetes Master geben. Da der Master auch auf einem Node läuft, wird er zur Abgrenzung auch als Master Node bezeichnet, während die die eigentliche Arbeit verrichtenden Knoten die Worker Nodes sind.

Während Worker Nodes seit Version 1.4 auch auf Windows Server 2019 oder Windows Server 1809 mit Docker EE-Basic 18.09 basieren können, sind die Master Nodes immer Linux-basiert. Linux- und Windows-basierter Worker Nodes können in einem Cluster gemischt werden.

Die Windows-Container-Welt kennt zwei Konzepte: Windows Server-Container und Hyper-V-Container. Bei Windows Server-Container teilt sich der Container den Betriebssystemkernel mit dem Host, per Sandboxing werden Prozessen, Dateisystem und der Registrierungsdatenbank getrennt. Hyper-V-Container basierte Container laufen in einer Mini-VM. Der Host sieht nur den Prozess VMWP.exe, aber nicht einzelne Prozesse der Container. Kubernetes unterstützt bisher nur Windows Server-Container, mit dem Nachteil, dass die Versionsnummer des Gastbetriebssystems in den ersten drei Versionsnummer dem Host-Betriebssystem entsprechen muss. Man kann also jeweils nur auch nur Windows Server 2019 bzw. Windows Server 1809 als Gast einsetzen. Eine Liste der weiteren Einschränkungen von Windows Containern in Kubernetes findet man unter [https://kubernetes.io/docs/setup/production-environment/windows/intro-windows-in-kubernetes/#supported-functionality-and-limitations].