Kubernetes-Alternativen

Kubernetes ist der Marktführer im Bereich verteilter Cluster-Orchestratoren. Mittlerweile existiert eine Reihe spannender Alternativen. Jede hat ihre ganz spezifischen Vor- und Nachteile, sowie unterschiedliche Einsatzmöglichkeiten: vom einfachen lokalen Cluster für die eigene Entwicklungsumgebung bis zum hochverfügbaren, verteilten System mit zehntausenden von Nodes. Wir stellen die besten Lösungen vor.

Wodurch zeichnen sich Kubernetes-Alternativen aus?

Dem Siegeszug von Docker als Plattform für Container-Virtualisierung folgend, hat sich Kubernetes als Standard-Tool für die Container-Orchestrierung etabliert. Jedoch geht der Funktionsumfang von Kubernetes weit über das Verwalten von Container-Gruppen hinaus. Kubernetes automatisiert Deployment, Verwaltung und Skalierung containerisierter Anwendungen. Mit Kubernetes gesteuerte Anwendungen sind hochverfügbar, skalierbar und vorhersagbar. Ferner unterstützt Kubernetes die folgenden Features:

  • automatisierter Rollout und Rollback von Änderungen
  • Service-Discovery innerhalb des Netzwerks
  • Massenspeicher-Orchestrierung
  • Skalierung von Anwendungen und Diensten
  • Stapelverarbeitung von Daten

Nicht alle Kubernetes-Alternativen decken das gesamte Spektrum ab; andererseits bieten viele der Alternativen über Kubernetes hinausgehende Funktionen. Beliebt sind vor allem Komfortfunktionen in Bezug auf Nutzermanagement, Monitoring und Sicherheit. Manche der Alternativen nutzen Kubernetes unter der Haube, andere lassen sich im Verbund mit Kubernetes nutzen. Verschaffen wir uns zunächst eine Übersicht der wichtigsten Aspekte von Kubernetes und Alternativen.

Einsatz-Parameter von Kubernetes und Alternativen

Beim Betreiben von Clustern und Containern existieren unterschiedliche Ansätze. Die Einsatz-Parameter beschreiben, wie Ressourcen zugewiesen und verwaltet werden. Ferner entscheiden sie darüber, in welchen Umgebungen die Systeme aufgebaut werden können und welche Arten von Anwendungen sich nutzen lassen:

Einsatz-Parameter

Erklärung

Deployment-Modell

Cluster lassen sich in Public-, Private-, und / oder Hybrid-Cloud Umgebungen, bzw. über Umgebungen hinweg betreiben

Ressourcen-Skalierung

Orchestrieren weiterer Container für horizontale Skalierung, Allokationen weiterer Rechen-Ressourcen (CPU, Speicher) für vertikale Skalierung

App-Format

Anwendungen können als Docker-Container, in virtuellen Maschinen, oder als „Standalone“-Anwendung (Windows, Java, etc.) zum Einsatz kommen

Netzwerk-Verwaltung

Software Definierte Netzwerke (SDN) für Overlay-Netzwerke, Multicast-Support, Peer-to-Peer-Funktionen, etc.

Storage-Verwaltung

Storage-APIs für verschiedene Storage-Backends wie Docker Volume-API, Ceph, S3

Aufgaben von Kubernetes und Alternativen

Um ein Cluster von Containern zu betreiben, genügt es nicht, diese bloß zu verwalten. Denn ein Cluster ist nur dann voll funktional und nützlich, wenn weitere Aufgaben wahrgenommen werden:

Aufgaben

Erklärung

Container- und Cluster Orchestrierung

Container und daraus bestehende Cluster konzertiert starten und beenden; ihnen Ressourcen zuweisen

Service-Discovery

Dienste im Netzwerk über spezielle Protokolle automatisiert erkennen

Continuous Integration/Development

CI- / CD-Pipelines zum kontinuierlichen, stabilen Ausrollen von Updates

Monitoring und Logging

Container und Cluster überwachen und die dabei anfallenden Daten strukturiert speichern

Aufbau von Kubernetes und Alternativen

Bei Kubernetes und den Alternativen handelt es sich um Software zur Verwaltung verteilter Cluster. Es gibt unterschiedliche Ansätze, ein derartiges System zu strukturieren. Wie zeigen hier die wichtigsten Punkte auf:

Aufbau

Erklärung

System-Komponenten

Kommt eine einzelne Binärdatei zum Einsatz, oder ein System interagierender Komponenten?

Treiber

Welche Treiber für die Anbindung externer Task-Scheduler, Storage-Backends oder physischer Geräte gibt es?

Schnittstellen und Tools

Welche APIs, und Tools für Monitoring, Logging, etc. stehen bereit? Gibt es ein Kommandozeilen-Interface (CLI) und / oder ein Web-GUI?

IaC-Format bzw. Templates

In welcher Sprache werden Infrastructure-as-Code (IaC) Anweisungen definiert: HCL, YAML, JSON, …?

FOSS vs. Pro-Version

Welche Funktionen stehen in den verschiedenen Versionen bereit? Gibt es speziellen Support, bzw. Service-Level-Agreements (SLA)?

Kubernetes und Alternativen im Vergleich

Auf dem Markt existiert mittlerweile eine Reihe von Systemen, welche mit Kubernetes vergleichbare Kapazitäten zur Verfügung stellen. Wir unterscheiden drei große Klassen:

Kubernetes-Alternativen

Beschreibung

Beispiele

Container-as-a-Service (CaaS)

erlauben das Verwalten großer Mengen von Containern, ohne sich um die Orchestrierung kümmern zu müssen

AWS Fargate

Platform-as-a-Service (PaaS) auf Basis von Kubernetes

bauen auf Kubernetes auf, bieten jedoch Komfortfunktionen und einfachere Nutzbarkeit

OpenShift, Rancher

Leichtgewichtige Container-Orchestratoren

erlauben das Orchestrieren von Containern, sind jedoch weniger komplex als Kubernetes

Docker Swarm, Nomad

Ferner gibt es Kubernetes-Alternativen wie Apache Mesos und Azk, welche sich in keine der drei Klassen einordnen lassen. Wir schauen uns die folgenden Systeme im Vergleich mit Kubernetes an:

  • Docker Swarm
  • Apache Mesos
  • AWS Fargate
  • OpenShift
  • Rancher
  • Nomad
  • Azk

Beginnen wir zunächst mit einem kurzen Überblick von Kubernetes.

Kubernetes

Kubernetes ermöglicht die Ausführung und Orchestrierung von Verbünden containerisierter Anwendungen. Zum Funktionsumfang gehören Cluster-Verwaltung, Scheduling, Service Discovery, Monitoring und Geheimnis-Verwaltung. Mit Kubernetes lassen sich Cluster mit bis zu 5.000 Nodes und 300.000 Containern realisieren. Ursprünglich von Google entwickelt, steht die Software mittlerweile unter Schirmherrschaft der „Cloud Native Computing Foundation“ (CNCF). An der laufenden Weiterentwicklung sind neben Google Industriegrößen wie Red Hat, Docker und IBM beteiligt.

Was sind die Vor- und Nachteile von Kubernetes?

Als Industriestandard finden sich Kubernetes-Implementationen in den Public Cloud Infrastrukturen der großen Anbieter. Laufend kommen neue, nützliche Entwicklungen und Tools wie „minikube“, „kubeadm“ und „K3s“ dazu. Diese stellen Komfortfunktionen zur Verfügung, vereinfachen die Installation und Verwaltung von Kubernetes und machen die Software auf schwächerer Hardware lauffähig.

Der größte Nachteil von Kubernetes liegt in der Komplexität der Software. Eine komplette Kubernetes-Installation umfasst ein halbes Dutzend miteinander interagierender Dienste. Das Setup erfordert einiges an Mühe und die laufende Software ist Ressourcen-hungrig.

Für welche Einsatzszenarien ist Kubernetes besonders geeignet?

Kubernetes kommt für Big-Data- und Machine-Learning-Projekte zum Einsatz, welche das Kubernetes-Ökosystem bzw. Helm-Charts benötigen. Aufgrund der Komplexität der Software eignet sich Kubernetes am besten für größere Projekte mit mehrjähriger Laufzeit und einem entsprechenden Budget. Wird eine eigene Installation betrieben, sollte ein Vollzeit-Team für die Administration vorhanden sein. Alternativ greift man auf Managed-Kubernetes-Angebote in einer Public-Cloud-Infrastruktur zurück.

Tipp

Nutzen Sie unser Kubernetes-Tutorial, um den Cluster-Orchestrator auf Ihrem eigenen Rechner zu installieren. Bei IONOS können Sie zudem Managed Kubernetes buchen und so die Vorzüge der IONOS Cloud-Umgebung genießen.

Docker Swarm

Bei Docker Swarm handelt es sich um das Docker-eigene Tool für die Orchestrierung von Clustern, welche aus Docker-Engines bestehen. Ein Swarm-Cluster besteht aus Swarm-Manager-Nodes, welche den Cluster orchestrieren und verwalten, und Worker-Nodes. Letzteren werden von den Manager-Nodes Aufträge zum Abarbeiten übertragen.

Was sind die Vor- und Nachteile von Docker Swarm als Kubernetes-Alternative?

Der größte Vorteil von Docker Swarm liegt in der engen Integration der Software in das Docker Ökosystem. Ist die Docker Engine installiert, kann man direkt mit Docker Swarm loslegen. Zur Steuerung greift man auf das bekannte Docker-Kommandozeilen-Interface zurück. Docker Swarm interagiert mit den Funktionalitäten von Docker und Docker Compose, wobei eine eigene Swarm API zum Einsatz kommt. Die Software unterstützt Skalierung, Lastverteilung, Service Discovery und Multi-Host-Netzwerke.

Im direkten Vergleich mit Kubernets bietet Docker Swarm weniger Möglichkeiten für Anpassungen und Erweiterungen. Generell fällt der Funktionsumfang kleiner aus.

Für welche Einsatzszenarien ist Docker Swarm besonders geeignet?

Docker Swarm eignet sich besonders gut, um kleinere Workloads zu verarbeiten. Existiert eine bestehende Docker-Umgebung, lässt sich diese mit Docker Swarm leicht nutzen, um Container-Cluster zu orchestrieren.

Apache Mesos

Das Projekt rund um Apache Mesos beruht auf denselben Prinzipien, wie der Linux-Kernel. Jedoch sind diese auf einer anderen Abstraktionsebene implementiert. Der Mesos-Kernel läuft auf jeder Maschine des Clusters und stellt APIs für Anwendungen wie Hadoop, Spark, Kafka und Elasticsearch zu Verfügung. Mit Mesos lassen sich Ressourcen-Verwaltung und -Scheduling über Rechenzentren und Cloud-Umgebungen verteilt betreiben.

Was sind die Vor- und Nachteile von Apache Mesos als Kubernetes-Alternative?

Mit Apache Mesos werden Rechen-Ressourcen wie CPU, Arbeits- und Massenspeicher von den eigentlichen Maschinen weg abstrahiert. So lassen sich Cluster auf zehntausende von Nodes skalieren. Dabei kommen fehlertolerante, redundante Manager- und Agenten-Nodes zum Einsatz, welche bei Bedarf unterbrechungsfrei mit Updates versorgt werden. Innerhalb eines Clusters lassen sich Cloud-native und Legay-Anwendungen Seite an Seite betreiben. Die Software läuft auf Linux, macOS und Windows und enthält eine Web-Oberfläche zum Verwalten von Clustern und Containern.

Mesos ist für Systeme mit vielen Clustern und hoher Skalierbarkeit ausgelegt. Die Software operiert auf einer niedrigeren Abstraktionsstufe als Kubernetes. So lohnt sich der Einsatz weniger für kleine Cluster mit weniger als einem Dutzend Nodes.

Für welche Einsatzszenarien ist Apache Mesos besonders geeignet?

Mit Apache Mesos lassen sich fehlertolerante und elastisch verteilte Systeme bauen. Die Software eignet sich besonders für große Systeme, welche für maximale Redundanz ausgelegt sind.

AWS Fargate

AWS Fargate ist eine „serverless“ Rechen-Engine für Container und folgt dem Conainer-as-a-Service-Modell. Beim Einsatz von Fargate liegt der Fokus auf der Anwendung, anstelle der Infrastruktur. Man legt für eine containerisierte Anwendung die Anforderungen an Netzwerk, Massenspeicher, Skalierbarkeit und dergleichen fest. Fargate kümmert sich um die Verwaltung der benötigten Ressourcen. Dabei greift die Software auf die Schwestertechnologien Amazon Elastic Container Service (ECS) and Amazon Elastic Kubernetes Service (EKS) zurück.

Was sind die Vor- und Nachteile von AWS Fargate als Kubernetes-Alternative?

Der größte Pluspunkt von AWS Fargate ist der starke Fokus auf die Anwendungsebene. Da man sich nicht um das Provisionieren der Infrastruktur kümmern muss, entfällt der Overhead, welcher mit Administration und Skalierung der Server einhergeht. Fargate skaliert die benötigten Ressourcen elastisch, so dass keine Überprovisionierung von Servern für Lastspitzen notwendig ist. Man zahlt also nur für tatsächlich in Anspruch genommene Rechenkapazitäten. Auf der Sicherheitsebene glänzt Fargate durch integrale Anwendungs-Isolierung.

AWS Fargate macht die Nutzung von Kubernets komfortabel. Damit einhergehend ergeben sich jedoch ggf. auch höhere Kosten. Ferner bewirkt die Abschirmung des Nutzers vor der zugrundeliegenden Technologie, dass weniger Kontroll- und Einflussmöglichkeiten bestehen.

Für welche Einsatzszenarien ist AWS Fargate besonders geeignet?

Mit AWS Fargate lassen sich Anwendungen, APIs, Microservices-Architekturen und Daten-Stapelverarbeitung implementieren. Fargate führt containerisierte Anwendungen aus und skaliert diese bei Bedarf. Die Software kommt auch für das Training von künstlicher Intelligenz (KI) und maschinellem Lernen (ML) zum Einsatz.

OpenShift

Die OpenShift-Plattform des Anbieters Red Hat nutzt Kubernetes unter der Haube. OpenShift erlaubt das Orchestrieren von Containern und Netzwerken und ermöglicht Scheduling und Management verteilter, skalierbarer Ressourcen. Die Software lässt sich über mehrere Cloud-Umgebungen hinweg ausrollen. Dazu gehören private Clouds auf eigener Recheninfrastruktur, sowie die Cloud-Infrastrukturen von Amazon AWS und Microsoft Azure.

Von Hause aus hat OpenShift neben den obligatorischen Kommandozeilen-Tools eine Web-Oberfläche zur Steuerung der Funktionalität an Bord. Dem GitOps-Modell folgend sind Entwickler angehalten, sämtliche Konfiguration als Code vorzuhalten. Trotz des ähnlichen Namens handelt es sich bei OpenShift nicht um eine mit OpenStack verwandte Technologie.

Was sind die Vor- und Nachteile von OpenShift als Kubernetes-Alternative?

Der größte Vorteil von OpenShift liegt darin, Entwicklungs-Teams eine konsistente und mächtige Arbeitsumgebung an die Hand zu geben. Unabhängig von der zum Einsatz kommenden Umgebung — Public-, Private-, oder Hybrid-Cloud — stehen Entwicklern dieselben Ansätze zum Bauen, Testen und Betreiben von Anwendungen zur Verfügung. Dazu gehören insbesondere die „OpenShift Pipelines“ eine Lösung für kontinuierliche Entwicklung (Continuous Development).

Eine weitere Stärke von OpenShift sind die eingebauten Monitoring- und Logging-Werkzeuge. Dazu gehören Prometheus für die Verwaltung von Monitoring und Benachrichtigungen, Jaeger für Transaktions-Nachverfolgung, Kali für Oberflächen und Visualisierung und Istion zur Implementierung verteilter Microservice-Architekturen. Ferner greift OpenShift auf den „Red Hat Container Catalog“ zu, welcher von Red Hat getestete und zertifizierte Container-Images enthält.

OpenShift setzt wie viele Produkte aus dem Hause Red Hat auf die kommerzielle Linux-Distribution „Red Hat Enterprise Linux“ (RHEL). Aus dieser Abhängigkeit ergibt sich ein gewisser Vendor Lock-In.

Für welche Einsatzszenarien ist OpenShift besonders geeignet?

OpenShift ist besonders geeignet, um Hybrid-Cloud Strategien umzusetzen und die dafür benötigten containerisierten Anwendungen zu bauen und zu skalieren. Organisationen, welche bereits im Red-Hat-Ökosystem beheimatet sind, profitieren besonders vom Einsatz der Software.

Rancher

Mit Rancher steht eine weitere, auf Kubernetes aufsetzende Alternative zur Verfügung. Bei dem Tool handelt es sich um einen komplette Software-Stack für Teams, die auf Container setzen. Dabei adressiert die Software die operativen und sicherheitsrelevanten Herausforderungen, welche sich beim Betrieb mehrerer Kubernetes-Cluster ergeben. Rancher stellt DevOps Teams eine zentralisierte Kontroll-Oberfläche zur Verfügung und vereinheitlicht die Verwaltung sämtlicher Kubernetes-Cluster einer Organisation. Cluster-Provisionierung, Upgrades, sowie Nutzer- und Policy-Management sind im Funktionsumfang enthalten.

Was sind die Vor- und Nachteile von Rancher als Kubernetes-Alternative?

Rancher vereinfacht das Deployment von Kubernetes-Clustern auf physischen Maschinen, sowie in öffentlichen und privaten Cloud-Umgebungen. Die Cluster werden mittels globaler Sicherheits-Policies geschützt; es kommen zentralisierte Systeme für Authentifizierung, Zugriffskontrolle und Nachverfolgbarkeit zum Einsatz. Die Software beugt Cluster-Fehlern vor und führt bei Bedarf Rettungs- und Wiederherstellungsmaßnahmen durch. Rancher funktioniert mit verschiedenen Linux- und Kubernetes-Distributionen und schützt somit vor Vendor Lock-In. An Komfortfunktionen sind Active Directory, LDAP- und SAML-Unterstützung, sowie DNS-Provisionierung enthalten.

Im Gegensatz zu Kubernetes ist die Community rund um Rancher erheblich kleiner. Ferner läuft die Software nur unter Linux.

Für welche Einsatzszenarien ist Rancher besonders geeignet?

Rancher eignet sich besonders gut dafür, mehrere Kubernetes-Cluster mit einer zentralisierten Oberfläche zu verwalten. Dabei lassen sich Nutzerrechte über mehrere Cluster hinweg vergeben.

Nomad

Mit Nomad steht ein interessantes Tool für Cluster-Verwaltung und -Scheduling aus dem Hause HashiCorp zur Verfügung. Die Software lässt sich sowohl im Verbund mit Kubernetes als auch als alleinständige Alternative nutzen. Nomad reiht sich ein in das existierende Angebot an Cloud- und Provisionierungs-Software der Firma. Der Unix-Philosophy folgend präferiert HashiCorp einen modularen Ansatz, bei dem jedes Tool einen eng definierten Aufgabenbereich abdeckt. Dazu gehören Terraform für Infrastructure-as-Code (IaC), Consul für Service Discovery, sowie Vault zur Geheimnisverwaltung.

Was sind die Vor- und Nachteile von Nomad als Kubernetes-Alternative?

Neben den üblichen containerisierten Anwendungen unterstützt Nomad auch virtualisierte sowie traditionelle „Standalone“-Anwendungen. Anders als Kubernetes besteht Nomad nicht aus mehreren, miteinander interagierenden Systemkomponenten. Vielmehr liegt die Software als einzelne, leichtgewichtige Binärdatei vor. Diese wird in lokalen Entwicklungsumgebungen, Cloudumgebungen, sowie privaten oder öffentlichen Rechenzentren deployt.

Unabhängig von der zum Einsatz kommenden Umgebung bietet Nomad denselben operativen Komfort. Mit der Software lassen sich Cluster mit zehntausenden Nodes über mehrere Verfügbarkeitszonen, Regionen und Rechenzentren hinweg deployen. Auch Multi-Cluster-Deployments sind im Funktionsumfang inbegriffen.

Da es sich bei Nomad um eine relativ neue Entwicklung handelt, existiert im Gegensatz zu Kubernetes ein viel schwächer ausgeprägtes Ökosystem. Dadurch bedingt gibt es keine Managed-Nomad-Lösungen der großen Cloudanbieter.

Für welche Einsatzszenarien ist Nomad besonders geeignet?

Nomad eignet sich besonders gut für kleine und mittelgroße Teams, welchen die Kapazitäten fehlen, einen komplexen Orchestrator zu pflegen. Ferner bietet sich der Einsatz von Nomad an, wenn eine Mischung containerisierter und nicht-containerisierter (Windows, Java) Anwendungen betrieben werden. Die Einfachheit der Software erlaubt Teams, sich schnell zu bewegen und auf wechselnde Business-Anforderungen zu reagieren.

Azk

Mit Azk steht Entwicklern eine spannende Kubernetes-Alternative zur Verfügung. Das Tool wird lokal installiert und erlaubt die Orchestrierung von Entwicklungsumgebungen auf der eigenen Maschine. Azk stellt ein Kommandozeilen-Interface bereit; für jedes Projekt wird eine (Azkfile.js genannte) Konfigurationsdatei angelegt, welche die Entwicklungsumgebung definiert. Dazu gehören zum Einsatz kommende Docker-Container-Images, Netzwerk- und Massenspeicher-Einstellungen, sowie Umgebungsvariablen.

Was sind die Vor- und Nachteile von Azk als Kubernetes-Alternative?

Der größte Vorteil von Azk liegt darin, Entwicklern das Einrichten lokaler Entwicklungsumgebungen zu erleichtern. Neben einem zentralen Repository, welches Images der am häufigsten genutzten Systeme enthält, trägt vor allem das Azkfile-Dateiformat zur guten Nutzererfahrung bei. Ein Azkfile ist in einem einfach verständlichen JavaScript-Dialekt verfasst und fungiert als Rezept für eine lokale Entwicklungsumgebung. Ferner bietet Azk die Möglichkeit, ein Azkfile auf Grundlage einiger Angaben automatisch zu generieren.

Da sich Azk hauptsächlich an professionelle Web-Entwickler richtet, gibt es bisher keine Unterstützung für Windows.

Für welche Einsatzszenarien ist Azk besonders geeignet?

Azk eigent sich hauptsächlich dafür, die Installation und Orchestrierung von Entwicklungsumgebungen zu automatisieren. So lassen sich innerhalb eines Teams konsistente Umgebungen für verschiedene Projekte definieren.