Kubernetes vs. Docker: Container und Orchestrierung verstehen

Wenn Sie mit den neuesten Trends in der Softwareentwicklung Schritt gehalten haben, gibt es zwei Begriffe, auf die Sie zweifellos immer wieder gestoßen sind: Docker und Kubernetes, die im Wesentlichen für  Container  und  Orchestrierung stehen .

Docker-Container haben dazu beigetragen, den Prozess des Verschiebens von Anwendungen durch Entwicklung und Test in die Produktion zu rationalisieren, während sowohl Docker als auch Kubernetes dazu beigetragen haben, die Art und Weise, wie Anwendungen erstellt und bereitgestellt werden, neu zu erfinden - als Sammlung von Mikrodiensten anstelle von monolithischen Stapeln.

Warum sind Docker und Kubernetes wichtig, wie verändern sie die Softwareentwicklung und welche Rolle spielen sie dabei? Ich werde versuchen, diese Fragen unten zu beantworten.

Docker und Container

Mit Containern, die unter Linux, Windows und anderen modernen Betriebssystemen unterstützt werden, kann Software in eigenständigen Mini-Umgebungen ausgeführt werden, die vom Rest des Systems isoliert sind. Container wurden mit VMs verglichen, aber sie sind keine VMs - sie sind viel schlanker, schneller zu starten und zu stoppen und viel flexibler und portabler. Da Container in Sekundenschnelle nach oben oder unten gedreht oder vergrößert oder verkleinert werden können, können Apps in elastischen Umgebungen wie der Cloud einfacher ausgeführt werden. 

Linux und andere Betriebssysteme unterstützen seit vielen Jahren containerisierte Apps, aber die Arbeit mit Containern war nicht gerade benutzerfreundlich. Docker ist sowohl in seiner Open Source- als auch in seiner kommerziellen Version eine Software, die Container zu einer benutzer- und entwicklerfreundlichen Ware macht. Docker bietet eine Reihe allgemeiner Tools und Metaphern für Container, mit denen Sie Apps in Container-Images verpacken können, die einfach in Ihrer eigenen Organisation oder anderswo bereitgestellt und wiederverwendet werden können.

Kurz gesagt, Docker macht es zum Kinderspiel, Container-Images zu erstellen, zu versionieren, freizugeben, zu verschieben und als laufende Container auf Docker-kompatiblen Hosts bereitzustellen.

Wann verwende ich Docker und Container?

Docker und Container eignen sich am besten für Workloads, die eine oder mehrere der folgenden Eigenschaften aufweisen müssen:

  • Elastische Skalierbarkeit.  Sie wissen nicht, wie viele Instanzen einer App Sie ausführen müssen, um die Nachfrage zu befriedigen. Eine containerisierte App oder ein Dienst kann in unserem Out skaliert werden, um die Nachfrage zu befriedigen, indem weniger oder mehr Instanzen ihrer Container bereitgestellt werden.
  • Isolation.  Sie möchten nicht, dass die App andere Apps stört. Möglicherweise führen Sie mehrere Versionen der App nebeneinander aus, um unterschiedliche Versionen einer API zu erfüllen. Oder vielleicht möchten Sie das zugrunde liegende System sauber halten (immer eine gute Idee).
  • Portabilität.  Sie müssen diese App in einer Vielzahl von Umgebungen ausführen und jedes Setup muss reproduzierbar sein. Mit Containern können Sie die gesamte Laufzeitumgebung Ihrer Anwendung zusammenfassen und die App einfach überall dort bereitstellen, wo Sie einen Docker-kompatiblen Host finden - einen Entwicklerdesktop, einen QS-Testcomputer, ein lokales Bügeleisen oder eine Remote-Cloud.

Erfahren Sie mehr über Docker und Container

  • Was ist Docker? Der Funke für die Containerrevolution
  • Warum Sie Docker und Container verwenden sollten
  • Beginnen Sie mit Docker
  • Die versteckten Vorteile von Docker für die Qualitätssicherung
  • 12 Open-Source-Tools, die Docker verbessern
  • Weitere Docker-Nachrichten, Analysen, Anleitungen, Bewertungen und Ratschläge

Kubernetes und Container-Orchestrierung

Container dienen hauptsächlich dazu, Prozesse oder Anwendungen voneinander und vom zugrunde liegenden System zu isolieren. Das Erstellen und Bereitstellen einzelner Container ist einfach. Was aber, wenn Sie mehrere Container - beispielsweise eine Datenbank, ein Web-Front-End oder ein Computer-Back-End - zu einer großen Anwendung zusammenstellen möchten, die als Einheit verwaltet werden kann, ohne sich um die Bereitstellung, Verbindung, Verwaltung und Verwaltung kümmern zu müssen? und jeden dieser Container separat skalieren? Sie benötigen eine Möglichkeit,  alle Teile zu einem funktionalen Ganzen zu  orchestrieren .

Das ist der Job, den Kubernetes übernimmt. Wenn Container Passagiere auf einer Kreuzfahrt sind, ist Kubernetes der Kreuzfahrtdirektor.

Kubernetes basiert auf bei Google erstellten Projekten und bietet eine Möglichkeit, die Bereitstellung und Verwaltung von Anwendungen mit mehreren Containern auf mehreren Hosts zu automatisieren, ohne jeden Container direkt verwalten zu müssen. Der Entwickler beschreibt das Layout der Anwendung über mehrere Container hinweg, einschließlich Details wie die Verwendung von Netzwerk und Speicher durch jeden Container. Kubernetes erledigt den Rest zur Laufzeit. Es kümmert sich auch um die Verwaltung fummeliger Details wie Geheimnisse und App-Konfigurationen.

Kubernetes erfordert ein gewisses Maß an Fachwissen, um gut eingesetzt zu werden, obwohl es weitaus schlüsselfertiger ist als früher. Ein Teil des Fortschritts bei der Benutzerfreundlichkeit ist auf leicht verfügbare Rezepte für gängige Anwendungen (Helmdiagramme) zurückzuführen. Einige sind auf eine Fülle von Kubernetes-Distributionen zurückzuführen, die von Markenfirmen (Red Hat, Canonical, Docker) hergestellt wurden und Hand in Hand mit gängigen Anwendungsstacks und Entwicklungsframeworks arbeiten.

Wann verwende ich Kubernetes und Container Orchestration?

Einfache containerisierte Apps, die eine kleine Anzahl von Benutzern bedienen, erfordern normalerweise keine Orchestrierung, geschweige denn Kubernetes. Wenn eine App jedoch mehr als eine triviale Funktionalitätsebene oder eine triviale Anzahl von Benutzern hat, wird es schwierig, das von Orchestrierungssystemen bereitgestellte Rad nicht neu zu erfinden. Hier sind einige Faustregeln, um zu bestimmen, wann die Orchestrierung ins Bild kommen soll.

  • Ihre Apps sind komplex.  Jede Anwendung, die mehr als zwei Container umfasst, passt wahrscheinlich zur Rechnung. Allerdings können bescheidene Apps, die nur eine kleine Anzahl von Benutzern bedienen, durch eine minimalere Lösung wie den Docker-Schwarmmodus anstelle von Kubernetes orchestriert werden.
  • Ihre Apps stellen hohe Anforderungen an Skalierung und Ausfallsicherheit.  Mit Kubernetes und anderen Orchestratoren können Sie Lasten ausgleichen und Container hochdrehen, um den Bedarf deklarativ zu decken, indem Sie den gewünschten Zustand des Systems beschreiben, anstatt Reaktionen auf sich ändernde Bedingungen von Hand zu codieren.
  • Sie möchten die modernen CI / CD-Techniken optimal nutzen.  Orchestrierungssysteme unterstützen Bereitstellungsmuster für Apps mithilfe der blau / grünen Bereitstellung oder fortlaufender Upgrades.

Es kann ein Tag kommen, an dem Docker und Kubernetes von noch freundlicheren Abstraktionen verdunkelt werden und eleganteren Möglichkeiten zum Erstellen und Verwalten von Containern Platz machen. Im Moment sind Docker und Kubernetes jedoch wichtig zu wissen und zu verstehen.

Erfahren Sie mehr über Kubernetes und Orchestrierung

  • Was ist Kubernetes? Ihre nächste Anwendungsplattform
  • 4 Gründe, warum Sie Kubernetes verwenden sollten
  • 10 Kubernetes-Distributionen führen die Containerrevolution an
  • Verwaltete Kubernetes: AWS vs. Azure vs. Google Cloud
  • Hallo MicroK8s: Ein einfacheres Kubernetes
  • Was ist neu in Kubernetes?
  • Weitere Kubernetes-Nachrichten, Anleitungen, Bewertungen, Ratschläge und Analysen