Liveness Probes do Kubernetes
- Rodrigo Saito
- 20 de mai.
- 2 min de leitura
Fala pessoal, tudo bem?
No K8s, existe uma feature muito interesante, que podemos utilizar para fazer certas verificações e testes se os componentes do K8s estão realmente funcionando, verificar se a aplicação está realmente respondendo.
Com o Liveness Probes, colocamos esses verificadores de sanidade e eles possam agir quando a aplicação der algum problema.
O Liveness Probes são executados pelo kubelet, que são realizados testes contínuos realizados pelo próprio k8s (atravé sdo kubelet)
O Liveness Probes toma uma ação quando o teste não é bem sucedido, que geralmente é reiniciar algum determinado container. (kubelet monitora essas sondas de sanidade para quando ele deve reiniciar determinado container)
Supondo que temos um deadlock em um determinado container, o Liveness Probe pode agir nesse caso reiniciando esse container, possivelmente tornando essa aplicação disponível novamente.
Aplicações que entram em deadlock provavelmente são bug de aplicações. É necessário passar o problema para o time de aplicação para que esse bug esse corrigido, e voce, enquanto administrador de infraestrutura de aplicação, voce pode manter ela funcionando até que a aplicação seja corrigida.
Vamos criar um arquivo yaml para criar um arquivo my-livenessProbe.yaml na pasta em que voce deseja (no meu cso está na pasta Download). Nesse arquivo, vamos utilizar o busybox, que traz uma série de ferramentas de linhas de comando para que possamos fazer diversos testes.
O arquivo de conter o conteúdo:
apiVersion: v1
kind: Pod
metadata:
name: liveness-pod
spec:
containers:
- name: liveness-container-test
image: busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
failureThreshold: 3
Vamos fazer a aplicação do arquivo, com alguns argumentos
kubectl apply -f my-livenessProbe.yaml && \
sleep 5 && \
kubectl get pods &&
sleep 30 && \
kubectl describe pods liveness-pod && \
sleep 35 && \
kubectl describe pods liveness-pod && \
sleep 30 && \
kubectl describe pods liveness-pod && \
kubectl get pods liveness-podEstá execuitando esta série de comando par que seja possivel verificar o que está acontecendo:

As ações do arquivo foram:

Role o log e veja o que aconteceu no histórico de execuções.
Vamos fazer a limpeza do contaimer:
kubectl delete pod liveness-pod
Conseguiu entender o que aconteceu?
obrigado e até+!


Comentários