Kubernetes Exec-Befehl

KubernetesKubernetesBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab erfahren Sie, wie Sie den Kubernetes-Befehl exec verwenden können, um Befehle innerhalb eines Containers auszuführen, der in einem Kubernetes-Pod läuft. Sie beginnen mit einfachen Beispielen und arbeiten sich schrittweise zu komplexeren Szenarien vor.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 97% ist. Es hat eine positive Bewertungsrate von 97% von den Lernenden erhalten.

Starten des Minikube-Clusters

Bevor Sie Ressourcen erstellen, benötigen Sie einen laufenden Kubernetes-Cluster. Minikube ist eine leichte Kubernetes-Umgebung, die auf Ihrem lokalen Rechner läuft.

  1. Navigieren Sie zu Ihrem Arbeitsverzeichnis:

    Öffnen Sie das Terminal und navigieren Sie zum Standard-Projektordner:

    cd /home/labex/project
  2. Starten Sie Minikube:

    Starten Sie Minikube, um einen Kubernetes-Cluster zu initialisieren:

    minikube start
    • Dieser Befehl richtet einen Ein-Knoten-Kubernetes-Cluster auf Ihrem lokalen Rechner ein.
    • Minikube kann je nach Leistung Ihres Systems einige Minuten dauern, um zu starten.
  3. Überprüfen Sie, ob Minikube läuft:

    Überprüfen Sie den Status des Minikube-Clusters:

    minikube status
    • Suchen Sie nach Komponenten wie kubelet und apiserver, die als Running aufgeführt sind.
    • Wenn der Cluster nicht läuft, führen Sie minikube start erneut aus.

Wenn Sie Probleme beim Starten von Minikube haben, können Sie minikube delete verwenden, um die Umgebung bei Bedarf zurückzusetzen.

Erkundung des kubectl exec-Befehls

Der kubectl exec-Befehl wird verwendet, um Befehle direkt innerhalb eines Containers in einem Pod auszuführen. Er ist besonders nützlich für das Debugging und die Inspektion von Container-Umgebungen.

Führen Sie den folgenden Befehl aus, um die verfügbaren Optionen für kubectl exec anzuzeigen:

kubectl exec -h

Sie werden die folgende Ausgabe sehen:

Führt einen Befehl in einem Container aus.

Beispiele:
  ## Holen Sie die Ausgabe des Befehls 'date' aus dem Pod mypod, standardmäßig aus dem ersten Container
  kubectl exec mypod -- date

  ## Holen Sie die Ausgabe des Befehls 'date' aus dem Container ruby-container im Pod mypod
  kubectl exec mypod -c ruby-container -- date

  ## Wechseln Sie in den Roh-Terminalmodus; sendet die Standardeingabe an 'bash' im Container ruby-container im Pod mypod
  ## und sendet die Standardausgabe/Fehlerausgabe von 'bash' zurück an den Client
  kubectl exec mypod -c ruby-container -i -t -- bash -il

  ## Listen Sie den Inhalt von /usr aus dem ersten Container des Pods mypod auf und sortieren Sie ihn nach Änderungszeit
  ## Wenn der Befehl, den Sie im Pod ausführen möchten, gemeinsame Flags hat (z. B. -i),
  ## müssen Sie zwei Bindestriche (--) verwenden, um die Flags/Argumente Ihres Befehls zu trennen
  ## Beachten Sie auch, umgeben Sie Ihren Befehl und seine Flags/Argumente nicht mit Anführungszeichen,
  ## es sei denn, das ist die normale Art, ihn auszuführen (d. h., führen Sie ls -t /usr aus, nicht "ls -t /usr")
  kubectl exec mypod -i -t -- ls -t /usr

  ## Holen Sie die Ausgabe des Befehls 'date' aus dem ersten Pod der Bereitstellung mydeployment, standardmäßig aus dem ersten Container
  kubectl exec deploy/mydeployment -- date

  ## Holen Sie die Ausgabe des Befehls 'date' aus dem ersten Pod des Dienstes myservice, standardmäßig aus dem ersten Container
  kubectl exec svc/myservice -- date

Ausführen eines Befehls in einem Container

In diesem Schritt erfahren Sie, wie Sie einen Befehl in einem Container ausführen, der in einem Pod läuft.

  1. Beginnen Sie mit der Erstellung einer Bereitstellung (deployment) mit einer Replik (replica) und einem Nginx-Container:

    kubectl create deployment nginx --image=nginx --replicas=1
  2. Warten Sie, bis der Pod bereit ist:

    kubectl wait --for=condition=Ready pod -l app=nginx
  3. Verwenden Sie den kubectl exec-Befehl, um einen Befehl innerhalb des Nginx-Containers auszuführen:

    kubectl exec -it POD_NAME -- /bin/bash

    Ersetzen Sie POD_NAME durch den Namen des in Schritt 1 erstellten Pods. Sie können den POD_NAME mit dem Befehl kubectl get pod -l app=nginx abrufen.

Ausführen eines Befehls in einem bestimmten Container

In diesem Schritt erfahren Sie, wie Sie einen Befehl in einem bestimmten Container ausführen, der in einem Pod mit mehreren Containern läuft.

  1. Erstellen Sie einen Pod mit zwei Containern: Nginx und BusyBox:

    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-busybox
    spec:
      containers:
      - name: nginx
        image: nginx
      - name: busybox
        image: busybox
        command:
          - sleep
          - "3600"
    EOF
  2. Warten Sie, bis der Pod bereit ist:

    kubectl wait --for=condition=Ready pod nginx-busybox
  3. Verwenden Sie den kubectl exec-Befehl, um einen Befehl innerhalb des BusyBox-Containers auszuführen:

    kubectl exec nginx-busybox -c busybox -- ls /bin

Ausführen eines Befehls mit einer TTY

In diesem Schritt erfahren Sie, wie Sie einen Befehl mit einer TTY (Terminal) in einem Container ausführen.

  1. Verwenden Sie den kubectl exec-Befehl mit den Optionen -it, um einen Befehl mit einer TTY auszuführen:

    kubectl exec -it nginx-busybox -- /bin/sh
  2. Sobald Sie sich in der Container-Shell befinden, führen Sie einen Befehl aus:

    echo "Hello, world!"
  3. Verlassen Sie die Container-Shell:

    exit

Ausführen eines Befehls mit Umgebungsvariablen

In diesem Schritt erfahren Sie, wie Sie einen Befehl mit Umgebungsvariablen innerhalb eines Containers ausführen.

  1. Erstellen Sie eine Bereitstellung (deployment) mit einer Replik (replica) und einem Nginx-Container mit einer Umgebungsvariablen:

    kubectl run nginx-env --image=nginx --env="MY_VAR=my-value"
  2. Warten Sie, bis der Pod bereit ist:

    kubectl wait --for=condition=Ready pod -l run=nginx-env
  3. Verwenden Sie den kubectl exec-Befehl, um einen Befehl innerhalb des Nginx-Containers auszuführen, der die Umgebungsvariable ausgibt:

    kubectl exec nginx-env -- sh -c 'echo $MY_VAR'

    Ersetzen Sie nginx-env durch den Namen des in Schritt 1 erstellten Pods.

Zusammenfassung

Herzlichen Glückwunsch, Sie haben das Lab zum Kubernetes exec-Befehl erfolgreich abgeschlossen! In diesem Lab haben Sie gelernt, wie Sie den kubectl exec-Befehl verwenden, um Befehle innerhalb von Containern auszuführen, die in Kubernetes-Pods laufen. Sie haben auch gelernt, wie Sie Befehle in bestimmten Containern ausführen, Befehle mit einer TTY ausführen und Befehle mit Umgebungsvariablen ausführen. Diese Fähigkeiten sind für die Fehlersuche in einem Kubernetes-Cluster unerlässlich.