Middle
¿Qué sucede si no pasa la prueba de vivacidad en Kubernetes?
sobes.tech AI
Respuesta de la IA
Si el pod no pasa la prueba de liveness, Kubernetes realizará la acción especificada en el manifiesto del pod. Por defecto, esto es reiniciar el contenedor.
Acciones posibles en caso de fallo en la prueba de liveness:
- Reiniciar: Reiniciar el contenedor dentro del pod. Esta acción es la predeterminada.
- Ninguna: Kubernetes no tomará ninguna acción en caso de fallo en la prueba de liveness. El contenedor permanecerá en su estado actual (
RunningoCrashing). - Ejecutar comando: Ejecutar un comando específico dentro del contenedor. Si el comando termina con un código de retorno distinto de cero, la prueba de liveness se considera fallida.
Escenario con la acción predeterminada (Reiniciar):
- kubelet en el nodo verifica regularmente el contenedor mediante la prueba de liveness.
- La condición de la prueba de liveness no se cumple (por ejemplo, el servidor HTTP no responde, el comando termina con error).
- kubelet registra la falla de la prueba.
- Después de algunos intentos fallidos (configurados por los parámetros
failureThreshold,initialDelaySeconds,periodSeconds,timeoutSeconds), kubelet determina que el contenedor está defectuoso. - kubelet envía la señal
SIGKILLal contenedor defectuoso. - El contenedor se termina.
- kubelet reinicia el contenedor en el mismo pod.
- La prueba de liveness se reanuda.
Es importante distinguir entre la prueba de liveness y la prueba de readiness. La prueba de readiness determina si el contenedor está listo para recibir tráfico. La falla en la prueba de readiness hace que el Service no dirija tráfico a esa instancia del pod, pero el contenedor no se reinicia. La falla en la prueba de liveness indica una falla y la necesidad de reiniciar.
# Ejemplo de prueba de liveness en spec.containers
containers:
- name: my-container
image: my-image:latest
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15 # Retardo antes de la primera verificación
periodSeconds: 20 # Intervalo entre verificaciones
timeoutSeconds: 5 # Tiempo de espera por respuesta
failureThreshold: 3 # Número de intentos fallidos antes del reinicio