Skip to content

MultiKueue: Support priority-based / ordered cluster selection #9270

@mpsanj

Description

@mpsanj

Hi Team,

Support for priority/weight-based cluster selection in MultiKueue, so that workloads
are preferentially dispatched to higher-priority worker clusters before falling back
to lower-priority ones.

Why is this needed?

Currently, MultiKueue uses a race model — workloads are dispatched to all worker
clusters listed in MultiKueueConfig.spec.clusters simultaneously, and the first
cluster to admit wins. There is no mechanism to express cluster preference or ordering.

Use case

We run 3 worker clusters across regions (e.g., JP, US, SG) for GPU workloads. We want
to prefer scheduling on our primary cluster (cheaper/closer), and only overflow to
secondary and tertiary clusters when the primary lacks resources.

Proposed solution

Add a priority or weight field to MultiKueueConfig.spec.clusters:

apiVersion: kueue.x-k8s.io/v1beta2
kind: MultiKueueConfig
metadata:
  name: multikueue-default
spec:
  clusters:
    - name: "jp-osa"
      priority: 1        # highest priority, try first
    - name: "us-002"
      priority: 2        # try if jp-osa is full
    - name: "sg-001"
      priority: 3        # last resort

Expected behavior with ordered dispatch

  1. Submit workload to the highest-priority cluster only
  2. If that cluster's ClusterQueue cannot admit (quota full / pending) within a configurable timeout, try the next cluster
  3. Clean up remote workloads on clusters that lost
  4. Fall back to race-all if all clusters are above threshold

Environment

  • Kueue version: v0.16.1
  • Kubernetes version: 1.33
  • MultiKueue with 3 worker clusters

If there are already workaround, please suggest.

Thank You,
Sanjay

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/multikueueIssues or PRs related to MultiKueuekind/supportCategorizes issue or PR as a support question.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions