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

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 =


 * Mais Artigos sobre Kubernetes
 * Docker: Trabalhando com Containers
 * Artigos sobre Cloud
 * Mais Artigos sobre Cloud / WebDev / Tecnologias