feat(helm/raySpec): allow customizing the Ray head node readiness probe (#742)#986
Open
Anai-Guo wants to merge 1 commit into
Open
Conversation
91acc54 to
b09ee8c
Compare
Contributor
There was a problem hiding this comment.
Code Review
This pull request introduces the ability to configure a custom readiness probe for the Ray head node in the Helm chart, updating the template, schema, and values files. The review feedback suggests guarding the nested field access in the Helm template with an 'and' condition to prevent potential nil pointer evaluation errors if 'headNode' is undefined.
| - name: {{ include "chart.container-port-name" . }} | ||
| containerPort: {{ include "chart.container-port" . }} | ||
| readinessProbe: | ||
| {{- if $modelSpec.raySpec.headNode.readinessProbe }} |
Contributor
There was a problem hiding this comment.
The multi-node Ray head pod hard-codes its readiness probe to failureThreshold: 1 / periodSeconds: 10. On slow, large multi-node deployments the head serving process can take longer than a single 10s period to start answering /health, so the pod is marked unready after the first failed probe and never receives traffic. Users had no way to relax it -- setting readinessProbe under servingEngineSpec, modelSpec, or raySpec.headNode had no effect on the head node. Honor raySpec.headNode.readinessProbe when set (rendered verbatim via toYaml), falling back to the existing default otherwise, so behavior is unchanged unless the field is provided. Document the new field in values.yaml. headNode is an open object in values.schema.json, so no schema change is needed (and the schema is CI-generated from values.yaml). Fixes vllm-project#742. Signed-off-by: Anai-Guo <antai12232931@outlook.com>
b09ee8c to
114c458
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #742.
The multi-node Ray head pod hard-codes its readiness probe in
helm/templates/ray-cluster.yaml:With
failureThreshold: 1andperiodSeconds: 10, a single failed probe marks the head pod unready. On large multi-node deployments the head serving process can take longer than one 10s period to begin answering/health, so the pod flips to unready and never receives traffic (Readiness probe failed: ... connect: connection refused). As reported in #742, there was no way to relax it — settingreadinessProbeunderservingEngineSpec,modelSpec, orraySpec.headNodehad no effect on the head node.Change
Honor
raySpec.headNode.readinessProbewhen set, rendered verbatim viatoYaml, and fall back to the existing default otherwise:values.yaml.values.schema.jsonchange:raySpec.headNodeis an open object in the schema (noadditionalProperties: false), and the schema is generated fromvalues.yamlin CI, so hand-editing it would just be reverted by the generator.Example
Notes
I don't have a multi-node GPU cluster to reproduce end-to-end, so I verified the template logic and the values change by inspection.
helm templatewith the field set renders the overriding probe; with it unset it renders the original default unchanged.🤖 Generated with Claude Code