O que e uma liveness probe? Reiniciando contineres travados
Uma liveness probe e uma verificacao periodica de saude que o Kubernetes usa para decidir se um continer esta travado e deve ser reiniciado.
Um processo pode estar rodando e ainda assim emperrado - em deadlock, preso em um loop infinito, incapaz de se recuperar. De fora, parece vivo, mas nao serve nada. Uma liveness probe da ao Kubernetes uma forma de detectar isso e reiniciar automaticamente o continer, transformando um app travado em um com autocorreção.
Como funciona
Voce define uma probe (HTTP, TCP ou comando) que o Kubernetes executa em um intervalo. Se ela falha vezes consecutivas suficientes, o Kubernetes mata o continer e o reinicia de acordo com a restart policy do pod.
Liveness vs readiness
A readiness controla o trafego; a liveness controla os reinicios. Um pod pode estar vivo, mas nao pronto (ainda aquecendo) - entao as duas probes cumprem funcoes diferentes e muitas vezes ambas sao definidas.
Evitando restart loops
- Defina um atraso inicial para que inicializacoes lentas nao sejam mortas prematuramente.
- Torne a probe barata e independente de servicos downstream.
- Uma probe agressiva demais causa crash loops - ajuste os limites com cuidado.
Uma armadilha comum
Se uma liveness probe depende de um banco de dados que esta temporariamente fora, todo pod reinicia junto e nada se recupera. Mantenha as verificacoes de liveness locais ao processo; use a readiness para a saude das dependencias.
O paralelo com a confiabilidade
Liveness probes incorporam a autocorreção: detectam um workload travado e se recuperam automaticamente. Runners de CI gerenciados aplicam a mesma filosofia aos jobs - recuperando-se automaticamente de falhas transitorias e de recursos em vez de deixa-las travadas.
Principais conclusões
- Uma liveness probe reinicia um continer que esta rodando, mas travado.
- A liveness controla reinicios; a readiness controla o trafego - use ambas.
- Mantenha as probes baratas e locais para evitar restart loops sincronizados.