Middle
Ce se întâmplă dacă testul de liveness nu trece în Kubernetes?
sobes.tech AI
Răspuns de la AI
Dacă podul nu trece testul de liveness, Kubernetes va executa acțiunea specificată în manifestul podului. În mod implicit, acest lucru repornește containerul.
Acțiuni posibile în cazul eșecului testului de liveness:
- Repornire: Repornirea containerului din interiorul podului. Această acțiune este implicită.
- Niciuna: Kubernetes nu va întreprinde nicio acțiune în cazul eșecului testului de liveness. Containerul va rămâne în starea sa actuală (
RunningsauCrashing). - Execută comandă: Executarea unei comenzi specifice în interiorul containerului. Dacă comanda se încheie cu un cod de ieșire diferit de zero, testul de liveness este considerat eșuat.
Scenariul cu acțiunea implicită (Repornire):
- kubelet pe nod verifică regulat containerul folosind testul de liveness.
- Condiția testului de liveness nu este îndeplinită (de exemplu, serverul HTTP nu răspunde, comanda se încheie cu eroare).
- kubelet înregistrează eșecul testului.
- După un anumit număr de încercări nereușite (configurate prin parametrii
failureThreshold,initialDelaySeconds,periodSeconds,timeoutSeconds), kubelet determină că containerul este defect. - kubelet trimite semnalul
SIGKILLcătre containerul defect. - Containerul se termină.
- kubelet repornește containerul în același pod.
- Procesul testului de liveness se reia.
Este important să diferențiem între testul de liveness și cel de readiness. Testul de readiness determină dacă containerul este gata să primească trafic. Eșecul testului de readiness face ca Service să nu direcționeze trafic către această instanță a podului, dar containerul nu se repornește. Eșecul testului de liveness indică o defecțiune și necesită o repornire.
# Exemplu de test de liveness în spec.containers
containers:
- name: my-container
image: my-image:latest
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15 # Întârziere înainte de prima verificare
periodSeconds: 20 # Interval între verificări
timeoutSeconds: 5 # Timp de așteptare pentru răspuns
failureThreshold: 3 # Număr de eșecuri înainte de repornire