Einzelne Container auf einem Container-Host bereitzustellen, ist einfach. Die damit einhergehende Portabilität war schließlich Hauptziel der Entwicklung von Docker. Container als Betriebsmodell für Microservice-basierte Anwendungen benötigen jedoch Orchestrierung. Docker allein kümmert sich in einem Verbund von Docker-Hosts nämlich nicht darum, wie einzelne Container in puncto Netzwerk und Storage zusammenarbeiten, wie sich mehrere Container zu einem Service verschnüren lassen oder wie sich feststellen lässt, ob im Verbund von Docker-Hosts noch Kapazitäten frei sind. Docker selbst kann nur Container starten und stoppen. Ein Cluster-Manager hingegen orchestriert nicht nur die Zusammenarbeit von Containern, auch die IP-, DNS- und Versionsverwaltung, das Lifecycle-Management oder das Monitoring gehören zu den Aufgaben des Cluster-Managers.
Kubernetes ist der populärste Cluster-Manager. Allerdings ist Container-Orchestrierung nur ein möglicher Einsatzbereich von Kubernetes. Allgemein hilft Kubernetes dabei, Cloud-native Anwendungen einfacher bereitzustellen und hochverfügbar beziehungsweise skalierbar zu betreiben. Die Vielseitigkeit von Kubernetes zeigt sich auch darin, dass Google Kubernetes als (Teil)-Projekt von "Google's Infrastructure for Everyone Else" [1] betrachtet, denn ursprünglich wurde Kubernetes von Google allein entwickelt und basiert auf den Erfahrungen beim Betrieb von Containern mit dem eigenen Cluster-Management-System Borg.
Kubernetes ist die treibende Kraft hinter Platform-as-a-Service (PaaS), wie sich an populären Diensten wie OpenShift Online, AWS Beanstalk oder Google App Engine zeigt. Admins können derartige Angebote dank Kubernetes heute in zahllosen Varianten selbst implementieren, wahlweise auf eigener Hardware, in der Public Cloud oder in der privaten Wolke, zum Beispiel unter Open Stack.
...Der komplette Artikel ist nur für Abonnenten des ADMIN Archiv-Abos verfügbar.