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
Reschedule bindings on cluster change #829
Comments
Thanks for open this we can track the progress and talk about the solution here.
|
@RainbowMango Thanks for your reply
Yes this makes sense, but there might be a new problem, let's consider such a case:
|
I have another question: does the scheduler perform |
No. |
@XiShanYongYe-Chang Thanks for your reply
Is it an expected behavior? Shouldn't |
When there have cluster delete event, a rescheduling should maybe need to triggere. How do @RainbowMango think? |
echo on #829 (comment). Agree. But no idea how to solve that issue now. |
/priority important-soon |
How about removing applied placement annotation of binding on cluster add/delete? It will make the scheduler reschedule the binding as karmada/pkg/scheduler/scheduler.go Lines 824 to 828 in 8e1e16e
|
Too tricky I guess. |
IMHO, the scheduler should reschedule the bindings on cluster change(eg. cluster joined, cluster unjoined, cluster label changed...) I add a |
+1 but not sure for I'll take a look and comment on your commit. |
For example, there is a propagation policy whose cluster affinity label selector is Do you mean we should keep the binding scheduled to the cluster though the label |
I think the scenario might be handled by descheduler. |
Well, I'm not familiar with descheduler, but in this picture it seems that descheduler does not watch cluster events, it just watches workload and might reschedule them to other clusters due to the original cluster resource insufficiency, and it focuses on |
We might discuss the descheduler more at the community meeting. Hope you can come and meet you there. |
OK, I'll be there :) |
To be clear, I have 4 questions:
The key is: shall we always keep the consistency between propagation policy and |
Looking forward to seeing the progress of this issue |
@mrlihanbo The #967 is waiting for your review. |
I will review the pr now |
Hi @mrlihanbo, before implementing this we have to answer the 4 questions above |
Hello @RainbowMango, any ideas about these questions? |
I think we should take this scenario very carefully, it might bring drastic changes. Take Kubernetes as an example, after a pod has been scheduled to a node it will not get re-scheduled even in case of the node label change. |
I think we should re-schedule the workload after one of the bonded clusters is unjoined. It doesn't have to be |
Yes, you are right. The
I don't think so, just like the answer above, it's too dangerous, at least for now. |
I see, so I guess we should reschedule workloads only when cluster joined/unjoined, right? |
Let's focus on the scenario of cluster-unjoin for now. The workload should be re-scheduled after one of the bound clusters is unjoined. If no more clusters fit the propagation policy, just remove the |
There exist a scenario if workload should be re-scheduled after one of the bound clusters is unjoined:
we should make sure that the behavior is what we expected. |
@dddddai I took a glance at the |
/assign @RainbowMango @huone1 |
@RainbowMango: GitHub didn't allow me to assign the following users: huone1. Note that only karmada-io members, repo collaborators and people who have commented on this issue/PR can be assigned. Additionally, issues/PRs can only have 10 assignees at the same time. 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/test-infra repository. |
let me work it with you @dddddai |
@huone1 Thank you! |
I was thinking so. Would ask @RainbowMango for comments. |
I think it's similar to kubernetes, just as deschedule(https://github.com/kubernetes-sigs/descheduler) said , the descheduler should responsible for handle rescheduling of cluster status changing,cluster join and cluster unjoin. |
What happened:
Unjoined clusters still remain in
binding.spec.clusters
What you expected to happen:
Unjoined clusters should be deleted from
binding.spec.clusters
How to reproduce it (as minimally and precisely as possible):
1.Set up environment(script v0.8)
2.Unjoin member1
3.Check
binding.spec.clusters
root@myserver:~/karmada# kubectl describe rb ...... Spec: Clusters: Name: member1 ......
Anything else we need to know?:
Is it an expected behavior? If not, who is supposed to take the responsibility to delete unjoined clusters from binding? Scheduler or other controllers (like cluster controller)?
Environment:
The text was updated successfully, but these errors were encountered: