Lektion 02 · Debuggen

Pods lesen

Die Status-Spalten verstehen — und den ersten kaputten Pod diagnostizieren.

In Lektion 1 hast du kubectl get pods -A gesehen. Jetzt lernst du, was die Spalten bedeuten — damit du auf einen Blick erkennst, ob alles gesund ist.

1. Die vier Spalten von get pods

NAME                     READY   STATUS    RESTARTS        AGE
authentik-server-558…    1/1     Running   16 (22m ago)    2d5h
SpalteBedeutung
READYbereite / gesamte Container im Pod. 1/1 = gut, 0/1 = noch nicht bereit.
STATUSPhase des Pods (siehe Tabelle unten).
RESTARTSWie oft ein Container neu gestartet wurde. Hohe Zahl = etwas stimmt nicht.
AGEWie lange der Pod schon existiert.
Lies READY und RESTARTS zusammen

1/1 Running mit 16 RESTARTS heißt: läuft jetzt, ist aber schon 16× abgestürzt. Grün auf den ersten Blick, krank auf den zweiten. RESTARTS ist das Fieberthermometer des Pods.

2. Die wichtigsten STATUS-Werte

StatusHeißtDein Verdacht
RunningContainer läuftGesund (RESTARTS prüfen!)
PendingNoch nicht platziertKein Node-Platz / Ressourcen / Volume
ContainerCreatingWird gerade gestartetKurz normal; dauerhaft = Image/Volume
CrashLoopBackOffStartet, stirbt, wartet, wiederholtApp-Fehler → logs
ImagePullBackOffImage nicht ladbarFalscher Name/Tag oder Registry-Auth
OOMKilledWegen RAM-Limit getötetLimit zu klein / Memory-Leak
CompletedSauber beendetNormal bei Jobs, untypisch bei Apps

3. Die Diagnose-Leiter

Immer dieselbe Reihenfolge — von außen nach innen:

# 1) Überblick: welcher Pod ist auffällig?
kubectl get pods -n <ns>

# 2) Lupe: scrolle ganz nach unten zu "Events"
kubectl describe pod <name> -n <ns>

# 3) Ins Innere: was sagt die App selbst?
kubectl logs <name> -n <ns>

# 3b) Wenn der Pod gerade neu gestartet ist: Logs des Vorgängers!
kubectl logs <name> -n <ns> --previous
Welche Stufe wofür?

describe beantwortet „warum kommt der Pod nicht hoch?“ (Scheduling, Image, Mounts — steht in Events). logs beantwortet „warum stürzt die App ab, nachdem sie startete?“. Bei CrashLoopBackOff ist --previous oft der Schlüssel.

4. Hands-on an deinem Cluster

Du hast einen echten Patienten: authentik-server hatte 16 Restarts. Untersuche ihn — alles read-only.

# Finde Pods mit Restarts (in deinem Cluster: ns "authentik")
kubectl get pods -n authentik

# Lupe drauf — lies den Abschnitt "Events" und "Last State"
kubectl describe pod -n authentik -l app.kubernetes.io/name=authentik

# Was sagt die App? (ggf. Pod-Namen aus get einsetzen)
kubectl logs -n authentik <pod-name> --previous

Frag dich: War es ein App-Fehler (logs) oder ein Plattform-Problem (Events im describe)?

Selbsttest

1. Ein Pod zeigt 0/1 Pending. Welcher Befehl bringt dich am schnellsten zur Ursache?
2. Ein Pod ist CrashLoopBackOff. Wo liegt der Fehler am ehesten?
3. Was bedeutet 2/3 in der Spalte READY?
Frag deinen Lehrer: z. B. „Warum startet authentik-server immer wieder neu?“, „Was ist der Unterschied zwischen CrashLoopBackOff und Error?“ oder „Zeig mir, wie ich gezielt nur kranke Pods finde.“