-
Notifications
You must be signed in to change notification settings - Fork 39.3k
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
Allow dynamic change of scheduler's policy configuration #41600
Comments
@bgrant0607 Yes. Thanks for pointing out. This is specifically targeting scheduler's config, but I guess we can mark it a dupe and continue the discussion in #1627. |
I think it's worth keeping both issues open; this one is specific to scheduler, even if it uses an appoach decided in #1627. |
@kubernetes/sig-api-machinery-misc @kubernetes/sig-scheduling-feature-requests |
In general, I've been wanting a SIGUP reconfig on * kube components. Our initialization paths are really heavy weight atm, but imho we could probably start with rejigging for either signal-trap or fstat change = reconfig. I'm old-school, so i'll always prefer an explicit SIGUP. |
one way to do this would be
|
most components don't have access to etcd |
(by etcd i meant apiserver, updated accordingly) |
See also #12245 |
@bgrant0607 Thanks for the link. This issue targets one of the schedulers command-line config items which is the scheduler's policy config (https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/componentconfig/v1alpha1/types.go#L111). I changed the title to clarify that this is only about scheduler's policy configuration. |
ref/ #28842 |
If you haven't seen this document already, please take a look and leave your comments: You must be a member of one of the two following groups to be able to see and comment: |
Just so it's clear... the proposal today is death and restart vs. soft re-config. We should probably denote the two options and explore whether it makes sense to evaluate soft-reconfig, albeit a tougher problem. |
@timothysc In the document I alluded to the fact that we can apply the config without restarting, but soft reconfig was not the focus of the document. When implementing the feature, I will evaluate it more to see what it takes to reconfig without restarting. We should defenitely think about reconfig as the next step. |
I hate to keep expanding the scope of this issue, but one other thing that might be worth considering is to make some kind of decision of how we view the scheduler extender. What I mean is: it was implemented in the very early days of Kubernetes, before we had much processes in place, and the feeling at the time was that we would not encourage people to use it except as a last resort. This is why we never wrote documentation for it. Essentially it was an "alpha feature," even though we never called it that. IIRC the main concern was that it would interfere with scheduling optimizations, and in general would hurt scheduler latency and throughput (of course only when it is being used). But if it is something we now consider a "permanent" and full-fledged part of the default scheduler, then we should at least write documentation for it. The reason I am mentioning it here is that the scheduler policy config is how you define the extender endpoint(s) and other attributes of the extender. If we decide that it really is "alpha" then we should make sure the config somehow makes that clear. Possibly this belongs in a separate issue, but for now maybe just mentioning it here is enough. |
As I have mentioned in the above doc, the final decision is to implement approach #2. The main reason for picking this approach is its advantages as explained in the doc. Please let me know if you have any objections. |
kind/feature |
[MILESTONENOTIFIER] Milestone Removed Important: kind: Must specify exactly one of [ Removing it from the milestone. |
Issues go stale after 90d of inactivity. Prevent issues from auto-closing with an If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or |
/remove-lifecycle stale |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
Stale issues rot after 30d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
Rotten issues close after 30d of inactivity. Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
What is the state of this? Was the doccument ever published for the public or just to the two mentioned GoogleGroups? I'm intereseted in modifying the weights that each priority function has in a dynamic way. |
Is this a BUG REPORT or FEATURE REQUEST? (choose one): FEATURE REQUEST
Kubernetes currently supports "multiple schedulers" (users can run their own custom scheduler(s))
(https://kubernetes.io/docs/admin/multiple-schedulers/), but running an entire separate scheduler is heavyweight, especially for common desires like using best-fit instead of the default spreading policy. There is a scheduler configuration file which allows users to selectively enable/disable predicate and priority functions, and to choose the weights of the enabled priority functions. But this file is read from local disk, so it is not flexible enough for run-time changes and may not be easily accessible in hosted solutions.
It would be great if scheduler configuration could be changed dynamically (probably by setting/changing a ConfigMap in an API call).
One possible use case for this feature is to allow automatic change of scheduling policies when certain characteristics of the cluster change. For example, we could automatically switch the scheduling policy from spreading to best-fit when the user enables cluster autoscaler (https://kubernetes.io/docs/admin/cluster-management/#cluster-autoscaling) on an existing cluster.
The text was updated successfully, but these errors were encountered: