Was ist Container-Orchestrierung?
Container Orchestration
Container-Orchestrierung ist die automatische Verwaltung vieler Container über mehrere Rechner hinweg: Eine zentrale Steuerung verteilt sie auf die verfügbaren Knoten, startet ausgefallene Instanzen neu und hält den beschriebenen Soll-Zustand ohne Handarbeit aufrecht.
Sobald mehr als eine Handvoll Container auf mehreren Rechnern läuft, ist nicht mehr die Frage, wie du sie startest, sondern wer sie um drei Uhr nachts neu startet.
KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
- Arbeitet mit
- Einem beschriebenen Soll-Zustand
- De-facto-Standard
- Kubernetes, dazu Distributionen wie OpenShift
- Braucht
- Grenzwerte für Speicher und Rechenzeit
- Verwechselt mit
- Container-Laufzeitumgebung
Der Soll-Zustand wird beschrieben, nicht gestartet
Statt einzelne Startbefehle abzusetzen, legst du in einer Datei fest, was gelten soll: drei Kopien dieses Dienstes, dieses Image, so viel Arbeitsspeicher, erreichbar unter diesem Namen. Die Steuerungsebene vergleicht diesen Wunschzustand laufend mit der Wirklichkeit und gleicht Abweichungen selbst aus. Löscht jemand versehentlich eine Instanz, ist sie Sekunden später wieder da.
Dieses ständige Nachregeln ist der eigentliche Unterschied zu einem Skript, das Container startet. Ein Skript läuft einmal, eine Orchestrierung läuft immer. Deshalb reicht es auch nicht, eine Anwendung einmal auszurollen: Sie muss selbst melden können, ob sie betriebsbereit ist, sonst weiß die Plattform nicht, was sie reparieren soll.
apiVersion: apps/v1
kind: Deployment
metadata:
name: shop
spec:
replicas: 3
selector:
matchLabels: {app: shop}
template:
metadata:
labels: {app: shop}
spec:
containers:
- name: shop
image: registry.example.com/shop:1.4.2
resources:
requests: {cpu: 250m, memory: 256Mi}
limits: {memory: 512Mi}
readinessProbe:
httpGet: {path: /health, port: 8080} So sieht ein Soll-Zustand in Kubernetes aus. Die Datei sagt nicht, auf welchem Rechner die drei Kopien laufen, sondern nur, dass es drei sein sollen, mit welchem Image, wie viel Ressourcen jede braucht und woran die Plattform erkennt, dass eine Kopie Anfragen annehmen kann. Den Rest erledigt der Cluster.
Die Bausteine am Beispiel Kubernetes
Kubernetes ist der verbreitetste Orchestrator und hat die Begriffe geprägt, die auch andere Plattformen verwenden. Wer diese fünf kennt, kann fast jede Architekturskizze lesen.
-
Control Plane
Die Steuerungsebene mit API-Server, Scheduler und der Datenbank etcd, in der der gewünschte Zustand des ganzen Clusters liegt.
-
Node
Ein Arbeitsrechner, physisch oder virtuell, auf dem der Agent kubelet die zugewiesenen Container über eine Container-Laufzeit wie containerd startet.
-
Pod
Die kleinste Einheit, die Kubernetes verteilt: ein oder mehrere Container, die sich Netzwerkadresse und Speicher teilen.
-
Deployment
Beschreibt, wie viele Kopien eines Pods laufen sollen und in welcher Version, und sorgt bei Updates für den schrittweisen Austausch.
-
Service
Ein fester interner Name mit stabiler Adresse, hinter dem sich die wechselnden Pods verbergen, samt einfacher Lastverteilung.
Verteilung, Selbstheilung und Skalierung im Betrieb
Der Scheduler sucht für jeden neuen Pod einen Knoten, der genug freie Ressourcen hat und die geforderten Bedingungen erfüllt, etwa eine bestimmte Region oder einen Knoten mit Grafikkarte. Fällt ein Knoten aus, verteilt die Plattform die betroffenen Instanzen auf die übrigen. Bei Lastspitzen kommen zusätzliche Kopien hinzu und verschwinden wieder, wenn die Last sinkt.
Neue Versionen rollen schrittweise aus: Erst wird eine Instanz getauscht und geprüft, dann die nächste. Meldet die neue Version sich nicht als bereit, stoppt der Vorgang, statt die ganze Anwendung mitzureißen, und die alte Version läuft weiter.
Kubernetes und die Alternativen
Kubernetes ist Open Source und wird von der Cloud Native Computing Foundation betreut. In Unternehmen läuft es selten pur, sondern als Distribution mit zusätzlicher Verwaltung, etwa Red Hat OpenShift oder Rancher, oder als verwalteter Dienst der großen Cloud-Anbieter wie Amazon EKS, Azure Kubernetes Service und Google Kubernetes Engine. Dort betreibt der Anbieter die Steuerungsebene, du kümmerst dich um die Knoten und die Anwendungen.
Daneben gibt es schlankere Orchestratoren. Docker Swarm ist in Docker eingebaut und für kleine Umgebungen schnell eingerichtet, HashiCorp Nomad verteilt neben Containern auch gewöhnliche Programme. Für einen einzelnen Rechner ist Docker Compose oder Podman mit systemd oft genug, auch wenn das streng genommen keine Orchestrierung über mehrere Knoten ist.
KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Container-Orchestrierung und was oft damit gleichgesetzt wird
Die Laufzeitumgebung, etwa containerd oder CRI-O, startet einen einzelnen Container auf einem einzelnen Rechner. Die Orchestrierung entscheidet, welcher Container auf welchem Rechner läuft, wie viele Kopien es gibt und was bei Ausfall passiert.
Compose beschreibt mehrere zusammengehörige Container in einer Datei und startet sie gemeinsam, aber nur auf einem Host. Es startet abgestürzte Container zwar neu, verteilt aber nichts auf andere Rechner und fängt den Ausfall der Maschine nicht auf.
Eine virtuelle Maschine bringt ein eigenes Betriebssystem mit, ein Container teilt sich den Kernel des Hosts. Orchestrierung setzt meist auf virtuellen Maschinen auf, ersetzt sie aber nicht.
Die Pipeline baut und testet dein Image und übergibt es an die Plattform. Was danach im laufenden Betrieb damit geschieht, regelt die Orchestrierung.
KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Der Cluster tut, was in den Dateien steht, nicht was gemeint war
Ohne angegebenen Bedarf und ohne Obergrenze kann der Scheduler nicht planen. Ein Dienst mit einem Speicherleck zieht dann den ganzen Knoten leer, das Betriebssystem beendet Prozesse nach eigenem Ermessen, und es trifft ausgerechnet den Nachbarn, der nichts falsch gemacht hat. Danach wandert die Störung von Knoten zu Knoten, weil die verschobenen Container den Fehler mitnehmen. Realistische Angaben zu Bedarf und Grenze sind deshalb keine Feinjustierung, sondern die Voraussetzung dafür, dass Ausfälle lokal bleiben.
Zustandsbehaftete Dienste sind der zweite wunde Punkt. Eine Datenbank im Cluster braucht Speicher, der ihr folgt, wenn sie auf einem anderen Knoten neu gestartet wird. Hängt der Speicher lokal am Blech oder erlaubt er nur einen schreibenden Zugriff, steht der Dienst nach dem Verschieben ohne seine Daten da. Das fällt im Testbetrieb mit kleinen Datenmengen nie auf.
Am meisten Schaden richten falsch gesetzte Prüfungen an, mit denen der Cluster feststellt, ob ein Dienst bereit und ob er noch am Leben ist. Ist die Frist zu knapp für eine Anwendung, die beim Start eine Minute braucht, startet der Cluster sie unermüdlich neu, und der Fehler sieht aus wie ein Absturz. Miss die tatsächliche Startzeit, bevor du die Werte setzt.
Container-Orchestrierung lernen
Wie du einen Cluster aufbaust, absicherst und im Störungsfall wieder einfängst, üben die Zertifizierungen der Linux Foundation an eigenen Umgebungen.
Ob ein Cluster wirklich gesund ist, siehst du erst mit passender Messtechnik, dafür gibt es eigene Kurse zur Überwachung verteilter Systeme.
Sitzt Container-Orchestrierung schon?
Lesen fühlt sich schnell nach Können an. Ein kurzer Test zeigt dir, was davon schon sitzt und wo sich ein Kurs lohnt. Kostenlos, ohne Anmeldung, mit einer Erklärung zu jeder Antwort.
Kurse, die Container-Orchestrierung behandeln
Häufige Fragen
Brauche ich Kubernetes, wenn ich nur drei Container betreibe?
Was passiert mit meinen Daten, wenn eine Instanz neu gestartet wird?
Wie viele Knoten braucht ein produktiver Cluster?
Ist Docker selbst schon eine Orchestrierung?
Passt thematisch dazu
Ob sich der Aufwand für euch lohnt, hängt an Teamgröße und Lastprofil, und die Abwägung zeigt, ab welcher Größe sich ein Cluster rechnet.
Wer sich für Kubernetes entschieden hat, steht vor der nächsten Frage, und dafür gibt es die Rechnung zwischen verwaltetem Cluster und Eigenbetrieb.
Deine Ansprechpartner
Du willst das Thema nicht nur nachschlagen, sondern anwenden können? Wir beraten dich persönlich und kostenlos.
Yves Hoppe
Weiterbildung & Beratung
Ordnet mit dir ein, welcher Kurs zu deinem Vorwissen passt.
Norbert Jansen
Beratung & Inhouse
Plant Inhouse-Trainings, die an euren eigenen Daten und Abläufen ansetzen.
Container-Orchestrierung im Kurs statt im Lexikon
Nachschlagen bringt dich bis zum Verstehen. Anwenden lernst du an echten Aufgaben.