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¶
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 :
- Fix dans le code (
docker/<image>/...) - Commit + push
- CI rebuild l'image + deploy
- Vérifier pod Running
- Update le runbook si la cause était nouvelle
Jamais kubectl edit en live. Toujours via Git.
Rollback si le fix casse¶
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¶
- Services index — quelles deps par service
- Troubleshooting général
- Logs logs layer :
{namespace="akko", pod=~".*<service>.*"} |= "error"