Liveness y readiness probes

Cuando ejecutamos un despliegue en kubernetes, si un pod falla, kubelet se encarga de detruirlo y crear uno nuevo, pero también es posible que cree un bucle y el pod se quede reiniciándose infinitamente o que el pod esté corriendo, pero no pueda ejecutar ciertas tareas que esperamos. Para controlar estos comportamientos podemos usar liveness probes  y readiness probes en nuestros despliegues.

Con liveness probes podemos configurar un check y decidir cuándo considerar que el pod está «vivo». Para ello podemos introducir en nuestro fichero yaml una configuración como la siguiente:

livenessProbe:
  httpGet:
    path: /live.php
    port: 8080
    httpHeaders:
      - name: X-Custom-Header
        value: Live
  initialDelaySeconds: 30
  timeoutSeconds: 3

Cuando no devuelve el valor que esperamos, la política de reinicio que hayamos configurado es la que se encarga de qué hacer con el pod.

Readiness probes las podemos usar para comprobar que el pod realiza las tareas para las que está configurado. Por ejemplo, podemos ejecutar un comando y dependiendo del resultado que nos devuelva, considerar que es correcto o no., como en el siguiente ejemplo:

readinessProbe:
  exec:
    command:
        - /usr/local/bin/checker
        - --full-check
        - --data-service=hue-multimedia-service
    initialDelaySeconds: 60
    timeoutSeconds: 5

En el anterior ejemplo, si el comando devuelve un resultado que no sea 0, será quitado temporalmente de  los servicios donde esté registrado hasta que el check devuelva el valor correcto.

Artículos relacionados