GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Kubernetes-Alternativen zu Docker-Befehlen

Docker bietet normalerweise die erste Einführung eines Entwicklers in Container. Kubernetes ist eine Orchestrierungsplattform, die Herausforderungen beim Ausführen von Containern in der Produktion löst. So werden Docker-Befehle ihren Kubernetes-Gegenstücken zugeordnet.

Sie können den docker nicht verwenden CLI zur Interaktion mit Containern, die in Kubernetes ausgeführt werden. Kubernetes bietet eine eigene Befehlszeilenschnittstelle, kubectl , um Ihnen bei der Verwaltung Ihres Clusters zu helfen. Lesen Sie unseren Leitfaden für die ersten Schritte mit kubectl wenn Sie mit dem Tool nicht vertraut sind.

Nichts vom docker Befehle haben denselben Namen in kubectl . Kubernetes stellt Funktionalität auf seine eigene Weise bereit. Workloads selbst unterscheiden sich grundlegend – Docker ist darauf ausgelegt, mit jeweils einem einzelnen Container zu arbeiten, während Kubernetes die Orchestrierung mehrerer Replikate ermöglicht.

Der erste zu würdigende Punkt ist die Verschiebung der Terminologie. Docker bezieht sich auf „Container“, während Kubernetes „Pods“ verwendet. Ein Pod kann einen Container oder mehrere Replikate ausführen, die als einzelne Einheit verwaltet werden. Abgesehen von diesem Detail sollten Sie, wenn Sie in Docker „Container“ sehen, an einen Kubernetes-„Pod“ denken. Die Begriffe werden für den Rest dieses Artikels austauschbar verwendet.

Details zu Ihren Containern abrufen

In Docker verwenden Sie docker ps -a , um alle Container auf Ihrem Computer anzuzeigen.

Das nächste Kubernetes-Äquivalent ist kubectl get pods .

Die Ausgabe der beiden Befehle ist ziemlich unterschiedlich. Docker zeigt weitere Informationen über die Arbeitslast, die der Container ausführt.

Kubernetes stellt Details zu Bild und Befehl bereit, wenn der describe pod verwendet wird Befehl. Sie müssen den Namen des Pods übergeben. Dies gibt viel ausführlichere Informationen, indem eine Liste anstelle einer Tabelle verwendet wird.

Befehle in Containern ausführen

Mit Docker können Sie einen Befehl in einem laufenden Container mit docker exec ausführen .

Das Kubernetes-Äquivalent heißt auch exec . Verwenden Sie den Kubernetes-Pod-Namen anstelle des Docker-Containernamens. Der Befehl wird etwas anders angegeben – er muss vom Pod-Namen durch ein -- getrennt werden Reihenfolge.

Sie können das -it verwenden Flags, um interaktiven Zugriff auf die gleiche Weise wie Docker zu erhalten. Dies ist eine Abkürzung für --stdin --tty und sollte verwendet werden, wenn Sie eine Shell innerhalb eines Pods starten möchten. Geben Sie den Shell-Namen an, z. B. bash , als Befehl.

Kubectl unterstützt das attach Befehl, wenn Sie an einen Prozess in einem Container anhängen möchten, der bereits ausgeführt wird. Es funktioniert ähnlich wie docker attach aber Sie sollten das -it übergeben Flags, wenn Sie interaktiven Zugriff benötigen.

Anzeigen von Containerprotokollen

Um die Protokolle eines Containers mit Docker anzuzeigen, verwenden Sie die docker logs Befehl. Hinzufügen des -f switch „folgt“ den Protokollen, sodass sie kontinuierlich auf Ihr Terminal gestreamt werden.

logs von Kubectl Befehl hat die gleiche Syntax. Geben Sie einen Pod-Namen auf die gleiche Weise an, wie Docker einen Containernamen akzeptiert.

Sowohl Docker als auch Kubernetes sammeln Protokolle aus der Standardausgabe und dem Standardfehler (stdout /stderr ) Streams laufender Container. Kubernetes verarbeitet Container-Neustarts anders als Docker. Während in Docker ein neu gestarteter Container seine Logs an die bestehenden anhängt, erstellt Kubernetes für jeden Lauf ein neues Log. Sie können die Protokolle eines ersetzten Containers abrufen, indem Sie --previous hinzufügen -Flag in die logs Befehl.

Container erstellen

Docker-Container werden mit dem run erstellt Befehl. So könnten Sie ein nginx starten Server mit Docker:

docker run -d --name nginx --restart=always -p 80:80 nginx

Dadurch wird ein Container mit nginx erstellt Basisimage und stellt es so ein, dass es automatisch neu gestartet wird. Der Server ist an den Standard-HTTP-Port 80 gebunden.

Kubernetes erfordert, dass Sie beim Hinzufügen von Containern zu Ihrem Cluster an Abstraktionen auf höherer Ebene denken. Anstatt einen Container auszuführen, erstellen Sie eine Bereitstellung um Ihre Arbeitsbelastung darzustellen:

kubectl create deployment --image=nginx nginx

Dadurch wird ein nginx erstellt Einsatz. Ein Pod wird automatisch gestartet; Innerhalb des Pods gibt es einen Container, der den Webserver ausführt.

Das Erstellen einer Bereitstellung bindet ihre Container nicht an Ports. Der neu erstellte Server ist noch nicht erreichbar. Ports müssen offen gelegt werden über einen Dienst . Pods sind flüchtig und können mehrere replizierte Container enthalten. Dienste definieren eine logische Sammlung von Pods und lassen Sie ihnen Netzwerkressourcen wie IP-Adresse und Port zuweisen.

Verfügbarmachen von nginx Die Bereitstellung auf Port 80 ermöglicht den Zugriff auf den Server:

kubectl expose deployment nginx --port=80 --name nginx-http

Der Versuch, auf Port 80 der Standard-IP-Adresse des Clusters zuzugreifen, sollte Sie jetzt zu nginx leiten Server.

Kubectl unterstützt andere docker run nicht direkt Optionen wie Volume-Erstellung und Bind-Mounts. Container, die dauerhaften Speicher erfordern, müssen Volumes manuell über kubectl konfigurieren Befehle oder ein Volume-Manifest.

Container entfernen

Docker-Container werden mit docker rm entfernt Befehl mit der ID des Containers.

Kubernetes lässt Sie Container nicht direkt löschen. Stattdessen arbeiten Sie mit der Bereitstellung die den Pod erstellt hat. Verwenden Sie die kubectl delete deployment Befehl, wobei der Name der Bereitstellung übergeben wird.

Docker ermöglicht es Ihnen, anzuhalten einen Behälter, anstatt ihn zu entfernen. Kubernetes hat die Unterstützung für diese Aktion entfernt. Die empfohlene Methode zum vorübergehenden Anhalten einer Bereitstellung besteht darin, die Anzahl der Replikate auf 0 herunterzuskalieren. Wenn keine Pods ausgeführt werden, wird die Arbeitslast effektiv gestoppt.

kubectl scale --replicas=0 deployment/my-deployment

Wenn Sie bereit sind, die Bereitstellung fortzusetzen, führen Sie scale aus erneut befehlen. Legen Sie die Anzahl der neuen Replikate auf 1 fest oder höher. Die Verwendung von mehr Replikaten kann die Verfügbarkeit Ihres Workloads erhöhen.

Schlussfolgerung

Es gibt keine direkten Parallelen zwischen der Docker-CLI und kubectl . Die meisten Kubernetes-Befehle haben eine andere Syntax als ihre Docker-Pendants. Sie müssen sich mit neuen Begriffen und Optionen vertraut machen, bevor Sie Docker-basierte Workflows auf Kubernetes umstellen können.

In vielen Fällen gibt es kein kubectl Alternative zu einer Docker-CLI-Funktion. Die Funktionalität von Docker konzentriert sich auf das Container-Konzept. Kubernetes nimmt das und stellt es in den Mittelpunkt eines stark erweiterten Ressourcen-Ökosystems.

Container werden selten isoliert behandelt. Stattdessen müssen Sie mit Ressourcen wie Bereitstellungen, Diensten und Replikatsätzen arbeiten. Aus diesem Grund kann das Erlernen von Kubernetes aus der Perspektive eines Docker-Benutzers herausfordernd erscheinen.

Wenn Sie mit den Docker-Grundlagen vertraut sind, sollte der Übergang zu Kubernetes dennoch relativ einfach sein. Der Hauptunterschied besteht darin, dass auf das, was Docker als Container ansieht, in Kubernetes normalerweise als aggregierter „Pod“ zugegriffen wird. Pods werden durch „Bereitstellungen“ erstellt, die die Workloads in Ihrem Cluster darstellen. Im Zweifelsfall siehe kubectl docs, um eine passende Übereinstimmung für einen Docker-Befehl zu finden.


Docker
  1. Einige DOCKER-Befehle

  2. Schnellreferenz-Spickzettel für Docker-Befehle

  3. Docker

  4. So installieren Sie Docker auf Fedora 32 oder 31 (und Alternativen)

  5. Führen Sie zwei Befehle mit docker exec aus

Von Docker Compose zu Kubernetes mit Podman

Wie man SSH in einen Docker-Container einfügt und Befehle ausführt

So stellen Sie Docker Compose Stacks mit Kompose in Kubernetes bereit

21 grundlegende Befehle, die jeder Docker-Benutzer kennen sollte

Docker-Befehle zum Verwalten des Containerlebenszyklus (Definitive Guide)

40 wichtige Docker-Befehle für Softwareentwickler