Containerprobe in Kubernetes

KubernetesKubernetesIntermediate
Jetzt üben

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

Einführung

In Kubernetes ist eine Prüfung (Probe) ein diagnostisches Tool, das verwendet wird, um festzustellen, ob ein Container am Leben ist und bereit ist, Datenverkehr zu akzeptieren. Es gibt zwei Arten von Prüfungen: Liveness-Prüfungen (Liveness Probes) und Readiness-Prüfungen (Readiness Probes). In diesem Lab werden wir uns auf ContainerProbe konzentrieren, ein Tool, das dazu dient, zu erkennen, wann ein Container bereit ist, Datenverkehr zu akzeptieren.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/exec("Exec") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/logs("Logs") subgraph Lab Skills kubernetes/initialization -.-> lab-12263{{"Containerprobe in Kubernetes"}} kubernetes/get -.-> lab-12263{{"Containerprobe in Kubernetes"}} kubernetes/create -.-> lab-12263{{"Containerprobe in Kubernetes"}} kubernetes/apply -.-> lab-12263{{"Containerprobe in Kubernetes"}} kubernetes/describe -.-> lab-12263{{"Containerprobe in Kubernetes"}} kubernetes/exec -.-> lab-12263{{"Containerprobe in Kubernetes"}} kubernetes/logs -.-> lab-12263{{"Containerprobe in Kubernetes"}} end

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 in Ihr Arbeitsverzeichnis:

    Öffnen Sie das Terminal und navigieren Sie in den Standardprojektordner:

    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. Vergewissern Sie sich, dass 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.

Erstellen einer Deployment

Der erste Schritt besteht darin, eine Deployment (Bereitstellung) in Kubernetes zu erstellen. Wir werden diese Deployment verwenden, um den ContainerProbe zu testen.

  1. Erstellen Sie eine neue Datei mit dem Namen deployment.yaml im Verzeichnis /home/labex/project.
  2. Kopieren Sie den folgenden Code und fügen Sie ihn in die Datei ein:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: containerprobe-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: containerprobe
  template:
    metadata:
      labels:
        app: containerprobe
    spec:
      containers:
        - name: containerprobe
          image: nginx
          ports:
            - containerPort: 80

Dieser Code erstellt eine Deployment mit einer Replik (Replica), einem Selektor (Selector) mit der Bezeichnung app: containerprobe und einem Container, der das nginx-Image ausführt.

  1. Wenden Sie die Deployment auf Ihren Cluster an:
kubectl apply -f deployment.yaml

Hinzufügen einer Liveness-Prüfung (Liveness Probe)

Der nächste Schritt besteht darin, eine Liveness-Prüfung (Liveness Probe) zum nginx-Container hinzuzufügen. Eine Liveness-Prüfung wird verwendet, um festzustellen, ob der Container am Leben ist. Wenn die Prüfung fehlschlägt, wird Kubernetes den Container neu starten.

  1. Aktualisieren Sie die Datei deployment.yaml im Verzeichnis /home/labex/project mit folgendem Inhalt:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: containerprobe-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: containerprobe
  template:
    metadata:
      labels:
        app: containerprobe
    spec:
      containers:
        - name: containerprobe
          image: nginx
          ports:
            - containerPort: 80
          livenessProbe:
            httpGet:
              path: /
              port: 80

Dieser Code gibt an, dass die Liveness-Prüfung eine HTTP GET-Anfrage an den Root-Pfad auf Port 80 senden sollte.

  1. Aktualisieren Sie die Deployment:
kubectl apply -f deployment.yaml

Testen der Liveness-Prüfung (Liveness Probe)

Nachdem wir eine Liveness-Prüfung (Liveness Probe) hinzugefügt haben, können wir sie testen, um zu überprüfen, ob sie korrekt funktioniert.

  1. Ermitteln Sie den Namen des Pods:
kubectl get pods -l app=containerprobe -o jsonpath='{.items[0].metadata.name}'

Dieser Befehl ermittelt den Namen des von der Deployment erstellten Pods.

  1. Ermitteln Sie den Status der Liveness-Prüfung:
kubectl describe pod <pod-name>

Ersetzen Sie <pod-name> durch den Namen des Pods aus dem vorherigen Schritt.

Sie sollten eine Ausgabe sehen, die Folgendes enthält:

Liveness: http-get http://:80/ delay=0s timeout=1s period=10s #success=1 #failure=3

Dies zeigt an, dass die Liveness-Prüfung korrekt konfiguriert ist.

Hinzufügen einer Readiness-Prüfung (Readiness Probe)

Der nächste Schritt besteht darin, eine Readiness-Prüfung (Readiness Probe) zum nginx-Container hinzuzufügen. Eine Readiness-Prüfung wird verwendet, um festzustellen, ob der Container bereit ist, Datenverkehr zu akzeptieren. Wenn die Prüfung fehlschlägt, wird Kubernetes keinen Datenverkehr an den Container senden.

  1. Fügen Sie den folgenden Code zur Container-Definition in deployment.yaml hinzu:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: containerprobe-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: containerprobe
  template:
    metadata:
      labels:
        app: containerprobe
    spec:
      containers:
        - name: containerprobe
          image: nginx
          ports:
            - containerPort: 80
          livenessProbe:
            httpGet:
              path: /
              port: 80
          readinessProbe:
            httpGet:
              path: /
              port: 80

Dieser Code gibt an, dass die Readiness-Prüfung eine HTTP GET-Anfrage an den Root-Pfad auf Port 80 senden sollte.

  1. Aktualisieren Sie die Deployment:
kubectl apply -f deployment.yaml

Testen der Readiness-Prüfung (Readiness Probe)

Nachdem wir eine Readiness-Prüfung (Readiness Probe) hinzugefügt haben, können wir sie testen, um zu überprüfen, ob sie korrekt funktioniert.

  1. Ermitteln Sie den Namen des Pods:
kubectl get pods -l app=containerprobe -o jsonpath='{.items[0].metadata.name}'

Dieser Befehl ermittelt den Namen des von der Deployment erstellten Pods.

  1. Ermitteln Sie den Status der Readiness-Prüfung:
kubectl describe pod <pod-name>

Ersetzen Sie <pod-name> durch den Namen des Pods aus dem vorherigen Schritt.

Sie sollten eine Ausgabe sehen, die Folgendes enthält:

Readiness: http-get http://:80/ delay=0s timeout=1s period=10s #success=1 #failure=3

Dies zeigt an, dass die Readiness-Prüfung korrekt konfiguriert ist.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man ContainerProbe in Kubernetes verwendet. Wir haben eine Deployment (Bereitstellung) erstellt, eine Liveness-Prüfung (Liveness Probe) hinzugefügt, die Liveness-Prüfung getestet, eine Readiness-Prüfung (Readiness Probe) hinzugefügt und die Readiness-Prüfung getestet. Durch die Verwendung von ContainerProbe können wir sicherstellen, dass unsere Container bereit sind, Datenverkehr zu akzeptieren und korrekt funktionieren.