Skip to content

Runbook: PodCrashLoopBackOff

Alerte : PodCrashLoopBackOff (PrometheusRule, severity critical)

Symptôme :

Container <container> in pod <pod> is stuck in CrashLoopBackOff for more than 5 minutes.

Severity : 🔴 critical — notif Slack #akko-critical, repeat 1h


Diagnostic

1. Vérifier l'état du pod

export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl get pod -n akko <pod> -o wide
kubectl describe pod -n akko <pod> | tail -30

2. Lire les logs crash

# Logs du container qui crashe (current run)
kubectl logs -n akko <pod> -c <container> --tail=200

# Logs du run précédent (celui qui a crashé)
kubectl logs -n akko <pod> -c <container> --previous --tail=200

3. Vérifier les events Kubernetes

kubectl get events -n akko --sort-by='.lastTimestamp' | grep <pod> | tail -20

Causes fréquentes + fix

Cause Symptôme logs Fix
OOMKilled exit code 137 ou absent des logs (process killed avant d'écrire) Bump resources.limits.memory dans values + helm upgrade
Missing config FileNotFoundError, config not found Vérifier ConfigMap mount (kubectl describe pod ... → section Volumes)
Missing secret Authentication failed, secret key not found Vérifier kubectl get secret -n akko <name> existe et contient les clés
DB connection refused could not connect to server, connection refused Vérifier DB ready : kubectl get sts -n akko akko-postgresql
Image pull error ImagePullBackOff (runbook à venir Sprint 22) Fix Harbor creds ou registry URL
Startup timeout Liveness probe failed before app ready Bump initialDelaySeconds dans values
Config invalide yaml.parser.ParserError, invalid reference Revert helm upgrade: helm rollback akko <previous>

Fix pérenne (règle R02 : zero workaround)

Si la cause est un bug dans une image custom AKKO :

  1. Fix dans le code (docker/<image>/...)
  2. Commit + push
  3. CI rebuild l'image + deploy
  4. Vérifier pod Running
  5. Update le runbook si la cause était nouvelle

Jamais kubectl edit en live. Toujours via Git.


Rollback si le fix casse

helm history akko -n akko
helm rollback akko <previous-revision> -n akko

Prévention

  • Ajouter un Playwright test qui vérifie le pod Running après deploy (déjà fait dans tests/playwright/tests/smoke-fix-validation.spec.ts)
  • Ajouter une PrometheusRule spécifique si ce type de crash se répète (modifier helm/akko/templates/prometheusrule-akko.yaml)

Liens utiles