Containerorchestrierung automatisiert die Einrichtung, Bereitstellung, Vernetzung, Skalierung, Verfügbarkeit und das Lebenszyklusmanagement von Containern. Kubernetes ist heute die beliebteste Plattform zur Containerorchestrierung. Die meisten führenden Public-Cloud-Provider – darunter Amazon Web Services (AWS), Google Cloud Platform, IBM Cloud und Microsoft Azure – bieten verwaltete Kubernetes-Services an. Weitere Tools zur Containerorchestrierung sind Docker Swarm und Apache Mesos.
Container sind schlanke, ausführbare Anwendungskomponenten, die den Anwendungsquellcode mit allen Betriebssystembibliotheken und Abhängigkeiten kombinieren, die für die Ausführung des Codes in der Umgebung erforderlich sind.
Die Erstellung von Containern ist schon seit Jahrzehnten möglich. Aber erst seit 2008, als Linux die Container-Funktionalität in seinen Kernel aufnahm, ist diese Option weithin verfügbar und fand mit der Einführung von Docker, einer Open-Source-Plattform zur Containerisierung, im Jahr 2013 breite Nutzung. (Docker ist so beliebt, dass „Docker-Container“ und „Container“ oft synonym verwendet werden.)
Da sie kleiner, ressourceneffizienter und portierbarer als virtuelle Maschinen (VMs) sind, wurden Container – genauer gesagt containerisierte Microservices oder serverlose Funktionen – zu den De-facto-Recheneinheiten moderner cloudnativer Anwendungen. (Weitere Informationen zu den Vorteilen von Containern finden Sie in der nachstehenden interaktiven Datenvisualisierung)
In kleiner Anzahl können Container problemlos manuell bereitgestellt und verwaltet werden, aber in den meisten Unternehmen steigt die Zahl containerisierter Anwendungen rasant. Das Container-Management in großem Umfang – insbesondere als Teil einer Continuous Integration/Continuous Delivery (CI/CD)- oder DevOps-Pipeline – ist ohne Automatisierung nicht möglich.
Hier kommt die Containerorchestrierung ins Spiel, die die Betriebsaufgaben rund um die Bereitstellung und Ausführung von containerisierten Anwendungen und Services automatisiert. Laut einer aktuellen IBM Studie (PDF) berichten 70 % der Entwickler, die Container verwenden, dass sie eine Lösung zur Containerorchestrierung verwenden, und wiederum 70 % davon geben an, dass sie einen vollständig verwalteten (cloudverwalteten) Service zur Containerorchestrierung in ihrem Unternehmen nutzen.
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 Tools zur Containerorchestrierung unterstützen ein deklaratives Konfigurationsmodell: Ein Entwickler schreibt eine Konfigurationsdatei (je nach Tool in YAML oder JSON), die einen gewünschten Konfigurationsstatus definiert. Das Orchestrierungstool führt daraufhin die Datei aus und verwendet seine eigene Intelligenz, um den gewünschten Status zu erreichen. Normalerweise hat eine Konfigurationsdatei die folgenden Aufgaben:
Das Orchestrierungstool plant die Bereitstellung der Container (und der Replikate der Container für die Ausfallsicherheit) auf einem Host und wählt den besten Host auf der Grundlage der verfügbaren CPU-Kapazität, des Hauptspeichers oder anderer in der Konfigurationsdatei angegebener Anforderungen oder Einschränkungen aus.
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:
Der Hauptvorteil der Containerorchestrierung liegt eindeutig 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.
Wie bereits erwähnt, ist Kubernetes die beliebteste Plattform zur Containerorchestrierung. Zusammen mit anderen Tools im Container-Ökosystem kann ein Unternehmen mit Kubernetes eine hochproduktive Platform as a Service (PaaS) bereitstellen, die viele der infrastruktur- und betriebsbezogenen Aufgaben und Probleme im Zusammenhang mit der Entwicklung von cloudativen Anwendungen löst, sodass sich die Entwicklungsteams ausschließlich auf die Codierung und Innovation konzentrieren können.
Die Vorteile von Kubernetes gegenüber anderen Orchestrierungslösungen ergeben sich vor allem aus den umfassenderen und fortgeschrittenen Funktionen in verschiedenen Bereichen, darunter:
Red Hat OpenShift on IBM® Cloud nutzt OpenShift in öffentlichen und hybriden Umgebungen für Geschwindigkeit, Marktreaktivität, Skalierbarkeit und Zuverlässigkeit.
Mit IBM® Cloud Satellite können Sie überall konsistente Cloud-Services starten – lokal, am Edge und in Public-Cloud-Umgebungen.
Führen Sie Container-Images, Stapeljobs oder Quellcode als serverlose Workloads aus – ohne Größenanpassung, Bereitstellung, Vernetzung oder Skalierung.
Bestimmen Sie automatisch die richtigen Maßnahmen für die Ressourcenzuordnung – und den richtigen Zeitpunkt, um sicherzustellen, dass Ihre Kubernetes-Umgebungen und geschäftskritischen Apps genau das bekommen, was sie zur Erfüllung Ihrer SLOs benötigen.