Suchen

Die Konsolidierung per Cloud-Computing

Container Orchestration Tools im Vergleich

Seite: 2/2

Firmen zum Thema

Apache Mesos

„Mesos “ist ein Cluster-Management-Tool, das ursprünglich für Twitter und dessen Infrastruktur entwickelt und dann unter eine Apache Open-Source-Lizenz gestellt wurde. Mesos wird heute von bekannten Unternehmen wie eBay und Airbnb verwendet. Allerdings ist Apache Mesos kein spezielles oder dediziertes Werkzeug zur Container-Orchestrierung.

Mesos lässt sich allgemein für das Clustering von VMs, Containern oder physischen Maschinen verwenden, kommt aber vorrangig beim Betrieb von Clustern für das Ausführen von Big-Data-Workloads zum Einsatz. Allerdings verfügt Mesos über ein sehr effizientes Framework mit der Bezeichnung „Marathon“, das unter anderem auch das Bereitstellen und Verwalten von Containern in einem Mesos-Cluster erlaubt, so dass man beispielsweise einen Kubernetes-Cluster auf einem Mesos-Cluster ausführen kann.

Google Kubernetes

Kubernetes ist ein Open-Source-Cluster-Manager. Er wurde ursprünglich von Google entwickelt, später aber der ebenfalls von Google initiierten Cloud Native Computing Foundation übergeben. Allgemein kann Kubernetes für ein automatisches Bereitstellen und für die Skalierung von Container-Anwendungen verwendet werden, wobei Kubernetes stets mehrere Container in logische Teile zusammenfasst, was die Verwaltung und die Übersicht vereinfacht.

Kubernetes besitzt einen hervorragenden Scheduler und Ressourcen-Manager. Dieser erlaubt es, Container auf effiziente und hochverfügbare Weise bereitzustellen. Kubernetes ist für viele Organisationen heute das Defacto-Container-Orchestrierungswerkzeug. Häufig wird Kubernetes als Konkurrenzprodukt zum nativen Container-Cluster-Manager des Docker-Projektes angesehen (Docker Swarm). Dabei wird oft übersehen, dass es Kubernetes etwas länger gibt als Docker Swarm.

So bot Kubernetes in der Anfangszeit der Container-Orchestrierung Lösungen für viele Probleme, die Docker selbst seinerzeit noch nicht bedienen konnte. Nur mit Kubernetes war es seinerzeit möglich, Container ohne Datenverlust zu bewegen, Netzwerke zwischen Containern zu erstellen oder einen Load Balancer zu verwenden. Generell ist es aber verhältnismäßig einfach, mit Kubernetes zu starten, wenn man zum Beispiel „Google Kubernetes Engine“ (GKE) in der Cloud nutzt.

Diese Vorteile erkauft man sich jedoch mit dem Nachteil, dass Kubernetes einen komplizierteren Ansatz verfolgt als Docker mit komplett anderer CLI, anderen APIs und eigenen YAML-Definitionen. Daher ist es mit Kubernetes nicht möglich, das Docker CLI oder Docker Compose für die Container-Definition zu verwenden. Wer das Konzept von Kubernetes verstehen will, muss dieses und das Zusammenarbeiten der einzelnen Komponenten vom Prinzip her durchdringen. So besteht ein Kubernetes-Cluster aus einem Master Node und mehreren Worker Nodes.

eBook „Container-Orchestrierung“

Container-OrchestrierungContainer-Orchestrierung gewinnt in den letzten Jahren im DevOps-Bereich an Bedeutung. Dieses eBook behandelt die wichtigsten Fragen rund um das Thema und stellt einige Anbieter in einen Vergleich miteinander.(PDF | ET 31.10.2019)


eBook herunterladen »

Der Master Node ist die Kontrollzentrale, von der aus die Container verwaltet werden. In Produktiv-Setups hat man aus Gründen der Ausfallsicherheit meist mehrere Master. Die Kommunikation mit dem Master erfolgt über ein Control-Layer via REST-API mit umfangreichen Funktionen. Der Master Node enthält weitere wichtige Komponenten wie KV-Store (z. B. etcd), Controller-Manager, Scheduler und Kubelet, wobei Kubelet und etcd direkt mit dem API-Server kommunizieren.

Den „etcd“-Layer kann man sich als eine Art Datenbank vorstellen, in der die Konfigurationen der einzelnen Cluster gespeichert sind. Kubelet ist eine Verwaltungsinstanz für die Pods, die auf den Hosts laufen. Der Scheduler sorgt dafür, dass Container auf den richtigen Systemen innerhalb eines Clusters landen. Dazu entscheidet er eigenständig über die Verteilung der Pods abhängig vom Workload. Der Controller-Manager überwacht die von der API ausgehenden Prozesse und platziert Workloads auf den Nodes.

Docker Swarm

Das stetig wachsende Docker-Ökosystem umfasst inzwischen Werkzeuge von der Entwicklung bis zur Bereitstellung von Produktionssystemen. Darin fügt sich seit einiger Zeit auch Docker Swarm für die Cluster-Verwaltung ein. So kann der Nutzer eine Komposition aus Docker-Compose-, Swarm- und Overlay-Netzwerk und einem guten Service-Discovery-Tool wie „etcd“ oder „consul“ ebenfalls zum Verwalten eines Clusters von Docker-Containern verwenden.

Im Vergleich zu den etablierten Open Source-Container-Cluster-Management-Tools befindet sich Docker Swarm immer noch in einem Reifeprozess in Bezug auf die vorhandenen und noch geplanten Funktionalitäten. Da das Docker-Projekt aber über ausreichend Manpower verfügt, wird es wohl nicht mehr lange dauern, bis Docker Swarm zu den anderen Lösungen aufschließt oder sie gar überflügelt.

Container in der Cloud

Sehr populär sind zunehmend auch der Betrieb und das Management von Container-Clustern in der Cloud. Allein AWS bietet hier mit „ECS, EKS“ und „Fargate“ gleich drei Services an, wobei auch hier im Falle von EKS Kubernetes mit im Spiel ist – genau wie bei Googles Cloud Kubernetes Engine (CKE), was kaum überrascht. Ebenfalls von Bedeutung sind in dieser Kategorie „Azure Kubernetes Service (AKS)“ oder „Red Hat Openshift Online“.

Doch auch wer Openshift Enterprise oder „Origin“ in der eigenen Private Cloud einsetzt, kommt an Kubernetes kaum vorbei. Was Container-Cluster in der Cloud angeht, soll auch der Kubernetes-Service von Digital Ocean nicht unerwähnt bleiben. Mit diesem Service bietet Digital Ocean einen verwalteten Kubernetes-Dienst für die Bereitstellung von Container-basierten Anwendungen an.

Fazit

Kubernetes ist vorrangig auf Skalierbarkeit, Verfügbarkeit und Sicherheit in sehr großen Clustern ausgelegt. Hier stehen vor allem Zuverlässigkeit und Flexibilität im Vordergrund. Zudem bietet Kubernetes maximale Freiheit bei der Wahl des Betriebssystems. Bei komplexen Anwendungen in einem großem bis sehr großen Maßstab hat Kubernetes damit die Nase vorn vor Docker Swarm. Den Vorteil erkauft man sich mit der Komplexität bei Aufbau und Wartung eines Clusters über eine komplett eigene API.

In mittleren bis kleineren Cluster-Umgebungen punktet Docker Swarm durch die einfache Verwendbarkeit und die native Unterstützung aller Docker-Befehle. Darüber hinaus kann Kubernetes auch unter anderen Blickwinkeln betrachtet und für andere Aufgaben eingesetzt werden. Eigentlich konkurrieren die drei Lösungen überhaupt nicht miteinander, da sie jeweils auf komplett anderen Abstraktionsebenen arbeiten und damit völlig unterschiedliche Zielgruppen adressieren.

Dieser Beitrag stammt aus dem eBook „Container-Orchestrierung“.

Artikelfiles und Artikellinks

(ID:46299267)

Über den Autor

Dipl. -Ing. Thomas Drilling

Dipl. -Ing. Thomas Drilling

IT-Consultant, Trainer, Freier Journalist