Monitoramento de Containers com Probes no Kubernetes
No Kubernetes, garantir que os containers estejam não apenas em execução, mas também funcionando corretamente, é essencial para manter a estabilidade das aplicações. Para isso, o Kubernetes oferece um recurso poderoso: as sondas, ou probes.
As probes permitem ao Kubernetes verificar a saúde de um container de forma contínua. Elas são usadas para identificar se:
O container está pronto para receber tráfego (Readiness Probe)
A aplicação está viva e funcionando corretamente (Liveness Probe)
O container foi iniciado corretamente (Startup Probe)
Essas sondas são altamente configuráveis e podem ser definidas de três formas principais:
Métodos de verificação disponíveis:
Execução de Comando (exec):
O Kubernetes executa um comando dentro do container. Se ele retornar 0, considera que está tudo certo. Ideal para apps que permitem testes de integridade via CLI.
Requisição HTTP (httpGet):
O Kubernetes faz uma requisição HTTP para um endpoint específico do container. Se a resposta estiver entre os códigos 200 e 399, considera que a aplicação está saudável. É uma ótima escolha para APIs e aplicações web.
Conexão TCP (tcpSocket):
O Kubernetes tenta abrir uma conexão TCP com a porta do container. Se conseguir conectar, considera que está funcionando. Esse método é útil para serviços como proxies, servidores de cache ou bancos de dados.
Como escolher o método ideal?
A escolha da sonda deve refletir como o cliente interage com a aplicação. Por exemplo:
Se você está lidando com uma API REST, a melhor abordagem é uma sonda HTTP, testando um endpoint como /health ou /status.
Para um banco de dados, pode ser mais apropriado usar uma sonda que execute um comando simples, como um ping ou consulta leve.
Se for um serviço como um proxy, onde o tráfego é encaminhado por meio de portas, a sonda TCP se encaixa melhor.
Benefícios de usar probes:
Detecção automática de falhas
Redução de downtime
Melhor balanceamento de carga (readiness)
Recuperação automática de containers travados
Usar probes corretamente é uma das melhores práticas no Kubernetes para manter aplicações resilientes, responsivas e fáceis de manter em produçã