[docs] Add a Kubernetes and Ray scheduling orientation guide - #65263
Draft
dstrodtman wants to merge 2 commits into
Draft
[docs] Add a Kubernetes and Ray scheduling orientation guide#65263dstrodtman wants to merge 2 commits into
dstrodtman wants to merge 2 commits into
Conversation
Ray on Kubernetes involves two schedulers: Kubernetes places pods on machines, and Ray places tasks and actors on pods. The docs cover each layer well on its own, but nothing explains how they relate or which one a user should investigate when a workload doesn't start. The closest existing page is the Ray autoscaler comparison guide, but it's scoped to autoscaling and marked advanced, so a user debugging a pending actor is unlikely to find it. Add a user guide that names the two layers, documents how KubeRay derives Ray's logical resource capacity from the container spec, and maps pod state to the layer worth investigating. The page defers all mechanism to the existing Ray Core scheduling, RayCluster config, and autoscaler pages rather than restating them. Also link to the new page from the autoscaler guide. Signed-off-by: Douglas Strodtman <douglas@anyscale.com>
The page said Ray integrates with four batch schedulers and listed Kueue, KAI Scheduler, Volcano, and YuniKorn. The k8s-ecosystem section documents a fifth: the kubernetes-sigs scheduler-plugins integration, which supports gang scheduling for RayCluster through the PodGroup API as of KubeRay v1.4.0. Signed-off-by: Douglas Strodtman <douglas@anyscale.com>
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.
Description
Running Ray on Kubernetes involves two schedulers. Kubernetes places pods on machines, and Ray places tasks and actors on pods. The docs cover each layer well on its own, but nothing explains how they relate or which one to investigate when a workload doesn't start.
The closest existing page is
k8s-autoscaler.md, but it's scoped to autoscaling and marked advanced, so a user debugging a pending actor is unlikely to find it.This PR adds a user guide that:
It also adds a pointer to the new page from the autoscaler guide.
The KubeRay resource-derivation details are drawn from
user-guides/config.md(container limits, the CPU-request fallback as of KubeRay 1.3.0, integer rounding, and ignored memory and GPU requests).Related issues
None. This came out of a documentation gap audit, not a filed issue.
Additional information
Not a duplicate
Searched open PRs against
ray-project/rayfor "kubernetes scheduling", "scheduling overview", and related area keywords. No open PR covers this. No existing page indoc/sourcejoins the two scheduling layers.Testing
Source verification against the KubeRay implementation. Every claim about how KubeRay derives Ray's logical capacity was checked against
ray-operator/controllers/ray/common/pod.goinray-project/kuberay, not just against the existing docs:generateRayStartCommandreadsresource.Limits[ResourceCPU]fornum-cpus, and falls back toresource.Requests[ResourceCPU]when the limit is zero.ba50bfa8(Add 0.5 release notes. #2365). It's absent fromv1.2.1and present inv1.3.0, which confirms the "starting with KubeRay 1.3.0" attribution.Quantity.Value(), which rounds up away from zero, so a500mlimit becomes one logical CPU.Limits[ResourceMemory]only, with no request fallback, and accelerators go throughaddWellKnownAcceleratorResources(rayStartParams, resource.Limits). Both confirm that requests are ignored for memory and GPU.Other checks:
vale doc/source/cluster/kubernetes/user-guides/scheduling.md— remaining errors areVale.Spellingon "tolerations" and "autoscalers" (standard terms used throughout the existing KubeRay docs, absent from the Vale vocabulary) and oneGoogle.OxfordCommafalse positive on a two-item disjunction. The existingk8s-autoscaler.mdreports a comparable baseline.pre-commit runon the staged files — every hook reports "no files to check". No pre-commit hook currently covers Markdown underdoc/source/.{ref}target used on the page was verified to exist by grepping for its label definition.Self-review findings already fixed
A critical pass before requesting review caught that the page claimed Ray integrates with four batch schedulers. There are five: the
kubernetes-sigs/scheduler-pluginsintegration provides gang scheduling for RayCluster through the PodGroup API as of KubeRay v1.4.0. Corrected, with the fifth link added.AI assistance
AI assistance was used to draft this page. The content is grounded in the repository sources cited above rather than generated from prior knowledge. It still needs a final human review pass before it should be considered ready, which is why this is opened as a draft.