Kubernetes vs Docker

Kubernetes vs Docker

Kubernetes vs Docker - Auflösung einer häufig auftretenden Verwirrung

Der Titel dieses Blogbeitrags "Kubernetes vs Docker" ist eigentlich ein Widerspruch in sich. Oft sorgt die Phrase "Kubernetes vs Docker" daher für Verwirrung. Docker und Kubernetes sind Softwarelösungen mit unterschiedlicher Zielsetzung und keine direkten Konkurrenten. Während es sich bei Docker um eine Virtualisierungsplattform auf Basis des Container-Konzepts handelt, ist Kubernetes ein Orchestrator für Container-Umgebungen. Eine direkte Gegenüberstellung "Kubernetes vs Docker" macht wenig Sinn. Docker benötigt an sich kein Kubernetes und Kubernetes kein Docker. Doch erst im Zusammenspiel von Kubernetes und Docker entfaltet sich ihre volle Leistungsfähigkeit.

Der folgende Beitrag soll die Verwirrung rund um die Phrase "Kubernetes vs Docker" auflösen. Wir zeigen Ihnen, in welchem Zusammenhang Docker und Kubernetes wirklich stehen und erklären die Begriffe Containerisierung, Docker, Orchestrierung und Kubernetes. Kurz gehen wir auf die Funktionsweise von Docker und Kubernetes ein, bevor wir Ihnen das Zusammenspiel von Docker und Kubernetes näher erläutern. Einige praktische Use Cases verdeutlichen Ihnen den sinnvollen Einsatz von Docker und Kubernetes.

Containerisierung und Container-Technologie Docker: Der Siegeszug

Sowohl das Konzept der Containerisierung als auch die Container-Technologie Docker sind noch relativ jung. Die Open-Source-Software Docker wurde erstmals im Jahr 2013 veröffentlicht. Die Containerisierung und Docker haben seither einen wahren Siegeszug hinter sich. Sie haben eine neue Ära des Cloud Computings eingeläutet und sowohl Betrieb als auch Entwicklung moderner Anwendungen grundlegend verändert. Sogenannte Cloud-native Anwendungen funktionieren heute auf Basis von Container-Technologie wie Docker und werden mit Orchestratoren wie Kubernetes verwaltet und betrieben. Sie lösen die Virtualisierung auf Betriebssystemebene und monolithische Anwendungen der Vergangenheit ab. Komplexe Multi-Container-Deployments mit Docker haben sich als Quasi-Standard etabliert. Docker ist mit Abstand die populärste Container-Technologie. So nutzt beispielsweise rund ein Drittel aller Unternehmen Docker in ihren AWS-Umgebungen (Amazon-Web-Service-Umgebungen). Um den Aufstieg von Docker besser zu verstehen, lassen Sie uns zunächst einen näheren Blick auf das Konzept der Containerisierung werfen.

Was ist Containerisierung?

Containerisierung ist eine Virtualisierungstechnik, mit der sich mehrere Anwendungen isoliert voneinander auf einem Host-System betreiben lassen. Im Gegensatz zu virtuellen Maschinen werden nicht komplette Rechner inklusive ihrem Betriebssystem, sondern nur die für die Applikationen notwendigen Laufzeitumgebungen virtualisiert. Deshalb sind Container wesentlich schlanker und einfacher zu handhaben als virtuelle Maschinen. Die in einem Container isolierte Anwendung ist samt Laufzeitumgebung schnell und ohne grossen Aufwand auf andere Host-Rechner übertragbar. Container sorgen für die Portabilität des Anwendungs-Codes und separieren ihn von der zugrundeliegenden Infrastruktur. Möchten Sie mehr zur Container-Technologie und ihren Vorteilen erfahren, erhalten Sie in diesem Artikel eine umfassende Übersicht.

Was ist Docker?

Docker ist eine unter Apache-Lizenz stehende, frei verfügbare Container-Technologie. Die Software bietet alle notwendigen Funktionen, um Anwendungen samt ihrer Laufzeitumgebung zu virtualisieren und isoliert auf einem Host-System zu betreiben. Hierfür muss die Docker-Technologie auf dem Host-System installiert sein. Sie weist den Containern die benötigten Ressourcen zu und sorgt für die Separierung der Laufzeitumgebungen. Docker speichert die Container als Dateien (Images). Sie lassen sich als Speicherabbild des Containers einfach auf andere Systeme mit Docker-Technologie übertragen. Vorteile von Docker sind der im Vergleich zu virtuellen Maschinen geringe Ressourcenbedarf und das schnelle Starten sowie einfache Handling der Container.

Warum sind Orchestrierungssysteme notwendig und sinnvoll?

Moderne Anwendungen bestehen aus vielen einzelnen Microservices, die in Containern verpackt betrieben werden. Dieses Konzept sorgt für eine neue Herausforderung: All die verschiedenen Container müssen auf unterschiedlichen Systemen verwaltet, überwacht und koordiniert betrieben werden. Manuell ist das kaum zu leisten. An dieser Stelle kommt die Orchestrierung ins Spiel. Orchestrierungssysteme automatisieren und erleichtern die Prozesse der Bereitstellung, Verwaltung, Koordination und Skalierung der Container. Verfügbare Orchestrierungssysteme sind beispielsweise Kubernetes, Apache Marathon/Mesos oder Docker Swarm.

Was ist Kubernetes und wie funktioniert es?

Einer der beliebtesten und am häufigsten eingesetzten Orchestratoren ist Kubernetes, oft mit K8s abgekürzt. Kubernetes ist eine ursprünglich von Google entwickelte und heute von der Cloud Native Computing Foundation (CNCF) gemanagte Open-Source-Plattform. Sie bietet alle notwendigen Funktionen zur Automatisierung des Einrichtens, Betreibens, Überwachens, Wartens und Skalierens von Containern.

Wichtige Elemente einer Kubernetes-Installation sind Pods, Nodes und Cluster. Die kleinste Einheit bildet der Pod, der ein oder mehrere Container beinhaltet. Die Pods laufen auf den Nodes. Bei den Nodes handelt es sich um virtuelle oder physische Systeme. Mehrere Nodes fasst das Master-Slave-basiert arbeitende Kubernetes zu einem Cluster zusammen. Der Kubernetes-Master nimmt eine zentrale Rolle ein. Er steuert die Nodes mit ihren in den Pods betriebenen Containern. Der Master weist die Ressourcen zu und verteilt die Pods auf die Nodes.

Mehr Informationen über Kubernetes und einige grafische Darstellungen zur Verdeutlichung der Funktionsweise erhalten Sie in dem Beitrag "Was ist Container Orchestrierung und für was lässt sie sich einsetzen?".

Die Zusammenhänge zwischen Docker und Kubernetes

Kubernetes ist neben Docker Swarm und Marathon/Mesos ein möglicher Orchestrator für die Container-Technologie Docker. Umgekehrt kann Kubernetes auch andere Container-Plattformen als Docker orchestrieren. Da Docker mit Docker Swarm über einen integrierten Orchestrator verfügt, wird unter der Überschrift "Kubernetes vs Docker" manchmal Kubernetes mit dem Orchestrator Swarm verglichen. Swarm reicht aber bei weitem nicht an den Funktionsumfang und die Leistungsfähigkeit von Kubernetes heran, weshalb eine Gegenüberstellung der beiden Orchestratoren wenig Sinn macht. Kubernetes ist führend im Bereich der Container-Orchestrierung von Docker-Containern und hat sich als Quasi-Standard für den Betrieb verteilter, Cloud-nativer Anwendungen etabliert. Der Orchestrator Kubernetes kann On-Premises oder in einer Cloud-Umgebung betrieben werden

Was sind sinnvolle Use Cases für die Orchestrierung mit Kubernetes?

Um Ihnen den sinnvollen Einsatz der Containerisierung mit Docker und der Orchestrierung mit Kubernetes zu verdeutlichen, möchten wir Ihnen einige praktische Use Cases zeigen.

Prädestiniert sind Kubernetes und Docker für Cloud-native, auf Microservices basierende Anwendungen. Die einzelnen Microservices werden isoliert in Containern auf verschiedenen Systemen betrieben. Kubernetes sorgt für die Orchestrierung der vielen Container und automatisiert Aufgaben wie die Skalierung, Überwachung und den Betrieb der Container.

Ein weiterer Anwendungsfall für die Orchestrierung mit Kubernetes ist die konsequente Umsetzung des DevOps-Konzepts. Das DevOps-Konzept soll das Zusammenwirken von Softwareentwicklung und Systemadministration optimieren. Orchestratoren wie Kubernetes und das Konzept der Virtualisierung ermöglichen durch die Entkopplung des Codes von der zugrundeliegenden Infrastruktur schnellere Entwicklungsprozesse. Dank Automatisierung der Container-Verwaltung und des Container-Betriebs lassen sich neue Anwendungen einfacher und sicherer in den Wirkbetrieb überführen. Dev- und Ops-Aufgaben werden effizienter ausführbar und Konzepte wie Continuous-Integration oder Continuous-Delivery umsetzbar.

Ein ebenfalls sinnvoller Use Case für die Orchestrierung mit Kubernetes sind agile, dynamisch wachsende Anwendungen. So steigen beispielsweise die Anforderungen an Anwendungen eines Startups oft mit rasanter Geschwindigkeit. Häufig sind Funktionen im Tagesrhythmus zu verändern oder Ressourcen kurzfristig zu skalieren. Mit Docker containerisierte und mit Kubernetes orchestrierte Anwendungen bieten hierfür optimale Voraussetzungen. Einzelne Microservices lassen sich aktualisieren, ohne dass das Gesamtsystem davon betroffen ist. Zudem können Container schnell auf andere Nodes verschoben werden, um den Ressourcenbedarf zu stillen. Möchten Sie mehr darüber erfahren, ob Container die richtige Wahl für Ihre Applikation sind, bietet der Artikel "Brauche ich eine Containerlösung?"  wertvolle Informationen.

Fazit

In diesem Artikel haben wir versucht, die Verwirrung rund um die Phrase "Kubernetes vs Docker" aufzulösen. Sie wissen jetzt, wofür sich Docker und Kubernetes einsetzen lassen und was die Vorteile im Zusammenspiel der beiden Lösungen sind. Mit Kubernetes und Docker lassen sich moderne Anwendungen Cloud-nativ realisieren. Ihre Applikationen werden skalierbarer und fit für die Zukunft. Die nine cloud navigators unterstützen Sie mit ihrer Expertise und ihren Produkten auf dem Weg zu containerisierten Anwendungen. Mit Produkten wie der nine Managed GKE (Google Kubernetes Engine) gelingt Ihnen die Transformation spielend. Wir managen Ihre Google Kubernetes Engine, während Sie sich voll auf Ihr Kerngeschäft konzentrieren. Näheres zur nine Managed Google Kubernetes Engine (GKE) erfahren Sie auf dieser Produktseite.

Immer informiert bleiben?
den nine Blog jetzt abonnieren