Kubernetes vs. Docker, was ist der Unterschied?
Kubernetes und Docker sind zwei Namen, die oft in einen Topf geworfen werden. Wenn Sie neu in der Containerisierungstechnologie sind, fragen Sie sich vielleicht, was diese beiden Technologien tun, wie sie sich voneinander unterscheiden und wie beide in das Puzzle passen, um ein einzelnes Ziel zu erreichen. Beide Tools sind wichtig und relevant für Systemadministratoren und werden häufig auf einem Linux-System eingesetzt.
In diesem Tutorial werden wir Kubernetes und Docker beleuchten, um die Verwirrung der Leser über den Zweck dieser Tools zu beseitigen und zu untersuchen, wie die beiden Technologien zusammenarbeiten, um containerisierte Anwendungen skalierbar zu machen. Lesen Sie weiter, um endlich herauszufinden, warum diese Tools wichtig sind und warum sie eine Schlüsselrolle bei der Bereitstellung von Containern spielen.
In diesem Tutorial lernen Sie:
- Was ist Containerisierung?
- Wofür wird Docker verwendet?
- Wofür wird Kubernetes verwendet?
- Wie arbeiten Docker und Kubernetes zusammen?
Containerisierungs-Technologie
Beginnen wir mit den Grundlagen. Wir gehen davon aus, dass einige Leser neu in der Containerisierung im Allgemeinen sind und das Konzept noch nicht verstehen. Da sich Docker und Kubernetes ausschließlich mit der Containerisierung befassen, ist es wichtig, zunächst ein gutes Verständnis dafür zu haben, wie diese Technologie in der Theorie funktioniert und warum die Notwendigkeit dafür überhaupt entsteht.
Die Kubernetes-Website hat ein schönes Bild, das die Vorteile der Containerisierung verdeutlicht (Quelle: kubernetes.io):
Die traditionelle Bereitstellung war jahrzehntelang die einzige Möglichkeit, Anwendungen bereitzustellen. Dabei wird Software direkt auf dem Betriebssystem installiert. Alle Desktop-Benutzer sollten automatisch mit diesem Konzept vertraut sein, da es eine häufige Aufgabe ist, eine Anwendung (z. B. ein Spiel) auf Ihrem System zu installieren. Bei dieser Art der Bereitstellung wird die Anwendung über gemeinsam genutzte Bibliotheken, Konfigurationsdateien und viele andere Einstellungen und Dateien mit dem Betriebssystem gekoppelt. Das Problem bei dieser Art der Bereitstellung ist, dass sie nicht einfach skalierbar ist. Es ist auch nicht portabel, so dass bei einem Systemausfall die Anwendung auf einem separaten Server neu installiert und neu eingerichtet werden muss.
Die Virtualisierungsbereitstellung beseitigte viele der Mängel der herkömmlichen Bereitstellung. Anstatt Anwendungen direkt an das Betriebssystem binden zu lassen, konnten wir jetzt virtuelle Maschinen verwenden und alles ordentlich darin verpacken. Das Betriebssystem, alle gemeinsam genutzten Bibliotheken und Abhängigkeiten sowie alle Anwendungen können sich innerhalb der virtuellen Maschine befinden und auf einem beliebigen Hostsystem bereitgestellt werden. Dadurch wurden die Anwendungen viel portabler und auch die Skalierbarkeit war viel einfacher.
Die Containerisierungsbereitstellung ähnelt der Virtualisierung, mit dem Unterschied, dass für die Ausführung kein separates Betriebssystem erforderlich ist. Die Anwendung, ihre Konfiguration und alle ihre Abhängigkeiten werden in einen schlanken Container gepackt, der auf ein beliebiges System portiert werden kann. Der Hauptvorteil der Containerisierung gegenüber der herkömmlichen Virtualisierung besteht darin, dass Container viel schlanker sind. Abgesehen von diesem Punkt funktionieren sie vom Konzept her gleich, aber die Containerisierung hat aufgrund ihres geringen Gewichts viele andere inhärente Vorteile. Zum Beispiel sind sie sehr einfach zu skalieren, Redundanz aufzubauen, Lastausgleich zu betreiben und verfügen über viele andere Funktionen.
Wofür wird Docker verwendet?
Es ist nicht unbedingt notwendig, Docker mit Kubernetes zu verwenden, obwohl die meisten Cluster tatsächlich diese Kombination von Software verwenden. Es gibt andere Containerisierungstools wie Containerd, die Kubernetes ebenfalls als notwendige Containerisierungsschicht ergänzen können, die zum Ausführen von Container-Images benötigt wird.
Docker ist der größte Name in der Containerisierung, obwohl es eine Reihe anderer Tools gibt, die diese Aufgabe ebenfalls erledigen können. Viele Linux-Administratoren beginnen mit Docker, um Anwendungen zu erstellen, die in einen Container gepackt und einfach auf jedem System bereitgestellt werden können. Dies ist auch eine großartige Möglichkeit für Entwickler, ihre Arbeit zu teilen, da jeder mit Docker die Anwendung ausführen kann.
Wofür wird Kubernetes verwendet?
Die Verwendung von Containern klingt toll, oder? Sie sind leichtgewichtig und portabel und stellen den nächsten logischen Schritt nach der Virtualisierungsbereitstellung dar. Das Problem, das auftritt, ist, wenn ein Unternehmen verschiedene containerisierte Anwendungen bereitstellen und skalieren muss, um eine hohe Nachfrage zu erfüllen. Dies ist das Problem, für das Kubernetes entwickelt wurde.
Kubernetes funktioniert, indem es einen (oder mehrere, aus Redundanzgründen) Master-Knoten und eine beliebige Anzahl von Worker-Knoten hat. Wenn Sie Ihre containerisierten Anwendungen an Kubernetes übergeben, wird die Last wie angewiesen auf alle Worker-Knoten verteilt. Mit dem Befehl kubectl können Sie mit Ihrem Masterknoten interagieren und Kubernetes anweisen, wie Ihr Cluster ausgeführt werden soll.
Der Master-Knoten verwaltet zusammen mit Ihren eigenen angewendeten Konfigurationen die Bereitstellung, die Planung, den Lastenausgleich, die Reparatur und andere Aspekte der Knoten und Anwendungen in Ihrem Cluster. Es ist auch einfach genug, neue Updates per Push in den Cluster zu pushen, Zustände nach Bedarf zurückzusetzen und Protokolle zu überprüfen oder andere Verwaltungsfunktionen von einem zentralen Ort aus auszuführen.
Wie arbeiten Docker und Kubernetes zusammen?
Denken Sie daran, dass Kubernetes es uns ermöglicht, alle unsere Container und Knoten zu verwalten, aber immer noch auf Docker (oder eine andere Containerisierungsschicht) angewiesen ist, um die Anwendungen tatsächlich auszuführen. Daher ist es weiterhin notwendig, Docker auf allen Worker-Knoten installiert zu haben, da dieser Layer zur Ausführung der Container verwendet wird.
Kubernetes ist die Technologie, die es uns ermöglicht, einen Cluster aus Knoten und Pods zu erstellen, um unsere Container auszuführen. Mit Kubernetes können wir containerisierte Anwendungen einfach skalieren, indem wir ein oder zwei Befehle ausführen. Durch die Interaktion mit dem Master-Knoten über die Befehlszeile können wir Kubernetes beispielsweise problemlos anweisen, zusätzliche Replikate für eine unserer Anwendungen zu verwenden, die eine erhöhte Nachfrage verzeichnet.
Schauen Sie sich unser Tutorial zu Wofür wird Kubernetes verwendet? um mehr über Kubernetes und all seine Vorteile zu erfahren.
Abschließende Gedanken
In diesem Tutorial haben wir die Unterschiede zwischen Kubernetes und Docker kennengelernt. Obwohl es typisch ist, dass man beim ersten Kennenlernen der Containerisierung etwas verwirrt ist, ist es einfach zu verstehen, wie sich diese beiden Technologien voneinander unterscheiden und zusammenarbeiten sollen, um die Containerisierung in großem Maßstab zu ermöglichen.

