Zum Inhalt

Pod Status

Ziel

  • TODO

Hilfsmittel

  • Versuchen Sie, die unten stehenden Aufgaben mit Hilfe der Folien und der Cheatsheets eigenständig zu lösen.
  • Sollten Sie dabei Probleme haben, finden Sie bei jeder Aufgabe einen ausklappbaren Block, in dem der Lösungsweg beschrieben wird.

"Successfully completed"

  1. Erstellen Sie eine Datei completed.yaml, die folgendermaßen aussieht:

    ---
    apiVersion: v1
    kind: Pod
    metadata:
      name: completed
      labels:
        exercise: pod-status
    spec:
      containers:
      - name: completed
        image: alpine
        command:
        - "true"
      restartPolicy: Never
    

  2. Wenden Sie den Pod mit kubectl apply an.

  3. Betrachten Sie die Pod Status-Phase und die Pod Status Bedingungen mit kubectl get pod.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
  • Pod Status-Phase:
    $ kubectl get pod completed -o json | jq .status.phase
    
    "Succeeded"
    
    "Succeeded" bedeutet, dass alle Containers in dem Pod erfolgreich abgeschlossen sind, und nicht neu gestartet werden.
  • Pod Status Bedingungen:
    $ kubectl get pod completed -o json | jq .status.conditions
    
    [
      {
        "lastProbeTime": null,
        "lastTransitionTime": "2024-04-02T08:00:57Z",
        "reason": "PodCompleted",
        "status": "True",
        "type": "Initialized"
      },
      {
        "lastProbeTime": null,
        "lastTransitionTime": "2024-04-02T08:00:57Z",
        "reason": "PodCompleted",
        "status": "False",
        "type": "Ready"
      },
      {
        "lastProbeTime": null,
        "lastTransitionTime": "2024-04-02T08:00:57Z",
        "reason": "PodCompleted",
        "status": "False",
        "type": "ContainersReady"
      },
      {
        "lastProbeTime": null,
        "lastTransitionTime": "2024-04-02T08:00:57Z",
        "status": "True",
        "type": "PodScheduled"
      }
    ]
    
    Der Pod ging durch vier Arten von Bedingungen:
  • "PodScheduled": bedeutet, dass der Pod einem Knoten zugewiesen wurde.
  • "Initialized" bedeutet, dass alle initContainers erfolgreich abgeschlossen sind. Da wir keine initContainer haben, ist die Bedingung erfüllt.
  • "ContainersReady" bedeutet, dass alle Container in dem Pod bereit sind. Da der Prozess unseres Container-Kommados true sofort existiert, hat der Container die "ContainersReady" Bedingung sofort verlassen.
  • "Ready" bedeutet, dass der Pod in der Lage ist, Anfragen zu bedienen und zu den Lastausgleichspools aller passenden Dienste hinzugefügt werden sollte. Wie durch "PodCompleted" angezeigt, hat unser Pod den Zustand "Ready" bereits verlassen, da der Container-Prozess beendet wurde und die RestartPolicy einen Neustart verhindert.
    Leider sind die Bedingungen, wie sie in kubectl get pod erscheinen, möglicherweise nicht in der richtigen Reihenfolge.

Cleanup

  • Löschen Sie alle Objekte, die wir mit kubectl delete erstellt haben, indem Sie den Label-Selektor für diese speziellen Übungen verwenden.
  • Beobachten Sie, wie sie mit watch kubectl get all verschwinden.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
kubectl delete pods --selector exercise=pod-status