CodeBlanks Logo Icon CodeBlanks

CrashLoopBackOff

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}'
137

Uygulama Çö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

terminal
# buraya yaz

Örnek çözüm

terminal
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=512Mi

Beklenen çı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.

Soru
kubectl logs api-xyz ____
Cevap
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ı

Orta seviye bölümündeki tüm dersler