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 (
RunningveyaCrashing). - 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:
- kubelet, düğümde düzenli olarak liveness testi ile konteyneri kontrol eder.
- Liveness testi durumu sağlanmaz (örneğin, HTTP sunucusu yanıt vermiyor, komut hata ile sona eriyor).
- kubelet test başarısızlığını kaydeder.
- Belirli sayıda başarısız deneme sonrası (
failureThreshold,initialDelaySeconds,periodSeconds,timeoutSecondsparametreleriyle yapılandırılmış), kubelet konteynerin arızalı olduğunu belirler. - kubelet, arızalı konteynere
SIGKILLsinyali gönderir. - Konteyner sona erer.
- kubelet aynı pod içindeki konteyneri yeniden başlatır.
- 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ı