CrashLoopBackOff
- Docker & Kubernetes kursu
- Orta seviye
- Ders 75/82
- 4 dk
CrashLoopBackOff hatasını tanımayı öğrenirsin.
CrashLoopBackOff
CrashLoopBackOff, container'ın başlayıp hemen çöktüğünü ve kubelet'in her denemede bekleme süresini artırarak (10 sn, 20 sn, 40 sn ... en fazla 5 dk) yeniden başlattığını gösterir. Bir sonuç değil, belirtidir; nedeni container'ın son log'undadır:
$ kubectl get pod api-xyz
NAME READY STATUS RESTARTS AGE
api-xyz 0/1 CrashLoopBackOff 6 (90s ago) 8m
$ kubectl logs api-xyz --previous
Error: DATABASE_URL tanımlı değil
$ kubectl describe pod api-xyz | grep -A2 "Last State"
Last State: Terminated
Reason: Error
Exit Code: 1Çıkış kodları
Çıkış kodu nedeni daraltır:
1: uygulama hatası (log'a bak)126/127: komut çalıştırılamadı / bulunamadı (yanlışcommand)137: SIGKILL; genellikle OOMKilled ya da liveness başarısızlığı143: SIGTERM ile düzgün kapandı
kubectl get pod api-xyz -o jsonpath='{.status.containerStatuses[0].lastState.terminated.exitCode}'
137Uygulama Çökmenin nedeni
Üç komut yaz: api-xyz'nin önceki container log'unu göster; son çıkış kodunu jsonpath='{.status.containerStatuses[0].lastState.terminated.exitCode}' ile yazdır; api deployment'ının api container'ının bellek sınırını kubectl set resources ile 512Mi yap.
Başlangıç kodu
# buraya yazÖrnek çözüm
kubectl logs api-xyz --previous
kubectl get pod api-xyz -o jsonpath='{.status.containerStatuses[0].lastState.terminated.exitCode}'
kubectl set resources deployment/api -c api --limits=memory=512MiBeklenen çıktı
INFO önbellek dolduruluyor (1.2M kayıt) Killed 137 deployment.apps/api resource requirements updated
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Last State'te Reason: OOMKilled ve Exit Code: 137 görüyorsan neden nedir?
- Yanlış komut
- Ağ hatası
- Container bellek sınırını aştı Doğru cevap
- Image bulunamadı
Açıklama: 137 = 128 + 9 (SIGKILL); çözüm limits.memory'yi artırmak ya da sızıntıyı bulmak.
2 Çöken container'ın çıktısına bak.
kubectl logs api-xyz ____
kubectl logs api-xyz --previous
Açıklama: Yeniden başlayan container'ın önceki örneğinin log'u.
3 Çıkış kodlarını eşleştir.
| Kavram | Anlamı |
|---|---|
1 |
Uygulama hatası |
127 |
Komut bulunamadı |
137 |
SIGKILL / OOMKilled |
143 |
SIGTERM ile kapandı |