Skip to content

feat(tpu-inference/k8s): install JobSet and enable the Kueue integration - #464

Closed
theminghuang wants to merge 1 commit into
kube-single-agent-stackfrom
kube-jobset-v2
Closed

feat(tpu-inference/k8s): install JobSet and enable the Kueue integration#464
theminghuang wants to merge 1 commit into
kube-single-agent-stackfrom
kube-jobset-v2

Conversation

@theminghuang

Copy link
Copy Markdown
Collaborator

A batch/v1 Job cannot span hosts, so neither multi-host TPU slices (one pod
per host, gang admitted as a unit) nor prefill/decode disaggregation
(independent server pods plus a benchmark pod) can be expressed today. JobSet
covers both, and is the object Kueue gang-admits.

Install the operator on the manager and on every worker, and add
jobset.x-k8s.io/jobset to integrations.frameworks in both Kueue configs.
MultiKueue mirrors the JobSet onto the selected worker, so the CRD, the
operator version and the enabled framework list all have to match on both
sides - hence a single jobset_version variable driving both installs.

Kueue only registers the integration if the JobSet CRDs already exist when its
controller starts, so both Kueue releases now depend on the JobSet release.

Two adjacent fixes in the same files:

  • kueue.tf pinned the chart version to a "0.19.0" literal in three places
    while var.kueue_version existed and was unused, so bumping Kueue meant
    editing the literals and the variable stayed silently wrong.
  • waitForPodsReady is inert in both configs: the block sets blockAdmission
    and timeout but never enable: true. Left off deliberately for now, but
    annotated so it does not read as active configuration.

Signed-off-by: theminghuang theminghuang@gmail.com

Co-Authored-By: Claude Opus 5 noreply@anthropic.com
(cherry picked from commit 700917f)

A batch/v1 Job cannot span hosts, so neither multi-host TPU slices (one pod
per host, gang admitted as a unit) nor prefill/decode disaggregation
(independent server pods plus a benchmark pod) can be expressed today. JobSet
covers both, and is the object Kueue gang-admits.

Install the operator on the manager and on every worker, and add
jobset.x-k8s.io/jobset to integrations.frameworks in both Kueue configs.
MultiKueue mirrors the JobSet onto the selected worker, so the CRD, the
operator version and the enabled framework list all have to match on both
sides - hence a single jobset_version variable driving both installs.

Kueue only registers the integration if the JobSet CRDs already exist when its
controller starts, so both Kueue releases now depend on the JobSet release.

The worker Kueue install also needed a trigger on its config content. A
null_resource local-exec only re-runs when a trigger changes, and the
triggers were version and cluster endpoint - so adding the JobSet framework
to worker-config.yaml would have left every worker on the old config while
terraform reported no changes.

Two adjacent fixes in the same files:

  - kueue.tf pinned the chart version to a "0.19.0" literal in three places
    while var.kueue_version existed and was unused, so bumping Kueue meant
    editing the literals and the variable stayed silently wrong.
  - waitForPodsReady is inert in both configs: the block sets blockAdmission
    and timeout but never `enable: true`. Left off deliberately for now, but
    annotated so it does not read as active configuration.

Signed-off-by: theminghuang <theminghuang@gmail.com>

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
(cherry picked from commit 700917f)
@theminghuang

Copy link
Copy Markdown
Collaborator Author

Superseded by #466 (infra) and #467 (launcher), which present the same changes as two PRs instead of four.

@theminghuang
theminghuang deleted the kube-jobset-v2 branch August 11, 2026 08:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant