KEP-548: Graduate ScheduleDaemonSetPods to GA

Implementation History
STABLE Implemented
Created 2019-10-11
Updated 2019-10-11
Latest 0.0
Ownership
Owning SIG
SIG Scheduling
Participating SIGs
Primary Authors

Graduate ScheduleDaemonSetPods to GA

Table of Contents

Release Signoff Checklist

  • 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

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.

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
  • 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.