Liveness y Readiness
Algunas aplicaciones que desarrollamos por lo general no tienen un tiempo de startup de 0 segundos (osea al instante), por experiencia propia usando aplicaciones springboot estos demoran un aproximado de 10 a 30 segundos.
En ese sentido el poder tener una cierta regla que permita que el pod este disponible bajo ciertas pruebas nos permitira ofrecer aplicaciones menos tolerantes a fallos de cara a los cliente.
De la misma manera es importante conocer el estado de nuestra aplicacion dentro del Pod, ya que en caso de que nuestra aplicacion se haya colgado deberiamos reiniciarla.
Como solución a esas necesidades existen las pruebas de Liveness y readiness que nos permiten justamente validar el estado de nuestra aplicacion, en caso de no cumplir con los requisitos que pongamos, el pod sera reiniciado.
Estas validaciones pueden ser a nivel de http, tcp ,etc. tambien es posible especificar el delay y los periodos para hacer las pruebas.
A continuacion un ejemplo de su uso:
apiVersion: v1
kind: Pod
metadata:
name: kubia-liveness
spec:
containers:
-image: luksa/kubia-unhealthy
name: kubia
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 15
periodSeconds: 10readinessProbe:
httpGet:
path: /readiness
port: 8888
initialDelaySeconds: 300
periodSeconds: 3
Mas información:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/