Pular para o conteúdo
Abrir o Kubepier

Probe · Reason: Unhealthy · READY 0/1

Readiness probe failed

O container roda, mas não recebe tráfego: a readiness falhou e o pod saiu dos endpoints do Service. Nada é reiniciado.

publicado em 25 set 2026 5 min de leitura reproduzido num cluster k3s 1.35 de teste em 25 set 2026 verificado contra a documentação do Kubernetes: "Configure Liveness, Readiness and Startup Probes", "EndpointSlices" e a referência da API Probe

Sinal

READY 0/1, STATUS Running, RESTARTS 0 e eventos "Readiness probe failed".

Causa mais comum

Probe apontando para caminho ou porta que a aplicação não serve.

Correção rápida

Testar o endpoint de dentro do pod e alinhar a probe; ver no EndpointSlice que o pod voltou a ready.

Comando que confirma

kubectl get endpointslices -l kubernetes.io/service-name=SERVICO

O que significa

A readiness probe responde se o container pode receber tráfego agora. Enquanto ela falha, o pod é marcado como não pronto e sai da lista de destinos dos Services que o selecionam. Diferente da liveness, nada é reiniciado: o container segue rodando, e volta a receber tráfego quando a probe passa. Os padrões são os mesmos da liveness: periodSeconds 10, timeoutSeconds 1, failureThreshold 3 (referência da API do Kubernetes, objeto Probe).

O sintoma para quem usa o serviço é outro: erro 503 no Ingress, ou conexão recusada no Service, porque não sobrou nenhum pod pronto atrás dele.

Causas comuns

Caminho ou porta erradosstatuscode: 404

A readiness consulta um endpoint que não existe. O pod roda, nunca fica pronto, e o Service fica sem ninguém para mandar tráfego.

Dependência indisponíveltodas as réplicas 0/1

Readiness que checa banco ou fila tira todas as réplicas do Service quando a dependência cai. Às vezes é o desejado; muitas vezes derruba um serviço que poderia responder parcialmente.

Aplicação ainda aquecendoconnection refused nos primeiros segundos

Nos primeiros segundos a porta ainda não abriu. É normal e passa sozinho; só vira problema se não passar.

Pod sobrecarregadointermitente sob carga

O endpoint de prontidão demora mais que o timeout. O pod sai e volta do Service, e a carga se concentra nos outros.

Diagnóstico em 3 comandos

Saídas reais de um nginx de teste com a readiness apontando para /pronto, caminho que não existe.

1 · rodando, mas 0/1

saída real
kubectl -n loja get pod checkout
NAME       READY   STATUS    RESTARTS   AGE
checkout   0/1     Running   0          109s

2 · os eventos

saída real, resumida
kubectl -n loja describe pod checkout | sed -n '/Events:/,$p'
Events:
  Warning  Unhealthy  108s                kubelet  Readiness probe failed: Get "http://10.42.0.9:80/pronto":
                                                   dial tcp 10.42.0.9:80: connect: connection refused
  Warning  Unhealthy  4s (x22 over 107s)  kubelet  Readiness probe failed: HTTP probe failed with statuscode: 404

O primeiro evento, connection refused, é do segundo inicial em que o nginx ainda não tinha aberto a porta. Os seguintes, 404, são a causa de verdade.

3 · o Service tem para onde mandar?

saída real
kubectl -n loja get endpointslices -l kubernetes.io/service-name=checkout \
  -o jsonpath='{range .items[*].endpoints[*]}{.addresses[0]} ready={.conditions.ready}{"\n"}{end}'
10.42.0.9 ready=false

O pod aparece no EndpointSlice, mas com ready=false: está registrado e não recebe tráfego. O comando antigo, kubectl get endpoints, ainda funciona, mas no Kubernetes 1.35 ele avisa que a API está obsoleta desde a 1.33 e manda usar EndpointSlice:

saída real
kubectl -n loja get endpoints checkout
Warning: v1 Endpoints is deprecated in v1.33+; use discovery.k8s.io/v1 EndpointSlice
NAME       ENDPOINTS   AGE
checkout               2m11s

A correção

  1. Teste o endpoint da probe de dentro do pod (kubectl exec) e aponte a probe para um caminho que exista.
  2. Decida o que a prontidão deve checar. Se o pod consegue responder algo útil sem a dependência, deixe a dependência fora da readiness.
  3. Num rollout, a readiness é o que impede o tráfego de chegar a uma versão quebrada. Probe que sempre passa tira essa proteção.
deployment.yaml
readinessProbe:
  httpGet: { path: /saude, port: 80 }
  periodSeconds: 5
  timeoutSeconds: 2
  failureThreshold: 3

Como aparece no Kubepier

O Kubepier mostra os eventos do pod com os avisos primeiro, com filtro por tipo, namespace e motivo. O diagnóstico por IA explica o erro a partir dos eventos e do log, em português, com a sua chave de API (Anthropic ou OpenAI). Abaixo, uma ilustração com dados fictícios.

Kubepier um produto
Readiness probe failed · 22×
Diagnóstico por IA · sua chave Anthropic ou OpenAI

Causa provável: a readiness consulta /pronto, que a aplicação não serve; o pod roda mas está fora do Service checkout. Evidência: "HTTP probe failed with statuscode: 404" e o endereço 10.42.0.9 com ready=false no EndpointSlice. Correção sugerida: apontar a probe para o endpoint de saúde que existe.

Conhecer o KubepierFree · Pro R$ 49/mês · Team R$ 199/mês