Middle
Kubernetes-də liveness-testindən keçməzsə, nə baş verir?
sobes.tech Süni İntellekt
AI-dan cavab
Əgər pod liveness-testindən keçməzsə, Kubernetes manifestdə göstərilən əməliyyatı həyata keçirəcək. Əsasən, bu konteynerin yenidən başlatılmasıdır.
Liveness-testində uğursuzluq halında mümkün olan əməliyyatlar:
- Yenidən başlat: Pod daxilində konteyneri yenidən başlat. Bu, standart əməliyyatdır.
- Heç bir şey etmə: Kubernetes liveness-testində uğursuz olarsa, heç bir əməliyyat həyata keçirməz. Konteyner hazırkı vəziyyətdə qalacaq (
Runningvə yaCrashing). - Əmr icra et: Konteyner daxilində müəyyən bir əmri icra et. Əgər əmrin çıxış kodu sıfırdan fərqli olarsa, liveness-test uğursuz sayılır.
Standart əməliyyat ilə (Yenidən başlatma) scenariyo:
- kubelet nodda müntəzəm olaraq liveness-test vasitəsilə konteyneri yoxlayır.
- Liveness-test şərti yerinə yetirilmir (məsələn, HTTP server cavab vermir, əmrin sonunda səhv olur).
- kubelet test uğursuzluğunu qeyd edir.
- Bir neçə uğursuz cəhd (parametrlər
failureThreshold,initialDelaySeconds,periodSeconds,timeoutSecondsilə tənzimlənir) sonrası kubelet konteynerin zədələndiyini müəyyən edir. - kubelet zədələnmiş konteynerə
SIGKILLsiqnalı göndərir. - Konteyner dayandırılır.
- kubelet həmin podda konteyneri yenidən başlatır.
- Liveness-test prosesi yenidən başlayır.
Liveness-test ilə readiness-test arasındakı fərqi ayırmaq vacibdir. Readiness-test konteynerin trafik qəbul etməyə hazır olub-olmadığını müəyyən edir. Readiness-test uğursuz olarsa, Service bu pod nümunəsinə trafik yönəltmir, amma konteyner yenidən başlatılmır. Liveness-test uğursuzluğu isə nasazlığı göstərir və yenidən başlatma tələb edir.
# spec.containers içində livenessProbe nümunəsi
containers:
- name: my-container
image: my-image:latest
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15 # İlk yoxlamadan əvvəl gecikmə
periodSeconds: 20 # Yoxlamalar arasındakı interval
timeoutSeconds: 5 # Cavab üçün gözləmə müddəti
failureThreshold: 3 # Yenidən başlatmadan əvvəl uğursuz cəhdlərin sayı