Es gibt zwar Unterschiede in den Methoden und Funktionen der verschiedenen Tools, aber die Containerorchestrierung ist im Wesentlichen ein dreistufiger Prozess (oder Zyklus, wenn er Teil einer iterativen agilen oder DevOps-Pipeline ist).
Die meisten Container-Orchestrierungstools unterstützen ein deklaratives Konfigurationsmodell: Ein Entwickler schreibt eine Konfigurationsdatei (je nach Tool in YAML oder JSON), die einen gewünschten Konfigurationszustand definiert. Das Orchestrierungstool, das die Datei ausführt, verwendet seine eigene Intelligenz, um diesen Zustand zu erreichen. Normalerweise hat eine Konfigurationsdatei die folgenden Aufgaben:
- Definition, aus welchen Container-Images die Anwendung besteht und wo diese sich befinden (in welcher Registry).
- Versorgung der Container mit Speicher und anderen Ressourcen.
- Definition und Schutz der Netzverbindungen zwischen Containern.
- Festlegung der Versionierung (für Stufen- oder Canary-Rollouts).
Das Orchestrierungstool plant die Bereitstellung der Container (und Replikate der Container aus Gründen der Resilienz) auf einem Host. Es wählt den besten Host basierend auf der verfügbaren CPU-Kapazität, dem Speicher oder anderen Anforderungen oder Einschränkungen aus, die in der Konfigurationsdatei angegeben sind.
Sobald die Container bereitgestellt sind, verwaltet das Orchestrierungstool den Lebenszyklus der containerisierten Anwendung basierend auf der Container-Definitionsdatei (häufig eine Docker-Datei). Dies umfasst:
- Verwaltung der Skalierbarkeit (nach oben und unten), des Lastausgleichs und der Ressourcenzuordnung zwischen den Containern.
- Sicherstellung von Verfügbarkeit und Leistung durch Verlagerung der Container auf einen anderen Host im Falle eines Ausfalls oder fehlender Systemressourcen
- Sammeln und Speichern von Protokolldaten und anderen Telemetriedaten zur Überwachung des Zustands und der Leistung der Anwendung.
Vorteile der Containerorchestrierung
Der Hauptvorteil der Containerorchestrierung liegt wahrscheinlich in der Automatisierung – und das nicht nur, weil sie den Aufwand und die Komplexität der Verwaltung eines großen containerisierten Anwendungsbestands erheblich reduziert. Durch die Automatisierung der Abläufe unterstützt die Orchestrierung einen agilen oder DevOps-Ansatz, mit dem Teams in schnellen, iterativen Zyklen neue Funktionen und Funktionalitäten schneller entwickeln und bereitstellen können.
Darüber hinaus kann die Intelligenz eines Orchestrierungstools viele der inhärenten Vorteile der Containerisierung verbessern oder erweitern. So maximiert beispielsweise die automatische Hostauswahl und die Ressourcenzuordnung auf der Grundlage einer deklarativen Konfiguration die effiziente Nutzung von Computerressourcen, während die automatische Statusüberwachung und Verlagerung von Containern die Verfügbarkeit optimiert.