-
Notifications
You must be signed in to change notification settings - Fork 38.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Scheduler: Share frameworkImpl.waitingPods
among profiles
#122945
Comments
/sig scheduling |
/assign @Huang-Wei @ahg-g |
/triage accepted |
So the |
Not really, these two deployments are located in the same k8s-cluster It can be understood that the |
Can you elaborate more? Why these deployments should be scheduled together, I can image this might be useful, just curious about the user story. Thanks. |
Of course, our specific usage scenario is for stateful service (DB). For a DB instance (which is a For scheduling, we need to consider successfully scheduling all pods under the same instance to ensure DB service availability, because if only some pods under an instance are successfully scheduled, the DB service is still unavailable (even if all pods managed by one workload of the DB instance are successfully scheduled) |
Following is an open-source project to manage databases on K8s that you may be interested in. |
What would you like to be added?
I hope to share the
waitingPods
among multiple profiles, instead of creating a newwaitingPods
in each profiles with the current implementation.In other words,
waitingPods
is only instantiated once in a scheduler app.kubernetes/pkg/scheduler/framework/runtime/framework.go
Lines 253 to 258 in a1ffded
@Huang-Wei @ahg-g PTAL, Is there any negative impact of this change that I didn't consider, thanks.
Why is this needed?
In some scenarios, I need to traverse
all pods
waiting in the permit stage within the current scheduler app, rather than the pods that using the current profile for scheduling and waiting in the permit stage.For example, we want use coscheduling to achieve
all-or-nothing
. And we have abstracted the concept of aCluster
, where there are two deployments under each cluster. Each deployments use different scheduler profile, and one cluster corresponds to one podGroup, as following:Then, we want pods in one cluster (podA1, podA2, podB1) to be scheduled succeed/failed together.
We assume that all pods can pass through the filter plugins, and
podA2
is the last to be scheduled. At this point,podA1
andpodB1
are both waiting in the permit stage. Afterwards, we traverse thewaitingPods
to complete the permit waiting forpodA1
andpodB1
. However, from an implementation perspective, now we can only seepodA1
inwaitingPods
,podB1
cannot be seen, becausepodA2
&podB1
use different scheduling profiles. Which will causepodB1
timeout during the permit phase, even if all pods within the podGroup are successfully scheduled.The text was updated successfully, but these errors were encountered: