Startup and readiness probes¶
Goal: know when a Pod is judged Ready and how long its startup may take.
For the meaning and behavior of probes, see the Kubernetes documentation on Liveness, Readiness and Startup Probes. This page covers the following.
- The chart's probe defaults and how to tune them
- The Deployment progress deadline derived from the startup budget
- The commands that show a failing probe
- The termination grace period
Chart defaults and tuning¶
modelserver.probes.{startup,readiness,liveness} tunes the probes of the modelserver container. The chart defaults of the three probes are as follows.
| Probe | Path | Period (s) | Failure threshold (count) | Timeout (s) |
|---|---|---|---|---|
startupProbe | /v1/models | 30 | 240 | 10 |
readinessProbe | /v1/models | 15 | 4 | 5 |
livenessProbe | /health | 30 | 10 | 10 |
The time that startupProbe allows for a Pod's startup is the startup budget. With the chart defaults, the startup budget is 30 seconds × 240 = 2 hours. Model loading and the first compile must finish within the startup budget.
- If compilation takes longer than the startup budget, raise
modelserver.probes.startup.failureThreshold. The engine itself waits for startup for at mostVLLM_ENGINE_READY_TIMEOUT_Sseconds (modelserver.serveEnv, 9600 by default); if you set the startup budget above that, raiseVLLM_ENGINE_READY_TIMEOUT_Sas well. - For the measured first compile time, see First startup time.
- For how the modelserver container's CPU limit affects compile time, see Resources and the node budget.
Deployment progress deadline¶
The chart sets the progressDeadlineSeconds of every modelserver Deployment to the startup budget.
- Formula:
initialDelaySeconds + periodSeconds × failureThreshold(the values ofmodelserver.probes.startup) - Chart default:
0 + 30 × 240 = 7200(2 hours) - Tuning: changing
modelserver.probes.startupchangesprogressDeadlineSecondstoo. No separate values key setsprogressDeadlineSeconds.
If progressDeadlineSeconds were left at the Kubernetes default of 600 seconds, a Deployment that is still compiling normally would be marked Progressing=False (ProgressDeadlineExceeded) after 10 minutes.
Check the current value with the following command.
Probe checks¶
If a Pod does not become Ready, check it with the following commands.
If a starting Pod restarts repeatedly, identify the cause of the restarts from the kubectl describe pod output as follows.
| Symptom | Cause | Action |
|---|---|---|
The Pod's events show Startup probe failed | The Pod's startup exceeded the startup budget | Raise modelserver.probes.startup.failureThreshold |
Last State: Terminated shows an exit code, with no Startup probe failed event | The container exited on its own. For example, the entrypoint exits when it cannot raise the container's memlock limit to unlimited | Read the previous container's log with kubectl logs --previous |
Termination grace period¶
The chart does not set terminationGracePeriodSeconds. The Kubernetes default of 30 seconds therefore applies.
To change the grace period, set terminationGracePeriodSeconds in modelserver.podOverrides.<role>. The chart's examples/pod-overrides.yaml has an example.
When a Pod terminates, the requests that the Pod was handling fail with a 5xx error.