23
23
- [ Affected Components] ( #affected-components )
24
24
- [ Future Enhancements] ( #future-enhancements )
25
25
- [ Risks and Mitigations] ( #risks-and-mitigations )
26
- - [ Test Plan] ( #test-plan )
27
- - [ Unit Tests] ( #unit-tests )
28
- - [ Pod Resize E2E Tests] ( #pod-resize-e2e-tests )
29
- - [ Resource Quota and Limit Ranges] ( #resource-quota-and-limit-ranges )
30
- - [ Resize Policy Tests] ( #resize-policy-tests )
31
- - [ Backward Compatibility and Negative Tests] ( #backward-compatibility-and-negative-tests )
32
- - [ Graduation Criteria] ( #graduation-criteria )
33
- - [ Alpha] ( #alpha )
34
- - [ Beta] ( #beta )
35
- - [ Stable] ( #stable )
26
+ - [ Test Plan] ( #test-plan )
27
+ - [ Unit Tests] ( #unit-tests )
28
+ - [ Pod Resize E2E Tests] ( #pod-resize-e2e-tests )
29
+ - [ Resource Quota and Limit Ranges] ( #resource-quota-and-limit-ranges )
30
+ - [ Resize Policy Tests] ( #resize-policy-tests )
31
+ - [ Backward Compatibility and Negative Tests] ( #backward-compatibility-and-negative-tests )
32
+ - [ Graduation Criteria] ( #graduation-criteria )
33
+ - [ Alpha] ( #alpha )
34
+ - [ Beta] ( #beta )
35
+ - [ Stable] ( #stable )
36
+ - [ Upgrade / Downgrade Strategy] ( #upgrade--downgrade-strategy )
37
+ - [ Version Skew Strategy] ( #version-skew-strategy )
36
38
- [ Production Readiness Review Questionnaire] ( #production-readiness-review-questionnaire )
37
39
- [ Feature Enablement and Rollback] ( #feature-enablement-and-rollback )
38
40
- [ Rollout, Upgrade and Rollback Planning] ( #rollout-upgrade-and-rollback-planning )
@@ -504,14 +506,14 @@ Other components:
504
506
keep compatibility, PodResourceAllocation admission controller mutates such
505
507
an update by copying non-nil values from the old Pod to current Pod.
506
508
507
- ## Test Plan
509
+ ### Test Plan
508
510
509
- ### Unit Tests
511
+ #### Unit Tests
510
512
511
513
Unit tests will cover the sanity of code changes that implements the feature,
512
514
and the policy controls that are introduced as part of this feature.
513
515
514
- ### Pod Resize E2E Tests
516
+ #### Pod Resize E2E Tests
515
517
516
518
End-to-End tests resize a Pod via PATCH to Pod's Spec.Containers[ i] .Resources.
517
519
The e2e tests use docker as container runtime.
@@ -569,7 +571,7 @@ E2E tests for Guaranteed class Pod with three containers (c1, c2, c3):
569
571
1 . Increase CPU for c1 & c3, decrease c2 - net CPU increase for Pod.
570
572
1 . Increase memory for c1 & c3, decrease c2 - net memory increase for Pod.
571
573
572
- ### Resource Quota and Limit Ranges
574
+ #### Resource Quota and Limit Ranges
573
575
574
576
Setup a namespace with ResourceQuota and a single, valid Pod.
575
577
1 . Resize the Pod within resource quota - CPU only.
@@ -586,7 +588,7 @@ Setup a namespace with min and max LimitRange and create a single, valid Pod.
586
588
1 . Increase memory to exceed max value.
587
589
1 . Decrease memory to go below min value.
588
590
589
- ### Resize Policy Tests
591
+ #### Resize Policy Tests
590
592
591
593
Setup a guaranteed class Pod with two containers (c1 & c2).
592
594
1 . No resize policy specified, defaults to RestartNotRequired. Verify that CPU and
@@ -600,7 +602,7 @@ Setup a guaranteed class Pod with two containers (c1 & c2).
600
602
1 . RestartNotRequired cpu, Restart memory policy for c1. Resize c1 CPU & memory,
601
603
verify container is resized with restart.
602
604
603
- ### Backward Compatibility and Negative Tests
605
+ #### Backward Compatibility and Negative Tests
604
606
605
607
1 . Verify that Node is allowed to update only a Pod's ResourcesAllocated field.
606
608
1 . Verify that only Node account is allowed to udate ResourcesAllocated field.
@@ -615,28 +617,40 @@ Setup a guaranteed class Pod with two containers (c1 & c2).
615
617
616
618
TODO: Identify more cases
617
619
618
- ## Graduation Criteria
620
+ ### Graduation Criteria
619
621
620
- ### Alpha
622
+ #### Alpha
621
623
- In-Place Pod Resouces Update functionality is implemented for running Pods,
622
624
- LimitRanger and ResourceQuota handling are added,
623
625
- Resize Policies functionality is implemented,
624
626
- Unit tests and E2E tests covering basic functionality are added,
625
627
- E2E tests covering multiple containers are added.
626
628
627
- ### Beta
629
+ #### Beta
628
630
- VPA alpha integration of feature completed and any bugs addressed,
629
631
- E2E tests covering Resize Policy, LimitRanger, and ResourceQuota are added,
630
632
- Negative tests are identified and added.
631
633
- A "/resize" subresource is defined and implemented.
632
634
- Pod-scoped resources are handled if that KEP is past alpha
633
635
634
- ### Stable
636
+ #### Stable
635
637
- VPA integration of feature moved to beta,
636
638
- User feedback (ideally from atleast two distinct users) is green,
637
639
- No major bugs reported for three months.
638
640
- Pod-scoped resources are handled if that KEP is past alpha
639
641
642
+ ### Upgrade / Downgrade Strategy
643
+ Scheduler and API server should be updated before Kubelets in that order.
644
+ Kubelet and the runtime versions should use the same CRI version in lock-step.
645
+ Upgrade involves draining all pods from a node, installing a CRI runtime with this
646
+ version of the API and update to a matching kubelet and making node schedulable again.
647
+ Downgrade involves doing the above in reverse.
648
+
649
+ ### Version Skew Strategy
650
+ Kubelet and the CRI runtime versions are expected to match so we don't have to worry about.
651
+ Previous versions of clients that are unaware of the new ResizePolicy fields would set them
652
+ to nil. API server mutates such updates by copying non-nil values from old Pod to current Pod
653
+
640
654
## Production Readiness Review Questionnaire
641
655
642
656
<!--
0 commit comments