Alle Blogposts Know-how 9 Minuten Lesezeit

Container Orchestrierung: Was ist Container Orchestrierung und für was lässt sie sich einsetzen?

Christian Lete
Verfasst von
Christian Lete
Veröffentlicht
August 6, 2020
Diesen Blogpost teilen

Virtualisierung, Container und Cloud Computing haben die Entwicklung und den Betrieb moderner Anwendungen grundlegend verändert. Doch wer viele Container verwalten und bereitstellen muss, kommt um die Container Orchestrierung nicht herum, denn es gilt unzählige Prozesse gleichzeitig und ressourcenoptimiert zu managen. Tools wie das Open-Source-basierte Kubernetes stellen mächtige Lösungen zur Orchestrierung einer Container-basierten Umgebung zur Verfügung.

Im folgenden Beitrag erklären wir, was Container Orchestrierung ist, für was man sie einsetzt und wie sie funktioniert. Wir gehen konkret auf die Container Orchestrierung mit Kubernetes ein und stellen Ihnen die nine Managed Google Kubernetes Engine (GKE) vor. Einige Use Cases sollen Ihnen abschliessend den sinnvollen Einsatz der Container Orchestrierung verdeutlichen.

Kurzdefinition der Container Orchestrierung

Bei der Container Orchestrierung handelt es sich um die Automatisierung der Prozesse zur Bereitstellung, Organisation, Verwaltung und Skalierung von Containern. Es entsteht ein dynamisches System, das viele verschiedene Container gruppiert, ihre Verbindungen untereinander managt und ihre Verfügbarkeit sicherstellt. Container Orchestrierung lässt sich in verschiedenen Umgebungen einsetzen. Sie kann Container in einer privaten oder öffentlichen Cloud oder auf On-Premises-Equipment verwalten.

Die Container-Orchestrierung im Detail

Container Orchestrierung ist eng mit dem Cloud Computing und der Bereitstellung von Anwendungen in Form vieler einzelner Microservices verknüpft. Doch wozu wird Container Orchestrierung benötigt und wie funktioniert sie?

Wozu wird Container Orchestrierung benötigt?

Klassische Anwendungen, wie sie in der Vergangenheit entwickelt wurden, waren sogenannte monolithische Anwendungen. Sie stellten alle Funktionen und Services in einer einzigen Programmeinheit mit vielen internen Abhängigkeiten zur Verfügung: 

Quelle: https://cloud.google.com/kubernetes-engine/kubernetes-comic/assets/panel-8.png, Art und Story von Scott McCloud

Diese “Anwendungs-Monster” haben zwar einen beeindruckenden Funktionsumfang, doch sind sie nur mit grossem Aufwand bereitzustellen, zu warten und zu skalieren. Mit den immer schnelleren Prozessen der digitalen Transformation halten diese Anwendungen nicht Schritt. 

Quelle: https://cloud.google.com/kubernetes-engine/kubernetes-comic/assets/panel-3.png, Art und Story von Scott McCloud

Mehr und mehr geht der Trend daher in Richtung Microservices. Anwendungen setzen sich aus vielen kleinen, voneinander unabhängigen Services mit individuellen Aufgaben zusammen. Die Microservices kommunizieren über definierte Schnittstellen miteinander und bilden als Gesamtheit die eigentliche Anwendung.

Quelle: https://cloud.google.com/kubernetes-engine/kubernetes-comic/assets/panel-9.png, Art und Story von Scott McCloud

Jeder dieser Microservices lässt sich einzeln bereitstellen, betreiben, debuggen und updaten, ohne dass der Betrieb der Gesamtanwendung darunter leidet. Die Microservices sind ein entscheidender Schritt hin zu agilen Anwendungen und dem DevOps-Konzept.

Quelle: https://cloud.google.com/kubernetes-engine/kubernetes-comic/assets/panel-10.png, Art und Story von Scott McCloud

Verpackt sind die Microservices in Containern. Die Container stellen eine Art virtualisierte Umgebung zur Verfügung und beinhalten die komplette Laufzeitumgebung inklusive Bibliotheken, Konfigurationen und Abhängigkeiten. Im Vergleich zu vollwertigen virtuellen Maschinen benötigen Container weniger Ressourcen und lassen sich wesentlich schneller starten. Auf einem einzigen physischen oder virtuellen Server sind viele Container parallel betreibbar. Zusammen mit den Containern können die Microservices einfach und schnell zwischen verschiedenen Umgebungen verschoben werden. Containerisierte Microservices bilden die Basis für Cloud-native Anwendungen.

Komplexe Anwendungen bestehen aus vielen Microservices und Containern, die auf unterschiedlichen Systemen und in verschiedenen Umgebungen betrieben werden. Die manuelle Verwaltung einer grossen Zahl an Containern stellt für jeden Administrator eine Herausforderung dar. Abhilfe für dieses Problem schafft die Container Orchestrierung, wie sie beispielsweise mit Kubernetes möglich ist. Sie automatisiert die Prozesse der Bereitstellung, Organisation, Verwaltung und Skalierung der Container.

Quelle: https://cloud.google.com/kubernetes-engine/kubernetes-comic/assets/panel-20.png, Art und Story von Scott McCloud

Welche Aufgaben erfüllt die Container Orchestrierung?

Container Orchestrierung bietet dem Benutzer die Möglichkeit, alle Prozesse rund um die vielen einzelnen Container zu steuern, zu koordinieren und zu automatisieren. Die Container Orchestrierung übernimmt unter anderem folgende Aufgaben:

  • Bereitstellen der Container
  • Konfigurieren der Container
  • Zuweisen der Ressourcen
  • Gruppieren der Containern
  • Starten und Stoppen der Container
  • Überwachen des Container-Status
  • Updaten der Containern
  • Failover einzelner Container
  • Skalieren der Container
  • Sicherstellung der Kommunikation der Container

Beschrieben sind die Container und ihre Abhängigkeiten in Konfigurationsdateien. Über diese Dateien plant die Container Orchestrierung die Bereitstellung und den Betrieb der Container.

Container-Orchestrierung mit Kubernetes

Kubernetes, oft mit K8s abgekürzt, ist eine Open-Source-basierte Lösung zur Orchestrierung von Containern. Sie wurde ursprünglich von Google entwickelt und 2014 veröffentlicht. Im Jahr 2015 spendete Google das Kubernetes-Projekt an die Cloud Native Computing Foundation (CNCF). Die CNCF betreut zahlreiche weitere Projekte aus dem Cloud-Native-Computing-Umfeld.

Quelle: https://cloud.google.com/kubernetes-engine/kubernetes-comic/assets/panel-21.png, Art und Story von Scott McCloud

Obwohl es sich um eine noch junge Software handelt, regiert Kubernetes das Ökosystem der Orchestratoren. Kubernetes kann Container steuern, betreiben und verwalten, benötigt aber eine Container-Engine wie Docker zur Bereitstellung der eigentlichen Container-Laufzeitumgebung. Im Vergleich zur mittlerweile in Docker integrierten Container Orchestrierung mit Docker Swarm bietet Kubernetes einen wesentlich grösseren Funktionsumfang.

Wie funktioniert Kubernetes?

Kubernetes kennt die folgenden Grundelemente:

  • Pods
  • Nodes (früher Minions)
  • Cluster
  • Master-Nodes

Innerhalb der Kubernetes-Architektur stellt ein Pod die kleinste Einheit dar. Ein Pod kann ein oder mehrere Container enthalten.

Quelle: https://cloud.google.com/kubernetes-engine/kubernetes-comic/assets/panel-26.png, Art und Story von Scott McCloud

Einzelne Pods oder Gruppen von Pods werden auf einem Node betrieben. Ein Node ist eine physische oder virtuelle Maschine. Auf den Nodes ist eine Container-Laufzeitumgebung wie Docker installiert.

Quelle: https://cloud.google.com/kubernetes-engine/kubernetes-comic/assets/panel-27.png, Art und Story von Scott McCloud

Mehrere Nodes lassen sich zu einem Cluster zusammenfassen. Cluster bestehen aus mindestens einem Master-Node und mehreren Worker-Nodes. Die Master-Nodes haben die Aufgabe, Befehle des Administrators entgegenzunehmen und die Worker-Nodes mit ihren Pods zu steuern.

Quelle: https://cloud.google.com/kubernetes-engine/kubernetes-comic/assets/panel-28.png, Art und Story von Scott McCloud

Der Master entscheidet, welcher Node für eine bestimmte Aufgabe am besten geeignet ist, legt Pods fest, die auf dem Node laufen und weist die Ressourcen zu. Die Master-Nodes erhalten regelmässig Status-Updates, mit denen sich der Betrieb der Nodes überwachen lässt. Bei Bedarf können Pods mit ihren Containern automatisch auf anderen Nodes gestartet werden.

nine Managed Google Kubernetes Engine (GKE)

Kubernetes ist mächtig und bietet einen riesigen Funktionsumfang, hat aber auch eine steile Lernkurve. Es sind entsprechendes Know-how und Ressourcen für die Container Orchestrierung mit Kubernetes notwendig. Mit der nine Managed Google Kubernetes Engine (GKE) erhalten Sie eine voll gemanagte Umgebung, auf der Sie Ihre Container direkt bereitstellen und orchestrieren. Um den Betrieb der Plattform kümmert sich nine. 

Was ist die nine Managed GKE und wie funktioniert sie?

Die nine Managed GKE ist ein Managed-Service-Produkt. Sie basiert auf der Google Kubernetes Engine (GKE), eine Umgebung zum Bereitstellen, Managen und Skalieren von containerisierten Anwendungen auf der Google Infrastruktur. Die Container laufen auf einem sicheren, einfach skalierbaren Cluster, bestehend aus mehreren Rechnern. Nine stellt zusätzlich zu Google Kubernetes weitere Features zur Verfügung und übernimmt den kompletten Betrieb des Clusters. Es werden regelmässige Backups durchgeführt, externe Services integriert sowie Speicher-Management-, Überwachungs- und Replizierungsaufgaben erledigt. Sie können sich ganz auf die Entwicklung Ihrer Anwendungen und die Orchestrierung der Container auf der gemanagten Plattform konzentrieren.

Alle Daten sind sicher in der Schweiz gespeichert, denn es handelt sich um einen Schweizer Service. Gleichzeitig bietet sich dank der weltweiten Google-Infrastruktur die Möglichkeit der globalen Skalierung.

Konkrete Use Cases

Haben Sie Anwendungen, die in Microservices aufgeteilt sind, oder möchten Sie bestehende Anwendungen Cloud-native umgestalten, dann können Sie die containerisierten Microservices auf einem Cluster mit nine Managed GKE laufen lassen. Nine sorgt für den Betrieb des Clusters. Sie konzentrieren sich voll auf die Entwicklung und das Management der Container. Durch die frei werdenden Ressourcen lassen sich Budget-Engpässe beseitigen, Rückstände in der Applikationsentwicklung aufholen oder technische Defizite bei den vorhandenen Applikationen beseitigen. Im Folgenden einige Use Cases, die den sinnvollen Einsatz der Container Orchestrierung verdeutlichen.

Agile, dynamisch wachsende Applikationen eines Startups

Startups mit neuen Geschäftsideen benötigen agile Anwendungen. Funktionen müssen teilweise im Tagesrhythmus verändert, erweitert oder angepasst werden. Stellen sich erste Erfolge ein, wachsen die Anforderungen hinsichtlich der Ressourcen und der Skalierung. Mit modernen, containerisierten Anwendungen decken Startups alle Anforderungen an agile, dynamisch wachsende Applikationen ab. Durch die Aufteilung der Applikation in viele verschiedene Microservices und die Bereitstellung über Container ist das Ändern oder Skalieren einzelner Funktionen möglich, ohne dass die Gesamtanwendung davon betroffen ist.

Anwendungen mit hoher Verfügbarkeit

Viele Unternehmen sind auf eine hohe Verfügbarkeit ihrer geschäftskritischen Anwendungen angewiesen. Schon kurze Ausfälle können zu immensen Umsatzeinbussen oder zu einem Imageverlust führen. Branchen, in denen hohe Anforderungen an die Verfügbarkeit bestimmter Anwendungen bestehen, sind beispielsweise das produzierende Gewerbe oder das Finanzwesen. Bei einer modernen Anwendung, bestehend aus containerisierten Microservices, kümmert sich die Container Orchestrierung um den unterbrechungsfreien Betrieb. Fallen beispielsweise einzelne Rechner aus, werden die betroffenen Container automatisch auf anderen Rechnern einer redundant gestalteten Cloud-Umgebung gestartet. Ein manuelles Eingreifen ist nicht erforderlich. Selbst beim Aktualisieren oder Skalieren der Services ist die grundsätzliche Betriebsbereitschaft der Gesamtanwendung nicht beeinträchtigt.

Konzentration auf die Anwendungsentwicklung – keine Ressourcen für den Betrieb

Meist sind die finanziellen, personellen oder fachlichen Ressourcen beschränkt. Werden Anwendungen auf Basis einer voll gemanagten, containerisierten und cloudbasierten Umgebung wie der nine Managed GKE bereitgestellt, werden Ressourcen frei, da typische Betriebsaufgaben entfallen. Diese Ressourcen lassen sich für die Anwendungsentwicklung oder das Ausmerzen technischer Mängel bestehender Anwendungen einsetzen. Das Unternehmen konzentriert sich mehr auf sein Kerngeschäft und die Erfolgsaussichten steigen.

Die nine cloud navigators sind Ihr Partner für Cloud-native Anwendungen und Container Orchestrierung

Möchten Sie von den Vorteilen des Cloud Computings und Cloud-nativer Anwendungen profitieren und Ihre Time-to-Market beschleunigen, dann sind die nine cloud navigators der richtige Partner für Sie. Mit der nine Managed GKE sind Ihre Daten sicher in der Schweiz gespeichert. Gleichzeitig bietet sich Ihnen die Möglichkeit der globalen Skalierbarkeit der Google Cloud. Sie müssen sich nicht selbst mit der Komplexität des Managements und des Betriebs eines Clusters auseinandersetzen.

Unsere Kubernetes-Experten helfen Ihnen bei der Container Orchestrierung und stellen Ihnen eine voll gemanagte Umgebung zur Verfügung. Gerne beantworten wir Ihre Fragen oder bringen Ihnen unsere gemanagte Cloud-Lösung näher.