iX 1/2019
S. 106
Wissen
Containerorchestrierung
Aufmacherbild

Containerorchestrierung in der Cloud mit OpenStack Magnum

Konzertmeister

OpenStack Magnum verknüpft Containerorchestrierung und Clouds, indem es Kubernetes-Cluster als native OpenStack-Ressource anbietet. OpenStack Heat orchestriert dabei virtuelle Maschinen und Netzwerkressourcen, um einen vollwertigen Kubernetes-Cluster zur Verfügung zu stellen.

E ine wachsende Zahl von Unternehmen setzt für ihre IT-Infrastruktur auf die Cloud. Die Konsolidierung von Hardware und damit verbundene Kostenersparnisse sowie die einfache und praktisch unbegrenzte Verfügbarkeit virtueller Ressourcen machen verschiedene Angebote von Public-Cloud-Anbietern oder selbst betriebene Private-Cloud-Umgebungen sehr attraktiv. In der Open-Source-Welt ist OpenStack das größte, aber keineswegs das einzige Softwareprojekt, mit dem man eine solche Cloud betreiben kann.

Auf der anderen Seite feiern Cluster Orchestration Engines (COEs) wie das ursprünglich von Google entwickelte Kubernetes (K8s) in den letzten Jahren ihren Siegeszug. Nach der alten Unix-Philosophie, dass ein Programm nur eine Aufgabe übernehmen soll, setzt sich mehr und mehr der Architekturentwurf der Microservices durch. Anstelle großer monolithischer Software werden Dienste in möglichst kleine abgeschlossene Einheiten aufgespalten, die über fest definierte Schnittstellen miteinander kommunizieren. Dieses Konzept passt genau zu Cluster Orchestration Engines, die die einzelnen Dienste in Containern beliebig oft repliziert auf einen Cluster aus Servern verteilen und die Kommunikation unter den Containern und nach außen sicherstellen.

Die Cloud wird angesichts der raschen Entwicklung von Cluster Orchestration Engines bereits von manchen als abgelöst angesehen. Wie man sieht, sind beide Konzepte verwandt, haben aber unterschiedliche Intentionen und können sich hervorragend ergänzen. Die Möglichkeit, einen Kubernetes-Cluster aus virtuellen Maschinen in einer Public Cloud aufzubauen, findet sich auch bei OpenStack.

Master und Minions

Kubernetes ist eine Container Orchestration Engine aus dem Hause Google, die mittlerweile unter der Schirmherrschaft der Cloud Native Computing Foundation (CNCF) weiterentwickelt wird. Mit ihrer Hilfe lassen sich Container nach vorher festgelegter Definition des gewünschten Zustands auf einen Cluster von Nodes verteilen. Dabei sorgt Kubernetes dafür, dass die Container in ausreichender Zahl vorhanden sind, miteinander kommunizieren können und von außen erreichbar sind. Sollten einzelne Container oder ein ganzer Node abstürzen, stellt Kubernetes automatisch den gewünschten Zustand wieder her. Die kleinste verwaltete Einheit sind dabei nicht einzelne Container, sondern sogenannte Pods (englisch Schote, Gehäuse, Herde), die aus mehreren zusammengehörenden Containern bestehen. Sie teilen sich einen gemeinsamen Namensraum und Ressourcen.

Ein Kubernetes-Cluster besteht aus mindestens einem Master und vielen Nodes, auch als Minions bekannt. Der Master ist häufig redundant und auf Hochverfügbarkeit ausgelegt. Er stellt das Gehirn des Clusters dar. Hier laufen der API-Server als zentrale Schnittstelle und die Managerdienste, die permanent den Zustand des Clusters überwachen und gegebenenfalls anpassen. Zusätzlich beherbergt der Master weitere Dienste wie einen Scheduler oder den verteilten Key Value Store etcd, falls dieser nicht separat läuft.