Blog abonnieren

Container und warum Orchestrierung wichtig ist

Container-Orchestrierung und Container im Allgemeinen: Einige von uns haben bereits damit gearbeitet, andere haben vielleicht schon davon gehört, und für einige ist es immer noch Neuland. Wovon spreche ich also und warum sollten Sie sich dafür interessieren? Für diejenigen unter uns, die das Thema noch evaluieren, möchte ich einen kurzen Überblick über die Geschichte der Container-Technologien geben und skizzieren, wo wir uns mit der Container-Orchestrierung befinden.


man-office-tablett-1262637965Auf Basis zielgerichteter Enterprise-Architekturen und erprobter Plattformtechnologien schaffen wir für Sie Wettbewerbsvorteile – von der Konzeption über die Entwicklung bis zum Betrieb und Application Management.

Mehr erfahren


Erster Akt: Geschichte der Container-Technologien

Obwohl Container-Technologien, wie wir sie heute kennen, mit dem Erscheinen von Docker weithin bekannt wurden, haben wir bereits gelernt, dass Container nicht zwangsläufig mit Docker verbunden sind. Im Gegenteil, andere Containerisierungs-Konzepte sind schon viel früher entstanden.

Der chroot-Systemaufruf existiert in Unix bereits seit 1979. Er schränkt den Dateisystemzugriff eines Prozesses auf ein bestimmtes Unterverzeichnis ein und macht das Unterverzeichnis effektiv zum neuen Root-Dateisystem für den Prozess. Dies ist ein ähnliches Konzept, wie Container heute ihr eigenes Root-Dateisystem erhalten. Ein typischer Anwendungsfall war das „chrooting“ extern verfügbarer Dienste wie Apache-Webserver. Im Laufe der Zeit wurde jedoch die Sicherheit zu einem wichtigen Thema.

Im Jahr 2000 stellte FreeBSD Jails zur Verfügung und führte damit die Virtualisierung auf Prozess-Ebene ein, wie wir sie heute von Containern kennen. Jede Jail stellt ein isoliertes Compartment innerhalb desselben Kernels dar und ist damit im Grunde eine separate FreeBSD-Instanz auf demselben Rechner.

Ähnliche Lösungen wurden im Laufe der Zeit für Linux eingeführt, und 2008 wurde LXC Teil des Mainline-Kernels. Im Jahr 2013 betrat Docker die Bühne, zog schnell die Aufmerksamkeit auf sich und machte die Containerisierung populär. Aber warum hat es so lange gedauert?

Häufig genannt wird die Benutzerfreundlichkeit von Docker, die eine schnelle und einfache Einrichtung ermöglicht und die sofortige Ausführung von Anwendungen erlaubt. Dies ist auch auf das Konzept der Anwendungsimages und Registries zurückzuführen. Von Anfang an verfolgte Docker die Idee von fertigen Images, die in einer öffentlichen Registry verfügbar sind und mit einem einzigen Befehl ausgeführt werden können.

Ein weiterer Grund ist das Aufkommen von Microservice-Architekturen und die damit einhergehenden DevOps-Herausforderungen. Mit anderen Worten: Docker kam zum richtigen Zeitpunkt. Das moderne Konzept der Microservices war bereits seit einiger Zeit im Entstehen begriffen, aber um 2013 wurde der Begriff festgeschrieben.

Die Google-Trends zeigen einen Anstieg des Interesses und der Popularität zu einem ähnlichen Zeitpunkt. Ja, wir alle wissen, dass Korrelation nicht gleichbedeutend mit Kausalität ist. Aber ich sehe, dass beides Hand in Hand geht. Für mich ist dies ein wichtiger Faktor, warum Container-Technologien für Anwendungsentwickler und -architekten so interessant geworden sind.

Obwohl Microservices im Wesentlichen eine Architektur "Organized around business capabilities" bedeuten, ist ein Versprechen, das aus technischer Sicht oft gegeben wird, die Skalierbarkeit und Ausfallsicherheit von Microservice-Architekturen bzw. der Microservices selbst. Dies führt uns zum Thema Container-Orchestrierung.

Zweiter Akt: Warum Container-Orchestrierung?

Was ist also der Zweck der Container-Orchestrierung, und was bringt sie uns letztendlich?

Wie wir bereits gesehen haben, ermöglicht Docker die einfache Ausführung von Einzelanwendungen. Wenn Sie eine Microservice-Architektur oder mehrere Anwendungen betreiben und die Vorteile der Skalierbarkeit und Ausfallsicherheit nutzen wollen, können Sie am Ende Hunderte von Containern haben. Sie manuell auszuführen, auf einen bestimmten Rechner oder Knoten zu verteilen, zu überwachen und eventuell zu ersetzen, ist jedoch ein enormer Aufwand.

Orchestrierung versucht, diesen Aufwand zu abstrahieren und wählt die Maschinen aus, auf denen die Container ausgeführt, überwacht und bei Bedarf neu gestartet oder ersetzt werden. Skalierung und Ausfallsicherheit machen einen Lastausgleich auf einer einzelnen Maschine oder auf mehreren Maschinen erforderlich, der ebenfalls übernommen werden kann. Neben dem Lastausgleich kann auch eine automatische Skalierung auf der Grundlage einer definierten Lastmetrik konfiguriert werden.

Je nach Lösung werden viele weitere Aspekte berücksichtigt: die Bereitstellung generischer Gesundheitschecks einzelner Container-Instanzen, die auch angepasst werden können, um spezifisches fehlerhaftes Verhalten einer Instanz zu erkennen, Speichervolumen oder die Verwaltung von Konfigurationen zur Parametrisierung von Container-Images für verschiedene Anwendungsfälle.

Der Begriff „deklarativ“ ist oft zu hören, wenn von Konfiguration die Rede ist. Das bedeutet, dass Sie den beabsichtigten Zustand Ihrer Anwendung definieren und die Orchestrierung ihr Bestes tut, um diesen zu erhalten. Ein Beispiel ist die Neuzuweisung von Containern oder Diensten zu bestimmten Knoten im orchestrierten Cluster.

Dritter Akt: Lösungen

Nachdem wir nun gesehen haben, warum Container-Orchestrierung für Sie von Nutzen sein kann, werfen wir einen kurzen Blick auf einige bekanntere Lösungen, die derzeit auf dem Markt sind.

Docker-Swarm

Bei Docker gibt es zwei Lösungen, zwischen denen, historisch gesehen, unterschieden werden muss: Docker Swarm "Classic" ist eine eigenständige Erweiterung von Docker, deren Entwicklung im Jahr 2014 begann, aber inzwischen eingestellt wurde. Docker Swarm "Mode" ist die Clustering-Lösung, die in die Docker-Engine integriert und daher bereits mit jeder Docker-Installation verfügbar ist. Er bietet die grundlegenden Orchestrierungsfunktionen wie Skalierung und Lastausgleich. Aufgrund seiner Verfügbarkeit kann er für schnelle Setups und Experimente verwendet werden.
Dieses kleine Online-Training bietet Ihnen einen Einstieg in Docker und einige Grundlagen der Orchestrierung mit dem Docker Swarm-Modus: https://cognitiveclass.ai/courses/docker-essentials

Kubernetes

Kubernetes wurde ursprünglich als Googles Lösung für die Container-Orchestrierung entwickelt und ist inzwischen an die CNCF gestiftet worden. Für den produktiven Einsatz ist eine wesentlich anspruchsvollere Einrichtung als der Docker Swarm-Modus erforderlich. Es gibt jedoch Tools, mit denen sich eine lokale Lernumgebung einrichten lässt. Kubernetes führt zusätzliche logische Konzepte zur Strukturierung von Anwendungscontainern in so genannte Pods und Deployments ein. Dies führt zu einer steileren Lernkurve und erfordert eine gewisse zusätzliche Einarbeitung.

Kubernetes-Distributionen und Cloud-Angebote

Es gibt eine Vielzahl unterschiedlicher Kubernetes-Angebote für die On-Premise-Installation und Angebote für den Cloud-Betrieb. Zu nennen sind hier vor allem Rancher und OpenShift sowie Google Kubernetes Engine, Azure Kubernetes Service und Amazon Elastic Kubernetes Service. Sie stellen ihre eigenen Tools und Dienste für die Integration in eine Unternehmensumgebung vor oder ermöglichen die Orchestrierung über mehrere Container-Cluster.
Ich hoffe, diese Einführung bringt etwas Licht ins Dunkel der Container-Orchestrierung, der verschiedenen Themen und Namen, die damit verbunden sind, und macht Sie neugierig, tiefer zu graben. Happy Hacking!


A quick guide to Docker licensing Wie Sie Lizenzkosten bei der Nutzung von Docker Desktop minimieren, lesen Sie in unserem Blogbeitrag: „3-2-1 - lizenzpflichtig” - Die neue Docker-Lizenzierung im Überblick“

Mehr erfahren

 

Artikel teilen:

Weitere interessante Artikel