Runbook — PodNotReady
PodNotReady
Severity
Section titled “Severity”warning
Audience
Section titled “Audience”ops
Symptom
Section titled “Symptom”A container is running (not crashing — see PodCrashLoopBackOff for the crashing case) but its readiness probe has failed for 5+ minutes. The router / load balancer in front of it should be excluding it from rotation.
Impact
Section titled “Impact”- If only one instance per service: same as
BackendDown— see that runbook. - If multiple instances: requests route to the healthy instances; capacity is reduced but the service is up.
- Customers may see intermittent latency if the failing instance is in rotation.
Diagnosis
Section titled “Diagnosis”docker ps --format 'table {{.Names}}\t{{.Status}}'— confirm the container is up but reporting unhealthy in the status column.docker logs --tail 100 <container-name>— look for the underlying cause; often a downstream dependency (db, redis) the container can’t reach.curl -fsS http://localhost:<port>/api/statusfor the backend, orcurl -fsS http://localhost:3000/api/healthfor the frontend — manually hit the same endpoint the probe uses.
Mitigation
Section titled “Mitigation”- If the dependency is down: fix that first (see
DatabaseConnectionIssues,RedisConnectionIssues). - If the container is genuinely stuck (no progress in logs):
docker compose -f docker/compose.yml restart <service>.
Resolution
Section titled “Resolution”The underlying dependency outage is what needs fixing — PodNotReady is a symptom, not a cause. Chase the cause runbook (DB / Redis / Qdrant) that fired alongside this one.
Prevention
Section titled “Prevention”Tighten the readiness probe: it should fail fast and recover fast. A 5-minute window means we already lost capacity for 5 minutes before paging. Phase 30.3 will revisit probe tuning across all services.
Last reviewed
Section titled “Last reviewed”2026-05-29 — ops