Skip to content

docs: add ecosystem volcano - #1959

Open
kube-gopher wants to merge 1 commit into
volcano-sh:mainfrom
kube-gopher:add-ecosystem-volcano
Open

kube-gopher wants to merge 1 commit into
volcano-sh:mainfrom
kube-gopher:add-ecosystem-volcano

Conversation

@kube-gopher

Copy link
Copy Markdown
Member

What type of PR is this?
/kind enhancement

What this PR does / why we need it:

Which issue(s) this PR fixes:
Fixes #

Bug evidence (required for bug-related PRs):

Special notes for your reviewer:

Does this PR introduce a user-facing change?:


@volcano-sh-bot

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign git-malu for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kube-gopher

Copy link
Copy Markdown
Member Author

volcano-sh/website#595
For better ecosystem integration.

@kube-gopher

Copy link
Copy Markdown
Member Author

/remove-kind enhancement
/kind documentation
/cc @YaoZengzeng @acsoto

@volcano-sh-bot volcano-sh-bot added kind/documentation Improvements or additions to documentation and removed kind/enhancement New feature or request labels Nov 4, 2026

[Volcano](https://volcano.sh) is the default scheduler for Kthena `ModelServing` workloads. It provides gang scheduling, network topology-aware scheduling, and queue-based resource sharing for LLM inference.

For each `ServingGroup`, the ModelServing controller creates a Volcano `PodGroup` with the same name, so that Volcano schedules all pods of the group together.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a link to the PodGroup description.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okay

# ...
```

To require only a minimum number of replicas per role, for example in prefill/decode disaggregation, set `gangPolicy.minRoleReplicas`:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a note. If MinRoleReplicas is not specified, by default, Pods from all roles are scheduled together in a gang.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okay

@acsoto

acsoto commented Nov 5, 2026

Copy link
Copy Markdown
Member

Since Volcano is the default scheduler for ModelServing, would this guide fit better under installation or scheduling rather than Ecosystem?

@kube-gopher

Copy link
Copy Markdown
Member Author

Since Volcano is the default scheduler for ModelServing, would this guide fit better under installation or scheduling rather than Ecosystem?

  1. It is simply too long to go through in detail; the purpose is to align with the optimization of the Volcano website so that users can better learn indirectly from Volcano that Kthena has integrated with the Volcano ecosystem.
  2. The install section mentions something related to Volcano.

@acsoto

acsoto commented Nov 5, 2026

Copy link
Copy Markdown
Member

Since Volcano is the default scheduler for ModelServing, would this guide fit better under installation or scheduling rather than Ecosystem?

  1. It is simply too long to go through in detail; the purpose is to align with the optimization of the Volcano website so that users can better learn indirectly from Volcano that Kthena has integrated with the Volcano ecosystem.
  2. The install section mentions something related to Volcano.

ok

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues block the Volcano integration guide and sidebar update.

No open issues 🎉

What changed in this PR

Adds an ecosystem guide explaining how Kthena ModelServing workloads integrate with the Volcano scheduler.

Changes:

  • Documents prerequisites, gang scheduling, topology-aware placement, and queue assignment with YAML examples.
  • Adds the Volcano integration guide to the Ecosystem sidebar.
File Description
docs/​kthena/​sidebars.ts Adds the Volcano guide to Ecosystem navigation.
docs/​kthena/​docs/​ecosystem/​volcano-integration.md Documents Volcano scheduling features and configuration for ModelServing workloads.

Review effort: Balanced

- Install [Volcano](https://volcano.sh/en/docs/installation/) in your cluster. Role-level gang scheduling and role-level network topology require Volcano **1.14** or later.
- Install Kthena by following [Installation](../getting-started/installation.md).

Kthena detects Volcano at runtime, so you can install it before or after Kthena without restarting the controller.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This holds for the controller, but not for ModelServings that already exist when Volcano is installed afterwards.

Pods are only annotated with scheduling.k8s.io/group-name while the PodGroup CRD is present (manager.go#L553-L556). Detecting the CRD doesn't recreate or re-annotate existing pods. Those pods are already Pending with schedulerName: volcano. Once Volcano starts, its PodGroup controller creates a separate PodGroup for each pod without that annotation and sets the annotation itself (pg_controller_handler.go#L184-L189). As a result those pods are scheduled one by one, without gang, minResources, or the queue annotation, until they are recreated.

Suggest adding a note, e.g. "ModelServings whose pods were created before Volcano was installed are not gang scheduled until their pods are recreated."

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okay

@JesseStutler

Copy link
Copy Markdown
Member

volcano-sh/website#595 For better ecosystem integration.

@kube-gopher When you have done, please also add it into Volcano's website for Kthena integration

@kube-gopher

Copy link
Copy Markdown
Member Author

When you have done, please also add it into Volcano's website for Kthena integration

okay

Signed-off-by: kube-gopher <jzlyy68@gmail.com>
@kube-gopher
kube-gopher force-pushed the add-ecosystem-volcano branch from 137ad61 to 1717fb4 Compare November 6, 2026 08:43

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/documentation Improvements or additions to documentation size/L

Projects

Status: Accepted

Development

Successfully merging this pull request may close these issues.

7 participants