A liveness probe asks a narrow question: is this process alive and able to make progress, or is it deadlocked or hung? If the check fails repeatedly, the orchestrator treats the instance as broken and restarts it.
Why it matters
Some failures never crash the process. A deadlock, an exhausted thread pool, or an infinite loop leaves a program running but useless. Without a liveness check it stays that way until a person notices. With one, the platform heals itself in seconds.
Example
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
failureThreshold: 3
The handler should be trivial: return 200 if the main loop can respond. It should not check the database. If the database is down and liveness fails, the orchestrator restarts every healthy instance in a loop, worsening the outage without fixing anything.
Compare with a readiness probe: liveness answers "restart me?", readiness answers "send me traffic?".
Common mistakes
- Checking external dependencies in a liveness endpoint.
- Setting the timeout and threshold so tight that a slow garbage collection kills a healthy pod.
- Probing before the app has finished starting, causing restart loops. Use an initial delay or startup probe.
- Using one endpoint for everything.
Related
Get notified when this term updates
Plus occasional practical tips on uptime and monitoring, nothing else. Unsubscribe anytime.
This page is general information written by our editorial team and updated when documentation changes. Servers and providers differ, so test changes safely first. See our editorial policy and disclaimer.