Similarly as #8712,
Description
What would you like to be added:
Support elastic RayService (using UpgradeStrategy: NewClusterWithIncrementalUpgrade) via MultiKueue.
Background:
Basic MultiKueue support for RayService was added in #10025. However, elastic RayService — where UpgradeStrategy: NewClusterWithIncrementalUpgrade is used — is not yet covered.
The problem:
When NewClusterWithIncrementalUpgrade is used, KubeRay creates a second RayCluster alongside the existing one during an upgrade, gradually shifting traffic from the old cluster to the new one. At peak, both clusters run simultaneously.
The current MultiKueue adapter for RayService (rayservice_multikueue_adapter.go) copies the full spec to the worker cluster via copyJobSpec, which includes the UpgradeStrategy field. This means the worker cluster will also attempt an incremental upgrade and spin up a second RayCluster — but:
-
The Kueue workload on the manager cluster only accounts for one cluster's resources. The additional resource requirements of the second (upgrade) cluster are not reflected in the workload, leading to under-accounting of quota consumed on the worker.
-
MultiKueue has no visibility into the dual-cluster state during upgrade. The workload controller syncs status back from the worker's RayService, but does not model the transient two-cluster resource usage for admission or quota purposes.
Why is this needed:
To run elastic Ray serving workloads with zero-downtime incremental upgrades via MultiKueue, enabling multi-cluster scheduling for long-running RayService resources.
Similarly as #8712,
Description
What would you like to be added:
Support elastic
RayService(usingUpgradeStrategy: NewClusterWithIncrementalUpgrade) via MultiKueue.Background:
Basic MultiKueue support for
RayServicewas added in #10025. However, elastic RayService — whereUpgradeStrategy: NewClusterWithIncrementalUpgradeis used — is not yet covered.The problem:
When
NewClusterWithIncrementalUpgradeis used, KubeRay creates a secondRayClusteralongside the existing one during an upgrade, gradually shifting traffic from the old cluster to the new one. At peak, both clusters run simultaneously.The current MultiKueue adapter for
RayService(rayservice_multikueue_adapter.go) copies the full spec to the worker cluster viacopyJobSpec, which includes theUpgradeStrategyfield. This means the worker cluster will also attempt an incremental upgrade and spin up a secondRayCluster— but:The Kueue workload on the manager cluster only accounts for one cluster's resources. The additional resource requirements of the second (upgrade) cluster are not reflected in the workload, leading to under-accounting of quota consumed on the worker.
MultiKueue has no visibility into the dual-cluster state during upgrade. The workload controller syncs status back from the worker's
RayService, but does not model the transient two-cluster resource usage for admission or quota purposes.Why is this needed:
To run elastic Ray serving workloads with zero-downtime incremental upgrades via MultiKueue, enabling multi-cluster scheduling for long-running
RayServiceresources.