Sobes.tech
Middle

Kubernetes'te liveness testi geçilmezse ne olur?

sobes.tech yapay zeka

AI'dan gelen yanıt

Pod liveness testini geçemezse, Kubernetes manifestte belirtilen işlemi gerçekleştirir. Varsayılan olarak, bu konteyneri yeniden başlatmaktır.

Liveness testinde başarısız olma durumunda olası işlemler:

  • Yeniden Başlat: Pod içindeki konteyneri yeniden başlatır. Bu varsayılan işlemdir.
  • Hiçbiri: Kubernetes, liveness testinde başarısız olursa herhangi bir işlem yapmaz. Konteyner mevcut durumunda kalır (Running veya Crashing).
  • Komut Çalıştır: Konteyner içinde belirli bir komut çalıştırılır. Komut sıfır olmayan bir çıkış kodu ile sona ererse, liveness testi başarısız sayılır.

Varsayılan işlemle (Yeniden Başlat) ilgili senaryo:

  1. kubelet, düğümde düzenli olarak liveness testi ile konteyneri kontrol eder.
  2. Liveness testi durumu sağlanmaz (örneğin, HTTP sunucusu yanıt vermiyor, komut hata ile sona eriyor).
  3. kubelet test başarısızlığını kaydeder.
  4. Belirli sayıda başarısız deneme sonrası (failureThreshold, initialDelaySeconds, periodSeconds, timeoutSeconds parametreleriyle yapılandırılmış), kubelet konteynerin arızalı olduğunu belirler.
  5. kubelet, arızalı konteynere SIGKILL sinyali gönderir.
  6. Konteyner sona erer.
  7. kubelet aynı pod içindeki konteyneri yeniden başlatır.
  8. Liveness testi yeniden başlar.

Liveness testi ile readiness testi arasındaki farkı ayırt etmek önemlidir. Readiness testi, konteynerin trafik almaya hazır olup olmadığını belirler. Readiness testi başarısız olursa, Service bu pod örneğine trafik yönlendirmez, ancak konteyner yeniden başlatılmaz. Liveness testi başarısızlığı, arızayı gösterir ve yeniden başlatma gerektirir.

# spec.containers içindeki livenessProbe örneği
containers:
  - name: my-container
    image: my-image:latest
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 15 # İlk kontrol öncesi gecikme
      periodSeconds: 20      # Kontrol aralığı
      timeoutSeconds: 5       # Yanıt bekleme süresi
      failureThreshold: 3     # Yeniden başlatmadan önce başarısız deneme sayısı