-
Notifications
You must be signed in to change notification settings - Fork 829
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
Fresh rescheduling not happening via workloadrebalancer #5070
Comments
cc @chaosi-zju for help |
Hi @bharathguvvala, thank you for your feedback~ In deed, according to current implementation you are right, as for multiple clusterAffinities, now the scheduling algorithm is still honoring the previous schedulerObservedAffinity. Two main considerations before, according to proposal: 1)In Motivation chapter:
However, when designing multiple clusterAffinities, there is no good or bad distinction between different clusterAffinities, and the first clusterAffinity is not explicitly specified as Besides, due to the limitations of the ability of multiple clusterAffinity, there is currently only the ability to choose the next clusterAffinity and no ability to return to the previous clusterAffinity. 2)In Constraints chapter:
The stories mentioned in the proposal have one thing in common, that is, the actual distribution of replicas deviates from the expectation in the policy. However, in this example, since multiple clusterAffinities are not good or bad distinction, the current scheduling result actually meets the expectations of the policy. Of course, this is just a previous consideration, and it may not be considered carefully because it has not encountered the scene of the real production environment. After above description, do you still think that rescheduling is necessary to switch back to the first clusterAffinity? Why? We can continue to discuss the rationality of your appeal~ |
@chaosi-zju Thanks for the response. Please see my responses inline. This is what's cited as a usecase in the motivation
In both these examples, falling back to the previous affinity is the intended effect. One practical example is if the clusters involved here are part of a private on-prem (A) and public (B) clouds where A is preferred given the higher costs of B and is meant to be used only for bursting or failover. This is the scenario we are attempting to solve at our company by leveraging Karmada.
The example I cited above goes against the premise posed here that the order of affinities does not influence the most preferred. While that's expected in a normal scheduling , Shouldn't a fresh reschedule mean scheduling without any regard for the current placement or schedulerObservedAffinity similar to how a first time scheduling is done? Is it possible to introduce a flag in the WorkloadRebalancer to introduce the behaviour of fresh scheduling? |
Hi @bharathguvvala, your point of view gives us great reference value, thanks~
The original intention of these two stories you mentioned is when your single ...
spec:
placement:
clusterAffinity:
clusterNames:
- member1
- member2
... Then, if the
However, after listening to the scene you described, I think your usage and appeal are reasonable. I think we really need to support this ability. But, as I said about multiple CC @RainbowMango what do you think about this case? |
I am willing to contribute. Just wondering if there Is a possibility of me participating in the design discussions and contributing to the feature? |
Of course you can! Karmada is very happy to welcome new contributors to the community, and karmada has always embraced open source enthusiasts with openness and humility~ |
So how should I proceed? Should I create an enhancement proposal -- I am thinking that this capability can be a part of workload rebalancer which is supposed to trigger a fresh reschedule? |
Hi, I think we can proceed as follows:
|
@chaosi-zju Thanks for the response. In summary, what has been discussed in this thread is what the concerns are ie. lack of ability to do a fresh reschedule where the workloads need to be relocated back to the original clusters where the conditions are satisfied (either due to re-availability of capacity or the cluster becoming available if there was a failover etc). Currently no construct of Karmada enables this reverse migration workflow. Almost all the scheduling flows taking into account the previous scheduling context. I see WorkloadRebalancer as a natural fit to solve this by providing a control to the user to signal a fresh reschedule (preferably through a field spec.freshReschedule) without honoring the previous schedule context. Such reschedules may or may not cause the workload to be relocated depending on where it was scheduled prior. It is upto the user who triggers it to decide when a fresh reschedule is triggered via WorkloadRebalancer and that the user is fully aware of the implications of such an action. Users may build workflows to trigger any periodic fresh reschedules as well to suit their needs. I am willing to discuss this in the next community meeting. Should I go ahead and add it to the meeting agenda? |
Yes, I am very glad that you can go ahead and please add your topic to the meeting agenda, next english meeting is at the date of By the way, what time zone are you in now? Does time ponit |
Thank you very much for sharing your opinion. You have given me further insight into the expected features from a user demand perspective. And, I agree with what you said " By the way, have you considered from an implementation perspective how to achieve what you said " |
I was thinking for a fresh reschedule we could start the evaluation freshly instead of resuming from the current schedulerrObservingAffinityName by nullifying the rb.Status.SchedulerObservedAffinityName of the workload from the WorkloadRebalancer controller. I am not sure if this introduces some side effects. |
CC @XiShanYongYe-Chang what do you think about his thought on refreshing multiple clusterAffinities? |
Thanks, let me take a look. |
Sorry for replying late.
I think this is a good direction. We did not provide the capability of resetting the scheduling group because there was no user case support for multi clusteraffinities group scheduling. Your case may be a good start. Thanks @bharathguvvala |
/kind feature |
Hi @bharathguvvala, tomorrow is the community meeting~ Is it convenient for you tomorrow to share your topic? If it is convenient, please add the topic to the agenda. Thank you very much, I'm looking forward to your performance! |
related issue: #4990 , just recording |
Requested edit access to the document. |
Hi @bharathguvvala, it seems you can get edit permissions automatically~ By joining the google groups you will be able to edit the meeting notes. |
@chaosi-zju Thanks. Added it to the agenda. |
hello @bharathguvvala, I created an issue to track the progress of your subsequent related activities #5172. You can take charge of this feature and move forward to implement it, come on~ |
What happened:
According to the documenation, a fresh rescheduling should happen upon the creation of a workloadrebalancer resource. With propagationpolicy having cluster affinities, while rescheduling is happening the scheduling algorithm is still honoring the previous schedulerObservedAffinity which means that it doesn't attempt to schedule the workload to cluster groups which have affinityIndex < schedulerObservedAffinity
What you expected to happen:
A fresh rescheduling should attempt to schedule across all cluster affinity groups irrespective of the scheduleObservedAffinity.
How to reproduce it (as minimally and precisely as possible):
Have two cluster affinities A and B.
Anything else we need to know?:
Environment:
kubectl-karmada version
orkarmadactl version
):The text was updated successfully, but these errors were encountered: