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. E
in Pod ist ein Arbeitsprozess, der einen oder mehrere Container umfassen kann. E
in 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].