generated from kubernetes/kubernetes-template-project
-
Notifications
You must be signed in to change notification settings - Fork 381
Labels
kind/featureCategorizes issue or PR as related to a new feature.Categorizes issue or PR as related to a new feature.
Description
What would you like to be added:
An api through which an external controller can tell, per workload, which of the worker clusters (out of all configured for the given ClusterQueue) should be attempted for that specific workload.
Why is this needed:
Currently MK tires all clusters configured for a ClusterQueue at the very same time, leading to problems when the number of clusters is large (for example 40).
Completion requirements:
This enhancement requires the following artifacts:
- Design docAPI changeDocs updateTo pick up a draggable item, press the space bar. While dragging, use the arrow keys to move the item. Press space again to drop the item in its new position, or press escape to cancel.
The artifacts should be linked in subsequent comments.
Metadata
Metadata
Assignees
Labels
kind/featureCategorizes issue or PR as related to a new feature.Categorizes issue or PR as related to a new feature.
Activity
tenzen-y commentedon May 1, 2025
Does the problem indicate performance or else?
mwielgus commentedon May 27, 2025
Both performance (distributing and keeping 40 copies of workload in cluster informers can be expensive) and practical (trying all 40 clusters at the very same time can lead to lots of unnecessary preemptions).
tenzen-y commentedon May 27, 2025
That makes sense. I can imagine a lot of workload copies cause the delayed informer sync.
For a practical problem, what are the differences between this proposal and #3757?
#3757 proposes the dispatching mechanism as well.
mszadkow commentedon May 27, 2025
/assign
mimowo commentedon May 29, 2025
Yeah, I would probably call one of them a duplicate, I'm to close mine, wdyt @mwielgus ?
mimowo commentedon Jun 2, 2025
Actually, when I thought about the proposed KEP #5410 I realize there is a difference @tenzen-y .
Both issues mitigate the issue with too many preemptions, and performance, but:
I think both are useful, and would prefer keeping them in mind when designing the solution.
Maybe we could extend the MultiKueue AC with MultiKueueConfig, analogous to ProvisioningRequestConfig. Inside we could set
dispatcherMode: sequential
then we use built-in sequential dispatching one-by-one.sequentialDispatcherName
is set then external dispatcher can be usedFor the needs of the dispatcher we probably will need on workload
workload.status.multiKueueNominatedCluster
.wdyt @tenzen-y @mwielgus @mszadkow ?
mszadkow commentedon Jun 2, 2025
IIUC
Whatever WorkloadReconciler did so far gets divided in 2 steps.
b) skip it if it's done by external controller.
workload.status.multiKueueNominatedCluster
.mimowo commentedon Jun 2, 2025
yes, assuming you mean Multikueue Workload Controller.
tenzen-y commentedon Jun 27, 2025
Thank you for describing that. IIUC, this issue aims to provide interface for providing dispatching algorightm, right?
And #3757 will provide the sequential strategy on top of this dispatcher API, right?
mimowo commentedon Jun 27, 2025
Correct. We will introduce the new sequenial strategy with hardcoded params for now, for simplicity, on top of the generic dispatching alogithm. The current strategy will also be selectable as a special case dispatcher.
tenzen-y commentedon Jun 27, 2025
That makes sense. In that case, let us keep both issues.
pramodbindal commentedon Jul 9, 2025
+1
There certain use-cases when we want a workload to be picked by specific cluster only.
mimowo commentedon Jul 9, 2025
@pramodbindal thank you for the input. IIUC with the with this new Workload's nominatedClusterNames you can restrict the set of clusters to only a subset. Does it cover your use-case?
pramodbindal commentedon Jul 9, 2025
@mimowo . Will check this one
I have different challenge right now.
I am not able to admit my workload into multiKueue :-(
Mine is custom workload tekton/PIpelineRun which I want to manage via MultiKueue but did not find any support for External Frameworks in MultiKueue
Am i misssing something
mimowo commentedon Jul 9, 2025
External frameworks aren't currently supported in MultiKueue :(, we have an issue open about it #2349.
As a workaround you may try using AppWrapper, or PodGroups which are both supported solutions.
cc @dgrove-oss
tenzen-y commentedon Jul 17, 2025
/reopen
k8s-ci-robot commentedon Jul 17, 2025
@tenzen-y: Reopened this issue.
In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.