Troubleshooting
Troubleshooting Commands
Troubleshooting Commands
Nützliche Befehle und One-Liner für die tägliche Arbeit mit Kubernetes und Helm.
Debugging Basics
Erster Schritt bei Problemen: Status und Events prüfen.
get: Zeigt den aktuellen Status (z.B.CrashLoopBackOff,Pending).describe: Liefert Details und die letzten Events (unverzichtbar bei Scheduling- oder Image-Fehlern).logs: Zeigt die Konsolenausgabe der Applikation.
Offizieller Kubernetes Troubleshooting Guide
Cluster Health
# Basis-Infos
kubectl cluster-info
# API Erreichbarkeit (vom Client)
curl -k "https://<CPL-IP>:6443/livez?verbose"
# Kubelet Health (auf dem Node)
curl http://127.0.0.1:10248/healthzAufräumen (Housekeeping)
[!WARNING] Diese Befehle löschen Ressourcen. Vorsicht beim Ausführen in Produktionsumgebungen!
Evicted/Failed Pods entfernen
Löscht alle Pods, die nicht mehr gesund sind (z.B. Evicted, Error).
kubectl get pods --all-namespaces | egrep "Evicted|Error|ContainerStatusUnknown" | awk '{print $1, $2}' | xargs -n2 sh -c 'kubectl delete pod -n "$0" "$1"'Gescheiterte Jobs bereinigen
Löscht Jobs, die nicht erfolgreich durchgelaufen sind.
kubectl get jobs.batch -o jsonpath='{range .items[?(@.status.failed==1)]}{.metadata.name}{"\n"}{end}' | xargs -r kubectl delete jobAnalyse & Übersicht
Welche Images laufen im Cluster?
Listet alle verwendeten Container-Images und zählt deren Häufigkeit.
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec['initContainers', 'containers'][*].image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -cPod Prioritäten anzeigen
kubectl get pods -A -o custom-columns="NAME:.metadata.name,NAMESPACE:.metadata.namespace,PRIORITY:.spec.priorityClassName"Konnektivitäts-Check (Network Loop)
Ein Bash-Einzeiler, der kontinuierlich eine URL prüft und Status-Code sowie Zeit ausgibt. Ideal, um kurze Aussetzer während Deployments zu erkennen.
while true; do echo -n "$(date '+%Y-%m-%d %H:%M:%S') - "; curl -s -o /dev/null -w "%{http_code}\n" --connect-timeout 1 --max-time 2 https://example.com || echo "FAIL"; sleep 1; doneStandard Pod-Befehle
# Status und IP
kubectl get pods -n <namespace>
# Events und Konfiguration
kubectl describe pod <pod-name> -n <namespace>
# Logs (aktuell)
kubectl logs <pod-name> -n <namespace>
# Logs (vor dem Crash)
kubectl logs <pod-name> -n <namespace> --previousHelm
# Alle Releases anzeigen
helm list -A
# Aktuell deployte Values auslesen (User-Supplied Values)
helm get values <release-name> -n <namespace>
# Was würde bei einem Upgrade passieren? (Dry-Run)
helm upgrade --install <release-name> <chart-path> -f values.yaml --dry-runKustomize
# Manifeste rendern (ohne Apply)
kubectl kustomize <path-to-kustomization-directory>
# Apply mit Prune (löscht entfernte Ressourcen)
# Vorsicht: --all kann gefährlich sein, wenn Selektoren zu breit sind!
kubectl apply -k <path-to-kustomization-directory> --prune --all