|
19 | 19 | - [Risks and Mitigations](#risks-and-mitigations)
|
20 | 20 | - [Design Details](#design-details)
|
21 | 21 | - [Resource States](#resource-states)
|
| 22 | + - [Priority of Resize Requests](#priority-of-resize-requests) |
22 | 23 | - [Kubelet and API Server Interaction](#kubelet-and-api-server-interaction)
|
23 | 24 | - [Kubelet Restart Tolerance](#kubelet-restart-tolerance)
|
24 | 25 | - [Scheduler and API Server Interaction](#scheduler-and-api-server-interaction)
|
@@ -441,15 +442,27 @@ requests will be attempted according to the following priority:
|
441 | 442 | prioritized first. These resizes are expected to always succeed and would not be marked as
|
442 | 443 | pending.
|
443 | 444 | 2. *PriorityClass*: Pods with a higher PriorityClass.
|
444 |
| -3. *QoS Class*: Pods with a higher QoS class, where Guaranteed > Burstable > Best Effort. |
| 445 | +3. *QoS Class*: Pods with a higher QoS class, where Guaranteed > Burstable. Best effort pods |
| 446 | +do not have CPU or memory resources, so are excluded from the discussion here. |
445 | 447 | 4. *Time since resize request*: If all else is the same, resizes that have been pending
|
446 | 448 | longer will be retried first (leveraging LastTransitionTime on the PodResizePending condition).
|
447 | 449 |
|
| 450 | +These priorities are *only* used to indicate which resize requests will be attempted first. |
| 451 | +Scheduler preemption/eviction to make room for pending resizes is not in scope. |
| 452 | + |
448 | 453 | A higher priority resize being marked as pending should not block the remaining pending resizes
|
449 | 454 | from being attempted, i.e. we will try all remaining resizes in the queue even if one is unsuccessful.
|
450 | 455 | Resizes that are deferred will be added back to the queue to be re-attempted later. Resizes that are
|
451 | 456 | infeasible may never be retried.
|
452 | 457 |
|
| 458 | +Allocation will be attempted on the pods in the queue: |
| 459 | +- At the end of `HandlePodUpdates`, `HandlePodRemoves`, and `HandlePodCleanups` when a change to the queue is detected. |
| 460 | +- Upon completion of another resize request. |
| 461 | +- Periodically, to catch any cases that we may have missed. |
| 462 | + |
| 463 | +A successful allocation will trigger a pod sync, which will actuate the allocated resize and update the |
| 464 | +pod status accordingly. |
| 465 | + |
453 | 466 | ### Kubelet and API Server Interaction
|
454 | 467 |
|
455 | 468 | When a new Pod is created, Scheduler is responsible for selecting a suitable
|
|
0 commit comments