Docker Swarm vs. Kubernetes: Beide Container-Management-Tools im Vergleich

Im Durchschnitt wird dieses Tutorial Docker Swarm vs. Kubernetes: Beide Container-Management-Tools im Vergleich mit 5 bewertet, wobei 1.0 die schlechteste und 5.0 die beste Bewertung ist. Es haben insgesamt 565 Besucher eine Bewertung abgegeben.
565 0

Docker Swarm vs. Kubernetes: Beide Container-Management-Tools im Vergleich

Clustering Docker Kubernetes
Docker Swarm vs. Kubernetes Vergleich Titelbild

Wenn es um den Aufbau einer cloudbasierten Infrastruktur geht, sind Container und Clusterlösungen gerade in aller Munde. Kubernetes und Docker Swarm sind die zwei populärsten Open-Source-Lösungen, die man auf dem Gebiet der Container-Orchestration kennt. Doch beide Tools haben kaum etwas gemeinsam, außer, dass sie beide auf Docker-Images zurückgreifen. Wer jedoch bereits Erfahrung mit Docker Swarm hat, wird auf viel Neues bei Kubernetes treffen und umgekehrt. Das macht die Frage, welches der beiden Tools für dich das richtige ist umso wichtiger. Hier stellen wir beide Tools kurz vor und erklären dir die Unterschiede.

Aber was ist noch mal Container-Orchestration?

Das Bereitstellen der Entwicklungsumgebung mithilfe von Containern ist mittlerweile zum Standard geworden. Wenn man an Container-Orchestration denkt, wird der vereinfachte Vorgang quasi auf allen Systemen im Rechenzentrum bzw. in der Cloud angewendet. Ab einer gewissen Anzahl an Containern braucht man dafür ein Tool zum Managen der Container. Diese Tools haben jeweils eigene Methoden für das Management von komplexen Umgebungen. Eine Verwaltungskomponente, wie z.B. die Swarm Manager bei Docker Swarm, verwalten die Visualisierungen auf Netzwerkebene. Du musst dir keine Gedanken mehr machen, wenn ein Container down geht, oder ob ein Container neugestartet werden muss. Dir steht ein komplettes Tool-Set mit Features wie “Load Balancing”, “Container Replication” oder “Scaling” zur Verfügung.

Docker Swarm

Was Docker ist und wie du es auf Ubuntu 16.04 LTS installierst haben wir dir ja bereits in unserem Tutorial: „Docker auf Ubuntu 16.04 LTS – ein einfaches Kochrezept“ gezeigt. Wenn du dich jetzt schon ein bisschen mit Docker beschäftigt hast, bist du bestimmt schon einmal dem Begriff “Docker Swarm” begegnet. Kurz gesagt ist Docker Swarm ein systemeigener Microservice zur Container-Orchestration. Die Swarm-Funktionalität wird ab Version 1.12 innerhalb von Docker angeboten. Den Swarm musst du dir als einen Verbund von mehreren Docker-Systemen vorstellen, so einen Verbund nennt man Cluster. Die Systeme innerhalb eines Clusters werden Worker-Nodes genannt. Die Verwaltung der einzelnen Cluster übernehmen die sogenannten Swarm-Manager. Ein Docker-Host kann als Manager, Worker oder in beiden Rollen agieren. Einen laufenden Container, der sich in einem Swarm befindet und verwaltet wird, nennt man Task.

Kubernetes

Kubernetes ist aus Google’s mehr als ein Jahrzehnt langer Erfahrung mit Linux-Container entstanden. Das interne Cluster-Management-System, an dem Google damals gearbeitet hat, nannte sich Borg. Kubernetes löst wie Docker Swarm das Problem der effizienten Container-Orchestration, verfolgt dabei aber einen komplizierteren Ansatz. Um das System von Kubernetes verstehen zu können, muss man wissen, wie sich die einzelnen Konzepte zusammensetzen. Ein Kubernetes-Cluster setzt sich aus einem Master-Node und Worker-Nodes zusammen. Ein Master Node kann man sich als Kontrollzentrale vorstellen, von der aus die Container verwaltet werden. In realen Systemen sind mehrere Master die Regel. Die Kommunikation mit so einem Master erfolgt über ein Control-Layer via REST-API mit umfangreichen Funktionalitäten. Ein Master-Node setzt sich aus einer Reihe weiterer Komponenten wie etcd, Controller-Manager, Scheduler und Kubelet zusammen. Kubelet und etcd kommunizieren direkt mit dem API-Server. Der etcd-Layer ist eine Art Datenbank, in der die Konfigurationen der einzelnen Cluster gespeichert sind und Kubelet eine Verwaltungsinstanz für die Pods, die auf den Hosts laufen. Der Scheduler sorgt dafür, dass eure Container auf den richtigen Systemen innerhalb eines Clusters landen, entscheidet also eigenständig über die Verteilung der Pods abhängig vom Workload. Der Controller Manager überwacht und leitet alle Prozesse die von der API ausgehen und platziert Workloads auf den Nodes.

Got it? Wie du sicher bereits bemerkt hast, ist das Konzept nicht ganz so schnell erklärt. Ein paar Punkte müssen wir noch durchgehen. Die Worker-Komponente besteht aus: Services, Pods, Labels und Replication-Controller.

Services: Sind eine Art Verbindung zu einer Gruppe von Containern. Ein Service hilft einem dabei die Container-Strukturen einfach zu halten und logische Kollektionen mithilfe der Labels aufzubauen.

Pods: Die Pods sind eine Abstraktion zur Hilfe der Containerverwaltung. Container in einem Pod laufen auf dem gleichen Worker-Node und teilen sich Ressourcen wie Dateisystem, IP-Adresse oder Kernel-Namespaces.

Labels: Sind userspezifische Attribute, die den Pods zugeordnet werden, z.B. zum Suchen oder Updaten.

Replication-Controller: Der Replication-Controller dient als Framework zuständig für die Pods. Für den Fall, dass ein Container down geht, wird der Replication-Controller einen neuen Pod mit Containern starten und falls der alte wieder on kommt, diesen entsprechend down nehmen.

Features von Docker Swarm und Kubernetes

Kubernetes und Docker Swarm sind beides mächtige Tools zur Container Orchestration und bieten beide eine große Community zum Lern- und Wissensaustausch. Weil Docker Swarm als Teil von Docker agiert steht dir das Docker Command-line interface (Cli) mit den bekannten Funktionen wie docker compose zur Verfügung. In Kubernetes hast du kein direktes Interface, hier musst du alles über die interne API ansprechen. Kubernetes ist ausgelegt auf Skalierung, Verfügbarkeit und Sicherheit. Zudem sind die Zuverlässigkeit und Flexibilität von Kubernetes wichtige Faktoren. Selbst wenn du nicht geplant hast mit Kubernetes herum zu spielen, profitierst du mit Sicherheit jetzt schon vom Kubernetes Code. GitHub beispielsweise setzt Kubernetes ein, um die Sachen für euch am Laufen zu halten.
Schau mal hier rein, falls du darüber mehr erfahren möchtest: Kubernetes at GitHub

Kubernetes bietet dir außerdem maximale Freiheit bei der Wahl deines Betriebssystems. Beide Tools lassen sich problemlos auf große Setups skalieren, bei komplexen Anwendungen in einem großem bis sehr großen Maßstab hat aber Kubernetes die Nase vorn. Wer der Gewinner in einem direkten Vergleich ist, hängt wirklich davon ab, womit du lieber arbeitest und um was für ein Projekt es sich dreht. Docker Swarm überzeugt mit seiner Simplicity, da alle Komponenten Docker native sind, bei Kubernetes dagegen ist die Lernkurve wesentlich steiler. Daher haben beide Orchestration-Tools ihre eigenen Vorteile. Wenn du nicht sehr groß skalieren musst und etwas suchst, was simpel zu bedienen ist, fällt die Wahl auf Swarm. Du willst dagegen hoch skalieren, mit tausenden von Servern und einen neuen weltklasse Service wie GitHub aufbauen? Dann solltest du ein Auge auf Kubernetes werfen! Natürlich gibt es noch weitere Alternativen wie bspw. Apache Mesos oder Rancher Cattle auf die es sich lohnt einen Blick zu werfen.

Wenn es um den Aufbau einer cloudbasierten Infrastruktur geht, sind Container und Clusterlösungen gerade in aller Munde. Kubernetes und Docker Swarm sind die zwei populärsten Open-Source-Lösungen, die man auf dem Gebiet der Container-Orchestration kennt. Doch beide Tools haben kaum etwas gemeinsam, außer, dass sie beide auf Docker-Images zurückgreifen. Wer jedoch bereits Erfahrung mit Docker Swarm […]

Schade, dass dir der Artikel nicht gefallen hat.
Was sollten wir deiner Meinung nach besser machen?

Vielen Dank für dein Feedback!
Wir melden uns bei dir, sobald der Artikel zu deinem Wunschthema fertig ist.

Übrigens: kennst du schon unser Tutorial zum Thema HAProxy mit SSL von Let's Encrypt?

×

Entwickler?

Dann einfach hier für unsere Tutorial-Updates anmelden.
Keine Sorge: Wir spammen dich nicht zu