-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(scheduling): initialize kep for graduating schedule daemonset pods
- Loading branch information
draveness
committed
Oct 11, 2019
1 parent
6885aec
commit 14aebbd
Showing
1 changed file
with
126 additions
and
0 deletions.
There are no files selected for viewing
126 changes: 126 additions & 0 deletions
126
keps/sig-scheduling/20191011-graduate-schedule-daemonset-pods-to-ga.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
--- | ||
title: Graduate ScheduleDaemonSetPods to GA | ||
authors: | ||
- "@draveness" | ||
owning-sig: sig-scheduling | ||
participating-sigs: | ||
- sig-apps | ||
reviewers: | ||
- @k82cn | ||
- TBD | ||
approvers: | ||
- @k82cn | ||
- TBD | ||
editor: @draveness | ||
creation-date: 2019-10-11 | ||
last-updated: 2019-10-11 | ||
status: provisional | ||
see-also: | ||
- "https://docs.google.com/document/d/10Ch3dhD88mnHYTq9q4jtX3e9e6gpndC78g5Ea6q4JY4/edit#heading=h.dtxm02f9bgaw" | ||
--- | ||
|
||
# Graduate ScheduleDaemonSetPods to GA | ||
|
||
## Table of Contents | ||
|
||
A table of contents is helpful for quickly jumping to sections of a KEP and for highlighting any additional information provided beyond the standard KEP template. | ||
|
||
Ensure the TOC is wrapped with <code><!-- toc --&rt;<!-- /toc --&rt;</code> tags, and then generate with `hack/update-toc.sh`. | ||
|
||
<!-- toc --> | ||
- [Release Signoff Checklist](#release-signoff-checklist) | ||
- [Summary](#summary) | ||
- [Motivation](#motivation) | ||
- [Goals](#goals) | ||
- [Non-Goals](#non-goals) | ||
- [Proposal](#proposal) | ||
- [Implementation Details/Notes/Constraints](#implementation-detailsnotesconstraints) | ||
- [Risks and Mitigations](#risks-and-mitigations) | ||
- [Design Details](#design-details) | ||
- [Test Plan](#test-plan) | ||
- [Existing Tests](#existing-tests) | ||
- [Needed Tests](#needed-tests) | ||
- [Graduation Criteria](#graduation-criteria) | ||
- [Implementation History](#implementation-history) | ||
<!-- /toc --> | ||
|
||
## Release Signoff Checklist | ||
|
||
**ACTION REQUIRED:** In order to merge code into a release, there must be an issue in [kubernetes/enhancements] referencing this KEP and targeting a release milestone **before [Enhancement Freeze](https://github.com/kubernetes/sig-release/tree/master/releases) | ||
of the targeted release**. | ||
|
||
For enhancements that make changes to code or processes/procedures in core Kubernetes i.e., [kubernetes/kubernetes], we require the following Release Signoff checklist to be completed. | ||
|
||
Check these off as they are completed for the Release Team to track. These checklist items _must_ be updated for the enhancement to be released. | ||
|
||
- [ ] kubernetes/enhancements issue in release milestone, which links to KEP (this should be a link to the KEP location in kubernetes/enhancements, not the initial KEP PR) | ||
- [ ] KEP approvers have set the KEP status to `implementable` | ||
- [ ] Design details are appropriately documented | ||
- [ ] Test plan is in place, giving consideration to SIG Architecture and SIG Testing input | ||
- [ ] Graduation criteria is in place | ||
- [ ] "Implementation History" section is up-to-date for milestone | ||
- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io] | ||
- [ ] Supporting documentation e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes | ||
|
||
**Note:** Any PRs to move a KEP to `implementable` or significant changes once it is marked `implementable` should be approved by each of the KEP approvers. If any of those approvers is no longer appropriate than changes to that list should be approved by the remaining approvers and/or the owning SIG (or SIG-arch for cross cutting KEPs). | ||
|
||
**Note:** This checklist is iterative and should be reviewed and updated every time this enhancement is being considered for a milestone. | ||
|
||
[kubernetes.io]: https://kubernetes.io/ | ||
[kubernetes/enhancements]: https://github.com/kubernetes/enhancements/issues | ||
[kubernetes/kubernetes]: https://github.com/kubernetes/kubernetes | ||
[kubernetes/website]: https://github.com/kubernetes/website | ||
|
||
## Summary | ||
|
||
ScheduleDaemonSetPods has been created in the past to schedule DaemonSet Pods by the default scheduler. We wish to graduate ScheduleDaemonSetPods feature to make scheduling decisions only in the scheduler and remove the scheduling related code in the DaemonSetController. | ||
|
||
## Motivation | ||
|
||
ScheduleDaemonSetPods has been beta'ed in 1.12. | ||
|
||
### Goals | ||
|
||
+ Plan to promote ScheduleDaemonSetPods to the stable version. | ||
+ Remove scheduling related codes in DaemonSetController. | ||
|
||
### Non-Goals | ||
|
||
+ Changing API field or meaning | ||
|
||
## Proposal | ||
|
||
### Implementation Details/Notes/Constraints | ||
|
||
ScheduleDaemonSetPods attaches node affinity to DaemonSet pods, which let the default kubernetes scheduler to schedule pods on specific nodes. The DaemonSet controller uses several scheduler predicates to calculate the nodes which need to schedule DaemonSet pods and create pods with specific NodeAffinity. | ||
|
||
### Risks and Mitigations | ||
|
||
The major concern for graduating ScheduleDaemonSetPods to the stable version could be the overhead to the scheduler and the startup time of daemons. After we graduate this feature, the scheduler would select nodes for all of the DaemonSet pods, which may cause a lot of pods with NodeAffinity to be processed. | ||
|
||
## Design Details | ||
|
||
### Test Plan | ||
|
||
#### Existing Tests | ||
|
||
ScheduleDaemonSetPods currently has multiple tests in various components that use the feature. | ||
|
||
#### Needed Tests | ||
|
||
As a non-optional feature, there should be a conformance test for ScheduleDaemonSetPods. | ||
|
||
### Graduation Criteria | ||
|
||
**Note:** *Section not required until targeted at a release.* | ||
|
||
- [ ] Graduate ScheduleDaemonSetPods to GA | ||
- [ ] Remove suspenedDaemonPods which handles Pod deleted on the nodes. | ||
- [ ] Refactor nodeShouldRunDaemonPod to remove useless return values | ||
- [ ] Needs a conformance test | ||
- [ ] Update documents to reflect the changes | ||
|
||
## Implementation History | ||
|
||
+ ScheduleDaemonSetPods was introduced in Kubernetes 1.11 as an alpha version. | ||
+ ScheduleDaemonSetPods was graduated to beta in Kubernetes 1.12. |