14 Container-Orchestrierungstools für DevOps

Betrachten wir einige der gängigen Werkzeuge zur Container-Orchestrierung, die auf dem Markt verfügbar sind.

Was bedeutet Container-Orchestrierung?

Container-Plattformen, wie beispielsweise Docker, sind heutzutage sehr populär, um Applikationen basierend auf einer Microservices-Architektur zu verpacken. Container lassen sich hochgradig skalieren und bei Bedarf neu erstellen. Dies ist zwar nützlich für wenige Container, doch stellen Sie sich vor, Sie haben Hunderte davon.

Es wird extrem schwierig, den Lebenszyklus und die Verwaltung von Containern zu handhaben, wenn deren Anzahl dynamisch mit dem Bedarf steigt.

Die Container-Orchestrierung löst dieses Problem, indem sie die Planung, Bereitstellung, Skalierung, Lastverteilung, Verfügbarkeit und Vernetzung von Containern automatisiert. Container-Orchestrierung ist also die Automatisierung und das Management des gesamten Lebenszyklus von Containern und Diensten.

Es handelt sich um einen Prozess zur Verwaltung und Organisation mehrerer Container und Microservices-Architekturen im großen Maßstab.

Glücklicherweise gibt es viele Werkzeuge für die Container-Orchestrierung auf dem Markt.

Lassen Sie uns diese genauer betrachten!

Kubernetes

Sie haben es sicher schon geahnt, oder?

Kubernetes ist eine Open-Source-Plattform, die ursprünglich von Google entwickelt wurde und nun von der Cloud Native Computing Foundation verwaltet wird. Kubernetes unterstützt sowohl deklarative Konfiguration als auch Automatisierung. Es kann helfen, die Bereitstellung, Skalierung und Verwaltung von containerisierten Workloads und Diensten zu automatisieren.

Bild von Kubernetes.io

Die Kubernetes-API unterstützt die Kommunikation zwischen Benutzern, Clusterkomponenten und externen Drittanbieter-Komponenten. Kubernetes-Steuerungsebene und -Knoten laufen auf einer Gruppe von Knoten, die gemeinsam den Cluster bilden. Der Anwendungs-Workload besteht aus einem oder mehreren Pods, die auf Worker-Knoten ausgeführt werden. Die Steuerungsebene verwaltet diese Pods und Worker-Knoten.

Unternehmen wie Babylon, Booking.com und AppDirect setzen Kubernetes in großem Umfang ein.

Funktionen:

  • Dienstentdeckung und Lastverteilung
  • Speicherorchestrierung
  • Automatisierte Rollouts und Rollbacks
  • Horizontale Skalierung
  • Geheimnis- und Konfigurationsmanagement
  • Selbstheilung
  • Batch-Ausführung
  • IPv4/IPv6-Dual-Stack
  • Automatische Container-Verpackung

Möchten Sie Kubernetes lernen? Hier sind einige Lernressourcen.

OpenShift

Red Hat bietet OpenShift als Container-Plattform als Service (PaaS) an. Es hilft, Anwendungen auf sicheren und skalierbaren Ressourcen in hybriden Cloud-Umgebungen zu automatisieren. Es bietet Plattformen der Enterprise-Klasse für die Erstellung, Bereitstellung und Verwaltung von containerisierten Anwendungen.

Bild von Openshift

Es basiert auf Red Hat Enterprise Linux und der Kubernetes-Engine. OpenShift bietet verschiedene Funktionen für die Verwaltung von Clustern über eine UI und eine CLI. Red Hat bietet OpenShift in zwei weiteren Varianten an:

  • OpenShift Online – als Software as a Service (SaaS) angeboten
  • OpenShift Dedicated – als Managed Service angeboten

OpenShift Origin (Origin Community Distribution) ist ein Open-Source-Upstream-Community-Projekt, das in der OpenShift Container Platform, OpenShift Online und OpenShift Dedicated verwendet wird.

Nomad

Nomad ist ein einfacher, flexibler und benutzerfreundlicher Workload Orchestrator zur Bereitstellung und Verwaltung von Containern sowie nicht-containerisierten Anwendungen in großem Umfang, sowohl vor Ort als auch in der Cloud. Nomad läuft als einzelne Binärdatei mit geringem Ressourcenverbrauch (35 MB) und wird unter macOS, Windows und Linux unterstützt.

Entwickler verwenden deklarative Infrastruktur-als-Code (IaC), um ihre Anwendungen bereitzustellen und zu definieren, wie eine Anwendung bereitgestellt werden soll. Nomad stellt Anwendungen automatisch nach Ausfällen wieder her.

Bild von Nomad

Nomad orchestriert Anwendungen jeder Art (nicht nur Container). Es bietet erstklassige Unterstützung für Docker, Windows, Java, VMs und mehr.

Funktionen:

  • Einfach & Zuverlässig
  • Modernisierung bestehender Anwendungen ohne Umschreiben
  • Einfache Föderation im großen Maßstab
  • Bewährte Skalierbarkeit
  • Multi-Cloud mit Leichtigkeit
  • Native Integrationen mit Terraform, Consul und Vault

Docker Swarm

Docker Swarm verwendet ein deklaratives Modell. Sie können den gewünschten Zustand des Dienstes definieren, und Docker sorgt dafür, dass dieser Zustand erhalten bleibt. Docker Enterprise Edition hat Kubernetes mit Swarm integriert. Docker bietet jetzt Flexibilität bei der Wahl der Orchestrierungs-Engine. Die Docker-Engine-CLI wird verwendet, um einen Swarm von Docker-Engines zu erstellen, in denen Anwendungsdienste bereitgestellt werden können.

Bild von Docker

Docker-Befehle werden zur Interaktion mit dem Cluster verwendet. Computer, die dem Cluster beitreten, werden als Knoten bezeichnet, und der Swarm-Manager kümmert sich um die Aktivitäten des Clusters.

Docker Swarm besteht aus zwei Hauptkomponenten:

  • Manager: Manager-Knoten weisen Worker-Knoten im Schwarm Aufgaben zu. Ein Leader wird basierend auf einem Raft-Konsensalgorithmus gewählt. Der Leader kümmert sich um alle Swarm-Management- und Aufgabenorchestrierungsentscheidungen für den Swarm.
  • Worker-Knoten: Worker-Knoten empfangen Aufgaben vom Manager-Knoten und führen sie aus.

Funktionen:

  • In Docker Engine integriertes Cluster-Management
  • Dezentrales Design
  • Deklaratives Dienstmodell
  • Skalierung
  • Gewünschte Status-Abstimmung
  • Multi-Host-Netzwerk
  • Dienstentdeckung
  • Lastverteilung
  • Standardmäßig sicher
  • Rollierende Updates

Docker Compose

Docker Compose dient dazu, Multi-Container-Anwendungen zu definieren und auszuführen, die zusammenarbeiten. Docker Compose beschreibt Gruppen von miteinander verbundenen Diensten, die Softwareabhängigkeiten gemeinsam nutzen und zusammen orchestriert und skaliert werden.

Sie können eine YAML-Datei (Dockerfile) verwenden, um die Dienste Ihrer Anwendung zu konfigurieren. Anschließend erstellen und starten Sie mit einem `docker-compose up`-Befehl alle Dienste aus Ihrer Konfiguration.

Eine `docker-compose.yml` Datei kann etwa so aussehen:

version: '3'
volumes:
  app_data:
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
      - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data

  kibana:
    depends_on:
      - elasticsearch
    image: docker.elastic.co/kibana/kibana:6.8.0
    ports:
      - 5601:5601
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
  app:
    depends_on:
      - elasticsearch
    image: asadali08527/app:latest
    ports:
      - 8080:8080
    volumes:
      - app_data:/var/lib/app/

Sie können Docker Compose verwenden, um den App-Code in mehrere unabhängig voneinander laufende Dienste zu integrieren, die über ein internes Netzwerk kommunizieren. Das Tool bietet eine CLI zur Verwaltung des gesamten Lebenszyklus Ihrer Anwendungen. Docker Compose konzentrierte sich traditionell auf Entwicklungs- und Test-Workflows, fokussiert aber nun auf eher produktionsorientierte Funktionen.

Die Docker Engine kann eine eigenständige Instanz sein, die mit Docker Machine bereitgestellt wird, oder ein vollständiger Docker Swarm-Cluster.

Funktionen:

  • Mehrere isolierte Umgebungen auf einem einzelnen Host
  • Speichern von Volume-Daten beim Erstellen von Containern
  • Erstellen nur geänderte Container neu
  • Variablen und das Verschieben einer Komposition zwischen Umgebungen

Minikube

Minikube ermöglicht es Benutzern, Kubernetes lokal auszuführen. Mit Minikube können Sie Anwendungen lokal in einem Kubernetes-Cluster mit einem einzelnen Knoten auf Ihrem PC testen. Minikube hat eine integrierte Unterstützung für das Kubernetes Dashboard.

Minikube führt die neueste stabile Version von Kubernetes aus und unterstützt die folgenden Funktionen:

  • Lastverteilung
  • Multi-Cluster
  • Persistente Volumes
  • Knotenports
  • ConfigMaps und Secrets
  • Container-Laufzeit: Docker, CRI-O und Containerd
  • CNI (Container Network Interface) aktivieren

Marathon

Marathon ist für Apache Mesos gedacht und kann Apps und Frameworks orchestrieren.

Apache Mesos ist ein Open-Source-Cluster-Manager. Mesos ist ein Projekt von Apache, das sowohl containerisierte als auch nicht-containerisierte Workloads ausführen kann. Die Hauptkomponenten eines Mesos-Clusters sind Mesos-Agentenknoten, Mesos-Master, ZooKeeper und Frameworks. Frameworks koordinieren mit dem Master, um Aufgaben auf den Agentenknoten zu planen. Benutzer interagieren mit dem Marathon-Framework, um Jobs zu planen.

Der Marathon-Planer verwendet ZooKeeper, um den aktuellen Master für die Einreichung von Aufgaben zu finden. Der Marathon-Scheduler und der Mesos-Master haben jeweils einen sekundären Master im Einsatz, um eine hohe Verfügbarkeit zu gewährleisten. Clients interagieren mit Marathon über die REST-API.

Funktionen:

  • Hohe Verfügbarkeit
  • Zustandsbehaftete Apps
  • Schöne und leistungsstarke Benutzeroberfläche
  • Einschränkungen
  • Dienstentdeckung und Lastverteilung
  • Gesundheitsprüfungen
  • Ereignis-Abonnement
  • Metriken
  • REST-APIs

Cloudify

Cloudify ist ein Open-Source-Cloud-Orchestrierungstool für die Bereitstellungsautomatisierung und das Lebenszyklusmanagement von Containern und Microservices. Es bietet Funktionen wie Cluster on Demand, automatische Reparatur und Skalierung auf Infrastrukturebene. Cloudify kann die Containerinfrastruktur verwalten und die Dienste orchestrieren, die auf Containerplattformen ausgeführt werden.

Es lässt sich problemlos in Docker und Docker-basierte Container-Manager integrieren, einschließlich:

  • Docker
  • Docker Swarm
  • Docker Compose
  • Kubernetes
  • Apache Mesos

Cloudify kann beim Erstellen, Reparieren, Skalieren und Abbauen von Container-Clustern helfen. Die Container-Orchestrierung ist entscheidend für die Bereitstellung einer skalierbaren und hochverfügbaren Infrastruktur, auf der Container-Manager ausgeführt werden können. Cloudify bietet die Möglichkeit, heterogene Dienste plattformübergreifend zu orchestrieren. Sie können Anwendungen über die CLI und den Cloudify Manager bereitstellen.

Rancher

Rancher ist eine Open-Source-Plattform, die Container-Orchestrierung mit der Bezeichnung Cattle verwendet. Sie ermöglicht es Ihnen, Orchestrierungsdienste wie Kubernetes, Swarm und Mesos zu nutzen. Rancher stellt die Software bereit, die zum Verwalten von Containern erforderlich ist, sodass Unternehmen Containerdienstplattformen nicht von Grund auf neu erstellen müssen, indem sie verschiedene Open-Source-Technologien verwenden.

Rancher 2.x ermöglicht die Verwaltung von Kubernetes-Clustern, die auf den vom Kunden angegebenen Anbietern laufen.

Die ersten Schritte mit Rancher bestehen aus zwei Schritten:

Vorbereitung eines Linux-Hosts

Bereiten Sie einen Linux-Host mit 64-Bit-Ubuntu 16.04 oder 18.04 (oder einer anderen unterstützten Linux-Distribution) und mindestens 4 GB RAM vor. Installieren Sie eine unterstützte Version von Docker auf dem Host.

Starten des Servers

Um Rancher zu installieren und auszuführen, führen Sie den folgenden Docker-Befehl auf Ihrem Host aus:

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

Die Rancher-Benutzeroberfläche ermöglicht die Verwaltung von Tausenden von Kubernetes-Clustern und -Knoten.

Containership

Containership ermöglicht die Bereitstellung und Verwaltung einer Multi-Cloud-Kubernetes-Infrastruktur. Es ist flexibel und kann mit einem einzigen Tool in öffentlichen, privaten Cloud- und On-Premise-Umgebungen betrieben werden. Es ermöglicht die Bereitstellung, Verwaltung und Überwachung Ihrer Kubernetes-Cluster über alle großen Cloud-Anbieter hinweg.

Containership wird mit Cloud-nativen Tools wie Terraform für die Bereitstellung, Prometheus für die Überwachung und Calico für das Netzwerk- und Richtlinienmanagement erstellt. Es basiert auf Vanilla Kubernetes. Die Containership-Plattform bietet ein intuitives Dashboard sowie eine leistungsstarke REST-API für komplexe Automatisierung.

Funktionen:

  • Multicloud-Dashboard
  • Audit-Protokolle
  • GPU-Instanzunterstützung
  • Unterbrechungsfreie Upgrades
  • Planbare Master
  • Integrierte Metriken
  • Echtzeitprotokollierung
  • Bereitstellungen ohne Ausfallzeiten
  • Unterstützung für persistenten Speicher
  • Unterstützung für private Registrierungen
  • Workload-Autoscaling
  • SSH-Schlüsselverwaltung

AZK

AZK ist ein Open-Source-Orchestrierungstool für Entwicklungsumgebungen, das auf einer Manifestdatei (`Azkfile.js`) basiert. Es hilft Entwicklern, häufig verwendete Tools für die Entwicklung von Webanwendungen mit verschiedenen Open-Source-Technologien zu installieren, zu konfigurieren und auszuführen.

AZK verwendet Container anstelle von virtuellen Maschinen. Container sind wie virtuelle Maschinen, jedoch mit besserer Leistung und geringerem Verbrauch an physischen Ressourcen.

`Azkfile.js`-Dateien können wiederverwendet werden, um neue Komponenten hinzuzufügen oder neue von Grund auf neu zu erstellen. Sie können gemeinsam genutzt werden, was eine vollständige Parität zwischen den Entwicklungsumgebungen auf den Rechnern verschiedener Programmierer gewährleistet und die Wahrscheinlichkeit von Fehlern während der Bereitstellung verringert.

GKE

GKE bietet eine vollständig verwaltete Lösung für die Orchestrierung von Containeranwendungen auf der Google Cloud Platform. GKE-Cluster werden von Kubernetes unterstützt. Sie können über die Kubernetes-CLI mit Clustern interagieren. Mit Kubernetes-Befehlen lassen sich Anwendungen bereitstellen und verwalten, Verwaltungsaufgaben ausführen, Richtlinien festlegen und den Status bereitgestellter Workloads überwachen.

Bild von GCP

Erweiterte Verwaltungsfunktionen von Google Cloud sind auch mit GKE-Clustern verfügbar, wie z. B. Load-Balancing von Google Cloud, Knotenpools, automatische Knotenskalierung, automatische Upgrades, automatische Knotenreparatur, Protokollierung und Überwachung mit der Operations Suite von Google Cloud.

Google Cloud bietet CI/CD-Tools, mit denen Sie Anwendungscontainer erstellen und bereitstellen können. Sie können Cloud Build verwenden, um Container-Images (z. B. Docker) aus einer Vielzahl von Quellcode-Repositorys zu erstellen, und die Container Registry, um Ihre Container-Images zu speichern.

GKE ist eine unternehmenstaugliche Lösung mit vorgefertigten Bereitstellungsvorlagen.

Interessiert, GKE kennenzulernen? Schauen Sie sich diesen Anfängerkurs an.

AKS

AKS ist ein vollständig verwalteter Kubernetes-Dienst, der von Azure angeboten wird und Serverless Kubernetes, Sicherheit und Governance bietet. AKS verwaltet Ihren Kubernetes-Cluster und ermöglicht Ihnen die einfache Bereitstellung containerisierter Anwendungen. AKS konfiguriert automatisch alle Kubernetes-Master und -Knoten. Sie müssen lediglich die Agentenknoten verwalten und warten.

Bild von Azure

AKS ist kostenlos; Sie zahlen nur für die Agentenknoten innerhalb Ihres Clusters, nicht für die Master. Sie können einen AKS-Cluster im Azure-Portal oder programmgesteuert erstellen. Azure unterstützt auch zusätzliche Funktionen wie erweiterte Netzwerke, Azure Active Directory-Integration und Überwachung mit Azure Monitor.

AKS unterstützt auch Windows Server-Container. Die Leistung des Clusters und der bereitgestellten Anwendungen kann mit Azure Monitor überwacht werden. Protokolle werden in einem Azure Log Analytics-Arbeitsbereich gespeichert.

AKS ist als Kubernetes-konform zertifiziert.

AWS EKS

AWS EKS ist ein vollständig verwalteter Kubernetes-Dienst. Mit AWS können Sie Ihren EKS-Cluster mit AWS Fargate betreiben, einer serverlosen Rechenplattform für Container. Fargate macht die Bereitstellung und Verwaltung von Servern überflüssig und ermöglicht die Bezahlung pro Ressource und Anwendung.

AWS ermöglicht die Verwendung zusätzlicher Funktionen mit EKS, wie z. B. Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups und Access Management (IAM), Überwachung, Skalierung und Load-Balancing-Anwendungen. EKS lässt sich in AWS App Mesh integrieren und bietet ein natives Kubernetes-Erlebnis. EKS führt die neueste Kubernetes-Version aus und ist als Kubernetes-konform zertifiziert.

Fazit

Ich hoffe, dass diese Liste ein gutes Verständnis für die verschiedenen Container-Orchestrierungstools vermittelt hat und es Ihnen nun leichter fällt, basierend auf Ihrem Anwendungsfall die beste Wahl zu treffen.

Informieren Sie sich als nächstes über Software zur Kubernetes-Verwaltung.