Open
Description
We are moving to have kubectl drain use the eviction subresource (#34277), and honor PodDisruptionBudget
.
From comment by @erictune which better captures this requirement.
There should be a default behavior for disruption budgets.
The default should optimize for these things:
- Users should not need to create, view, or even know about with the PodDisruptionBudget resource, and still get "reasonable" default behaviors.
- The default behavior should be reasonable for a wide variety of app use cases.
- The default behavior could be expressed succinctly to users.
- Cluster admins should be able to upgrade nodes quickly in clusters that have typical apps with default budgets, without interacting with app owners.
Some options:
- All pods in the cluster that match no user-created disruption budget have a budget of 1 at a time.
- could be too conservative to allow for parallel node drains.
- All pods in a namespace cluster that match no user-created disruption budget have a budget of 1 at a time.
- less conservative than 1
- probably not too conservative for systems with many namespaces relative to number of nodes.
- Each set of pods with the same controller and that match no user-created disruption budget, have a disruption budget of 1 at a time.
- assuming spreading of collections by scheduler, parallel node drains likely to be possible
- the disruption controller already computes this grouping of pods, sort of.
- Each set of pods with the same service, that match no user-created disruption budget, have a disruption budget of 1 at a time.
- matches a default spreading behavior by the scheduler, so unlikely to have two on the same machine from same service, so parallel node drains likely to be possible.
The actual implementation could be to have a controller that makes PDBs for things without them and then cleans them up when not needed anymore, or for the eviction logic to just compute these sets, but not expose them.
cc @erictune @davidopp @kow3ns @janetkuo @caesarxuchao @ymqytw @kubernetes/sig-apps
Metadata
Metadata
Labels
Type
Projects
Status
Needs Triage