Skip to Content

What’s the difference between liveness, readiness, and startup probes?

Category: DevOps & Deployment

Answer

Liveness: kubelet restarts the pod if it fails. Readiness: removes the pod from Service routing if it fails. Startup: disables the other two until the app is up. They are not interchangeable; using one for all three is a production outage waiting to happen.

Concrete examples from the fca project context

Example 1

/live returns 200 only when the process is alive — minimal logic.

Example 2

/ready returns 200 when DB and Redis are reachable — increments traffic only after ready.

Example 3

/startup allows slow boot (cold cache, model load) and prevents the liveness probe restarting you mid-boot.

Data flow / flow chart

kubelet -> /live (restart?)  -> Service -> /ready (route?)
  Startup -> gates the other two until first success

Takeaway

Three probes, three purposes. Use a templated base class so new routes don’t skip them.