@@ -185,24 +185,20 @@ The major issues are:
185
185
immediately. This can result in descheduling of incorrect set of pods. This is outlined in the
186
186
decheduler [ KEP-1397] ( https://github.com/kubernetes-sigs/descheduler/blob/master/keps/1397-evictions-in-background/README.md )
187
187
and [ kubernetes-sigs/descheduler #1466 ] ( https://github.com/kubernetes-sigs/descheduler/pull/1466 ) .
188
- 5 . Graceful deletion of DaemonSet pods is currently only supported as part of (Linux) graceful node
188
+ 5 . Kubernetes does not offer resource reservation during a pod migration. We would like to make sure
189
+ that we have guaranteed resources for the workload before terminating the pod. This is discussed
190
+ in the [ kubernetes/kubernetes #129038 ] ( https://github.com/kubernetes/kubernetes/issues/129038 ) .
191
+ 6 . Graceful deletion of DaemonSet pods is currently only supported as part of (Linux) graceful node
189
192
shutdown. The length of the shutdown is again not application specific and is set cluster-wide
190
193
(optionally by priority) by the cluster admin. This does not take into account
191
194
` .spec.terminationGracePeriodSeconds ` of each pod and may cause premature termination of
192
195
the application. This has been discussed in issue [ kubernetes/kubernetes #75482 ] ( https://github.com/kubernetes/kubernetes/issues/75482 )
193
196
and in issue [ kubernetes-sigs/cluster-api #6158 ] ( https://github.com/kubernetes-sigs/cluster-api/issues/6158 ) .
194
- 6 . Different pod termination mechanisms are not synchronized with each other. So for example, the
197
+ 7 . Different pod termination mechanisms are not synchronized with each other. So for example, the
195
198
taint manager may prematurely terminate pods that are currently under Node Graceful Shutdown.
196
199
This can also happen with other mechanism (e.g., different types of evictions). This has been
197
200
discussed in the issue [ kubernetes/kubernetes #124448 ] ( https://github.com/kubernetes/kubernetes/issues/124448 )
198
201
and in the issue [ kubernetes/kubernetes #72129 ] ( https://github.com/kubernetes/kubernetes/issues/72129 ) .
199
- 7 . [ Affinity Based Eviction] ( https://github.com/kubernetes/enhancements/issues/4328 ) is an upcoming
200
- feature that would like to introduce the ` RequiredDuringSchedulingRequiredDuringExecution `
201
- nodeAffinity option to remove pods from nodes that do not match this affinity. The controller
202
- proposed by this feature would like to use the EvictionRequest API for the disruption safety and
203
- observability reasons. It can also leave the eviction logic and reconciliation to the eviction
204
- request controller and reducing the maintenance burden. Discussed in the KEP
205
- [ kubernetes/enhancements #4329 ] ( https://github.com/kubernetes/enhancements/pull/4329 ) .
206
202
207
203
This KEP is a prerequisite for the [ Declarative Node Maintenance KEP] ( https://github.com/kubernetes/enhancements/pull/4213 ) ,
208
204
which describes other issues and consequences that would be solved by the EvictionRequest API.
@@ -223,7 +219,7 @@ the application supports this.
223
219
224
220
### PodDisruptionBudget Standing Issues
225
221
226
- For completeness here is a complete list of upstream open PDB issues. Most are relevant to this KEP.
222
+ For completeness here is a complete list of open PDB issues. Most are relevant to this KEP.
227
223
228
224
- [ Mandatorliy specify how the application handle disruptions in the pod spec.] ( https://github.com/kubernetes/kubernetes/issues/124390 )
229
225
- [ Treat liveness probe-based restarts as voluntary disruptions gated by PodDisruptionBudgets] ( https://github.com/kubernetes/kubernetes/issues/123204 )
@@ -240,6 +236,7 @@ For completeness here is a complete list of upstream open PDB issues. Most are r
240
236
- [ New FailedEviction PodDisruptionCondition] ( https://github.com/kubernetes/kubernetes/issues/128815 )
241
237
- [ Distinguish PDB error separately in eviction API] ( https://github.com/kubernetes/kubernetes/issues/125500 )
242
238
- [ Confusing use of TooManyRequests error for eviction] ( https://github.com/kubernetes/kubernetes/issues/106286 )
239
+ - [ New EvictionBlocked PodDisruptionCondition] ( https://github.com/kubernetes/kubernetes/issues/128815 )
243
240
244
241
### Goals
245
242
@@ -1780,10 +1777,10 @@ also not possible to change the default eviction behavior for safety reasons. So
1780
1777
would not be sufficient, as we need to solve this for all pods.
1781
1778
1782
1779
We could track these requests in the PDB object itself. A PDB can track multiple pods with its
1783
- selector. The pods do not have to be from the same application, even though they usually are. These
1784
- pods may run in various locations and may have various reasons for their disruption. It would be
1785
- difficult to synchronize the PDB object for applications with a large number of pods. This could
1786
- result in inconsistent updates and conflicts as many components would race for the PDB updates.
1780
+ selector. These pods may run in various locations and may have various reasons for their disruption.
1781
+ It would be difficult to synchronize the PDB object for applications with a large number of pods.
1782
+ This could result in inconsistent updates and conflicts as many components would race for the PDB
1783
+ updates.
1787
1784
1788
1785
The updates to the PDB could be done solely by the eviction endpoint, but this is disqualified
1789
1786
because many components override this endpoint with validating admission webhooks. And so we would
0 commit comments