Container-Orchestrierung bezeichnet die automatisierte Bereitstellung, Vernetzung, Skalierung und Überwachung von Containern über ihren gesamten Betriebszyklus hinweg.
Werden viele Container gleichzeitig betrieben, lässt sich das nicht mehr sinnvoll manuell steuern: Ein Orchestrierungswerkzeug übernimmt automatisch, wo welcher Container läuft, wie er mit anderen vernetzt ist und was passiert, wenn er ausfällt oder mehr Last bewältigen muss.
Container-Orchestrierungswerkzeuge fassen mehrere Rechner zu einem Cluster zusammen und verteilen Container automatisch auf die verfügbaren Ressourcen, abhängig von deren Anforderungen und vorgegebenen Regeln. Sie überwachen fortlaufend den Zustand der Container, starten bei einem Ausfall automatisch Ersatz, passen die Anzahl laufender Container an die aktuelle Last an und stellen die Netzwerkverbindungen zwischen den einzelnen Containern bereit. Dadurch müssen Betriebsteams nicht mehr jeden Container einzeln manuell steuern, sondern geben den gewünschten Zielzustand vor, den das Orchestrierungswerkzeug selbstständig herstellt und aufrechterhält.
Eine Anwendung läuft in mehreren Containern verteilt auf einem Cluster. Fällt einer der Rechner im Cluster aus, erkennt die Container-Orchestrierung dies automatisch und startet die betroffenen Container auf einem anderen verfügbaren Rechner neu, ohne dass jemand manuell eingreifen muss.
Container-Orchestrierung wird eingesetzt, um Anwendungen aus vielen einzelnen Containern zuverlässig, skalierbar und mit möglichst geringem manuellem Aufwand zu betreiben, insbesondere bei Microservices-Architekturen mit einer großen Anzahl einzelner Dienste.
Container-Orchestrierung löst nicht automatisch die Komplexität, die durch viele einzelne Container entsteht – sie verwaltet diese Komplexität, macht sie aber nicht verschwinden. Für kleine, einfache Anwendungen mit wenigen Containern kann der Betriebsaufwand eines vollständigen Orchestrierungswerkzeugs zudem größer sein als der Nutzen, den es bringt.
Nicht zu verwechseln mit Container (Software): Dieser bezeichnet die einzelne, isolierte Laufzeitumgebung einer Anwendung, während Container-Orchestrierung die Verwaltung vieler solcher Container im Zusammenspiel beschreibt. Ebenfalls abzugrenzen ist Virtualisierung: Diese abstrahiert Hardware-Ressourcen allgemein, ist aber keine Steuerung des Lebenszyklus vieler Container.