Kubernetes: Configurando probes de Liveness (disponibilidade) e Readiness (prontidão) para Containers

From Wiki

Para que o Kubernetes saiba com esta a saude dos Containers podemos criar 2 tipos de probes:

  • Liveness Probes
Este probe pode detectar um deadlock, quando uma aplicação está em execução, ou se está falhando.
  • Readiness Probes
Este probe sabe quando um Container está pronto para começar a receber tráfego.

Exemplos do site do Kubernetes Configure liveness e readiness probes.

Vale a pena conferir o probe Define a liveness HTTP request e Define a TCP liveness probe.

Probes

Exemplo Liveness Probes

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
 

Ao iniciar o container o arquivo /tmp/healthy é criado, após 30 segundos o mesmo é apagado. Assim o container é destruído e um novo é criado. Reiniciando o ciclo.

Para testar vamos criar o Pod com o comando

kubectl create -f https://k8s.io/examples/pods/probe/exec-liveness.yaml

Após 30 segundo você confere o resultado com o comando:

kubectl describe pod liveness-exec


 Events:
  Type     Reason     Age              From               Message
  ----     ------     ----             ----               -------
  Normal   Scheduled  49s              default-scheduler  Successfully assigned default/liveness-exec to minikube
  Normal   Pulling    48s              kubelet, minikube  pulling image "k8s.gcr.io/busybox"
  Normal   Pulled     41s              kubelet, minikube  Successfully pulled image "k8s.gcr.io/busybox"
  Normal   Created    40s              kubelet, minikube  Created container
  Normal   Started    40s              kubelet, minikube  Started container
  Warning  Unhealthy  4s (x2 over 9s)  kubelet, minikube  Liveness probe failed: cat: can't open '/tmp/healthy': No such file or directory

Remova o pod com o comando

kubectl  delete pod liveness-exec

Exemplo Readiness Probes

Configuramos o probe Readines da mesma maneira que o Liveness.

readinessProbe:
  exec:
    command:
    - cat
    - /tmp/healthy
  initialDelaySeconds: 5
  periodSeconds: 5

Ver também