Skip to content

Commit 3e15011

Browse files
authored
Merge pull request kubernetes#3670 from vinaykul/master
Retarget in-place pod resize KEP to 1.27 alpha
2 parents 7f68141 + b1cfd5c commit 3e15011

File tree

2 files changed

+48
-6
lines changed

2 files changed

+48
-6
lines changed

keps/sig-node/1287-in-place-update-pod-resources/README.md

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -889,7 +889,8 @@ version of the API and update to a matching kubelet and making node schedulable
889889
Downgrade involves doing the above in reverse.
890890

891891
### Version Skew Strategy
892-
Kubelet and the CRI runtime versions are expected to match so we don't have to worry about.
892+
CRI changes were merged in v1.25 in order to enable runtimes to implement support.
893+
- containerd added support for this feature in 1.6.9
893894

894895
Previous versions of clients that are unaware of the new ResizePolicy fields would set them
895896
to nil. API server mutates such updates by copying non-nil values from old Pod to the current
@@ -898,7 +899,48 @@ Pod.
898899
A previous version of kubelet interprets mutation to Pod Resources as a Container definition
899900
change and will restart the container with the new Resources. This could lead to Node resource
900901
over-subscription. In order to address this, the feature-gate will remain default false for
901-
atleast two versions after the initial release that carries it.
902+
atleast two versions after v1.27 alpha release. i.e: beta is planned for v1.29 and
903+
InPlacePodVeritcalScaling feature-gate will be true in versions v1.29+
904+
905+
kubelet: When feature-gate is disabled, if kubelet sees a Proposed resize, it rejects the
906+
resize as Infeasible.
907+
908+
scheduler: If PodStatus.Resize field is not empty, scheduler uses max(ResourcesAllocated, Requests)
909+
even if the feature-gate is disabled.
910+
911+
Allowed [version skews](https://kubernetes.io/releases/version-skew-policy/) are handled as below:
912+
913+
| apiserver ver -> | v1.27 | v1.28 | v1.29 | v1.30 |
914+
|------------------|-------------|--------------|-------------|-------------|
915+
| kubelet v1.25 | N | X | X | X |
916+
| kubelet v1.26 | N | N | X | X |
917+
| kubelet v1.27 | N | N | A | X |
918+
| kubelet v1.28 | X | N | A | A |
919+
| kubelet v1.29 | X | X | A | N |
920+
| kubelet v1.30 | X | X | X | N |
921+
| scheduler v1.26 | N | X | X | X |
922+
| scheduler v1.27 | N | N | X | X |
923+
| scheduler v1.28 | X | N | B | X |
924+
| scheduler v1.29 | X | X | N | N |
925+
| scheduler v1.30 | X | X | X | N |
926+
| kubectl v1.26 | C | X | X | X |
927+
| kubectl v1.27 | N | N | X | X |
928+
| kubectl v1.28 | N | N | N | X |
929+
| kubectl v1.29 | X | N | N | N |
930+
| kubectl v1.30 | X | X | N | N |
931+
| kubectl v1.31 | X | X | X | N |
932+
933+
**X**: Not allowed
934+
935+
**N**: No special handling needed.
936+
937+
**A**: kubelet sets PodStatus.Resize=Infeasible if it sees PodStatus.Resize=Proposed
938+
when feature-gate is disabled on kubelet
939+
940+
**B**: Use max(ResourcesAllocated, Requests) if PodStatus.Resize != "" (empty)
941+
942+
**C**: dropDisabledPodFields/dropDisabledPodStatusFields function sets ResizePolicy,
943+
ResourcesAllocated, and ContainerStatus.Resources fields to nil.
902944

903945
## Production Readiness Review Questionnaire
904946

keps/sig-node/1287-in-place-update-pod-resources/kep.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ replaces:
3232

3333
stage: "alpha"
3434

35-
latest-milestone: "v1.26"
35+
latest-milestone: "v1.27"
3636

3737
milestone:
38-
alpha: "v1.26"
39-
beta: "v1.27"
40-
stable: "v1.29"
38+
alpha: "v1.27"
39+
beta: "v1.29"
40+
stable: "v1.30"
4141

4242
feature-gates:
4343
- name: InPlacePodVerticalScaling

0 commit comments

Comments
 (0)