Was ist Container-Orchestrierung?

Container und Microservices revolutionieren die Art und Weise wie neue Anwendungen entwickelt und ausgerollt werden. Doch wie werden diese Anwendungen dann sinnvoll über mehrere Plattformen oder in Cloud-Umgebungen verwaltet? Hier kommt die Container-Orchestrierung ins Spiel.

Die Art wie Software entwickelt wird hat sich in den letzten Jahren stark verändert. Die digitale Transformation zwingt Unternehmen dazu, schnell neue Anwendungen, Erweiterungen und Updates auf den Markt zu bringen. Deshalb geht der Trend in Richtung Microservices. Eine auf dieser Software-Architektur basierte Applikation setzt sich aus einer Vielzahl kleiner, unabhängiger Modul-Services zusammen. Jeder dieser Microservices hat eine dedizierte Aufgabe. Dabei nutzt er eine genau definierte Schnittstelle, um mit den anderen Modulen zu kommunizieren.

Container Whitepaper preview

Download zum Thema

Das Whitepaper "Container" erklärt die Software-Architektur, gibt einen Überblick über die aktuelle Nutzung und zukünftige Entwicklungen.

Jetzt kostenfrei downloaden

Transport im Container

Als „Verpackung“ für die verschiedenen, eigenständigen Microservices dient ein Container. Er enthält die Anwendung inklusive aller Abhängigkeiten wie Bibliotheken und Konfigurationsdateien. Container stellen damit die komplette Laufzeitumgebung einer Applikation in einem einzigen Paket bereit. Mit diesen Containern haben Entwickler die Möglichkeit, Applikationen zwischen verschiedenen Umgebungen hin- und herzuschieben. Oder sie betreiben die Container-basierten Anwendungen zunächst auf einer physikalischen Maschine und später in einer Cloud.

Da sich mehrere Container einen Betriebssystemkern teilen, benötigen sie im Vergleich zu virtuellen Maschinen sehr wenig Ressourcen wie Rechenleistung, Hauptspeicher und Speicherplatz. Auf einen Server passen so beispielsweise sehr viel mehr Container als virtuelle Maschinen.

Container-Orchestrierung: VM vs Container

Mehrere Container teilen sich einen Betriebssystemkern und benötigen daher weniger Ressourcen als virtuelle Maschinen.

Einfache Verwaltung mit Container-Orchestrierung

In Produktivumgebungen bestehen die meisten Anwendungen aus vielen Microservices und mehreren Containern. Diese sind über unterschiedliche virtuelle und physische Hosts verteilt. Sie laufen entweder im eigenen Rechenzentrum oder in Cloud-Umgebungen. Lösungen für die Container-Orchestrierung verwalten solche komplexen Anwendungen, die aus vielen Containern bestehen und auf unterschiedlichen Clustern oder Hosts ausgeführt werden. Systeme für die Orchestrierung von Containern ermöglichen sozusagen eine Automatisierung der Bereitstellung, Verwaltung und Skalierung von Container-basierten Anwendungen.

Container-Orchestrierung Schritt für Schritt

Sehen wir uns die Funktionsweise der Container-Orchestrierung am Beispiel von Kubernetes an. Dieses Open-Source-System zählt heute zu einer der bekanntesten und ausgereiftesten Lösungen für die Container-Orchestrierung. Kubernetes basiert auf einer Master-Slave-Architektur und besteht aus mehreren Komponenten wie Kommandozeile, Web User Interface und APIs. Der Master steuert mit seinen Komponenten die Nodes. Auf den Nodes laufen die Container. Mehrere Container werden in einem Pod zusammengefasst. Aber der Reihe nach…

Container-Orchestrierung: Aufbau Kubernetes

Aufbau Kubernetes. Von Khtan66 – Eigenes Werk, CC-BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=53571935

Master

Der Kubernetes Master ist das System zur Steuerung der Container Cluster. Er verteilt die Container auf den sogenannten Nodes. Der Master stellt sicher, dass alle innerhalb eines Clusters verteilten Systeme richtig konfiguriert sind. Innerhalb des Masters gibt es mehrere Komponenten, um die unterschiedlichen Aufgaben zu verwalten. Eine der wichtigsten ist der API-Server. Er informiert sozusagen alle anderen Komponenten via JSON über eine REST-API. Diese REST-Schnittstelle ermöglicht es anderen internen oder externen Diensten, mit dem Kubernetes Cluster zu kommunizieren. Der Controller Manager verwaltet alle Kontrollmechanismen und kommuniziert mit dem API-Server, um alle Statusmeldungen zu lesen und zu schreiben.

Der Administrator oder Entwickler kommuniziert letztlich über den Master mit den untergeordneten Nodes. Die im Master enthaltenen Komponenten entscheiden automatisch, welcher Node für die vom Administrator angeforderte Aufgabe am besten geeignet ist. Der Master weist daraufhin die entsprechenden Ressourcen zu und legt Pods fest, welche die Aufgabe übernehmen.

Node

Der Kubernetes Node (auch Minion genannt) ist ein dezidierter Server, auf dem die Container gestartet werden. Das kann ein physischer oder ein virtueller Server sein. Auf jedem Node ist eine Container-Laufzeitumgebung installiert – zum Beispiel Docker oder rkt (Rocket ausgesprochen). Kubelet ist für den Status der Nodes sowie die Kommunikation zwischen Node und Master verantwortlich. Dabei übernimmt der Dienst das Starten, Stoppen und gegebenenfalls den Neustart der Container. Zudem sendet er regelmäßige Status-Updates an den Master. Letzterer kann anhand fehlender Statusmeldungen erkennen, ob ein Node fehlerhaft oder nicht erreichbar ist. So kann der Controller Manager dann automatisch die Pods auf einem anderen Node neu starten.

Pod

Als Pod bezeichnet man die Einkapselung eines Containers in einem Node. Aber ein Pod kann auch eine Ansammlung mehrerer Containern innerhalb eines Nodes sein. Die Container innerhalb eines Pods teilen sich Ressourcen, beispielsweise den Speicherplatz, und treten so als eine verwertbare Einheit auf.

Cloud Controller Manager

Ein weiterer Bestandteil der Kubernetes-Architektur ist der Cloud Controller Manager (CCM). Er lief bisher neben den Master-Komponenten wie Controller Manager, API-Server sowie Kubelet. Der CCM wurde dazu konzipiert, neue Cloud-Anbieter einfach und schnell via Plugin in Kubernetes zu integrieren. Das Design wurde jetzt überarbeitet. Die komplette Cloud-abhängige Logik der drei vorherigen Komponenten ist jetzt in einem einzigen Integrationspunkt für die Cloud zusammengefasst. In der Version 1.8 ist der CCM ein alpha-Feature. Aber in den kommenden Releases soll der Cloud Controller Manager die bevorzugte Art und Weise sein, Cloud-Umgebungen in Kubernetes zu integrieren. Dadurch können Cloud-Anbieter ihre eigenen Features unabhängig von den Release-Zyklen der Kubernetes-Kernplattform entwickeln.

Fazit

Lösungen für die Container-Orchestrierung ermöglichen es, komplexe Container-Cluster auf professionelle und effiziente Art zu verwalten. Damit können Container-basierte Anwendungen optimal über unterschiedliche Umgebungen verwaltet werden – von eigenen Rechenzentren bis hin zu Public, Private, Hybrid oder Multi-Clouds.

Container Whitepaper preview

Download zum Thema

Kompaktes Basiswissen rund um das Thema Container und Microservices.

Jetzt kostenlos downloaden

Glossar

JSON – JavaScript Object Notation.

JSON ist ein kompaktes Datenformat, das für den Datenaustausch zwischen Anwendungen genutzt wird.

REST – Representational State Transfer.

REST bezeichnet ein Programmierparadigma für verteilte Systeme, insbesondere Webservices. Es handelt sich um eine Abstraktion der Struktur und des Verhaltens des World Wide Web und hat das Ziel, einen Architekturstil zu schaffen, der die Anforderungen des modernen Web besser darstellt. Dabei unterscheidet sich REST vor allem in der Forderung nach einer einheitlichen Schnittstelle von anderen Architekturstilen.

API – Application Programming Interface.

API ist eine Schnittstelle zur Anwendungsprogrammierung bzw. ein Programmteil, den ein Softwaresystem anderen Programmen zur Anbindung an das System zur Verfügung stellt.

API-Server

In Kubernetes validiert und konfiguriert der API-Server die Daten für die API-Objekte wie beispielsweise Pods oder andere Services.

 

Das könnte Sie auch interessieren