Skip to content

Commit 7992ee5

Browse files
committed
address comments
1 parent bad859d commit 7992ee5

File tree

2 files changed

+32
-29
lines changed

2 files changed

+32
-29
lines changed

keps/sig-apps/4650-stateful-set-update-claim-template/README.md

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,26 @@
33
44
To get started with this template:
55
6-
- [ ] **Pick a hosting SIG.**
6+
- [x] **Pick a hosting SIG.**
77
Make sure that the problem space is something the SIG is interested in taking
88
up. KEPs should not be checked in without a sponsoring SIG.
9-
- [ ] **Create an issue in kubernetes/enhancements**
9+
- [x] **Create an issue in kubernetes/enhancements**
1010
When filing an enhancement tracking issue, please make sure to complete all
1111
fields in that template. One of the fields asks for a link to the KEP. You
1212
can leave that blank until this KEP is filed, and then go back to the
1313
enhancement and add the link.
14-
- [ ] **Make a copy of this template directory.**
14+
- [x] **Make a copy of this template directory.**
1515
Copy this template into the owning SIG's directory and name it
1616
`NNNN-short-descriptive-title`, where `NNNN` is the issue number (with no
1717
leading-zero padding) assigned to your enhancement above.
1818
- [x] **Fill out as much of the kep.yaml file as you can.**
1919
At minimum, you should fill in the "Title", "Authors", "Owning-sig",
2020
"Status", and date-related fields.
21-
- [ ] **Fill out this file as best you can.**
21+
- [x] **Fill out this file as best you can.**
2222
At minimum, you should fill in the "Summary" and "Motivation" sections.
2323
These should be easy if you've preflighted the idea of the KEP with the
2424
appropriate SIG(s).
25-
- [ ] **Create a PR for this KEP.**
25+
- [x] **Create a PR for this KEP.**
2626
Assign it to people in the SIG who are sponsoring this process.
2727
- [ ] **Merge early and iterate.**
2828
Avoid getting hung up on specific details and instead aim to get the goals of
@@ -133,18 +133,18 @@ checklist items _must_ be updated for the enhancement to be released.
133133

134134
Items marked with (R) are required *prior to targeting to a milestone / release*.
135135

136-
- [ ] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
136+
- [x] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
137137
- [ ] (R) KEP approvers have approved the KEP status as `implementable`
138-
- [ ] (R) Design details are appropriately documented
139-
- [ ] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
138+
- [x] (R) Design details are appropriately documented
139+
- [x] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
140140
- [ ] e2e Tests for all Beta API Operations (endpoints)
141141
- [ ] (R) Ensure GA e2e tests meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
142142
- [ ] (R) Minimum Two Week Window for GA e2e tests to prove flake free
143-
- [ ] (R) Graduation criteria is in place
143+
- [x] (R) Graduation criteria is in place
144144
- [ ] (R) [all GA Endpoints](https://github.com/kubernetes/community/pull/1806) must be hit by [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
145145
- [ ] (R) Production readiness review completed
146146
- [ ] (R) Production readiness review approved
147-
- [ ] "Implementation History" section is up-to-date for milestone
147+
- [x] "Implementation History" section is up-to-date for milestone
148148
- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
149149
- [ ] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
150150

@@ -182,9 +182,9 @@ Kubernetes does not support the modification of the `volumeClaimTemplates` of a
182182
This enhancement proposes relaxing validation of StatefulSet's VolumeClaim template.
183183
Specifically, we will allow modifying the following fields of `spec.volumeClaimTemplates`:
184184
* increasing the requested storage size (`spec.volumeClaimTemplates.spec.resources.requests.storage`)
185-
* modifying Volume AttributesClass used by the claim(`spec.volumeClaimTemplates.spec.volumeAttributesClassName`)
186-
* modifying VolumeClaim template's labels(`spec.volumeClaimTemplates.metadata.labels`)
187-
* modifying VolumeClaim template's annotations(`spec.volumeClaimTemplates.metadata.annotations`)
185+
* modifying Volume AttributesClass used by the claim (`spec.volumeClaimTemplates.spec.volumeAttributesClassName`)
186+
* modifying VolumeClaim template's labels (`spec.volumeClaimTemplates.metadata.labels`)
187+
* modifying VolumeClaim template's annotations (`spec.volumeClaimTemplates.metadata.annotations`)
188188
When `volumeClaimTemplates` is updated, the StatefulSet controller will reconcile the
189189
PersistentVolumeClaims in the StatefulSet's pods.
190190
The behavior of updating PersistentVolumeClaim is similar to updating Pod.
@@ -217,10 +217,9 @@ know that this has succeeded?
217217
-->
218218
* Allow users to update some fields of `volumeClaimTemplates` of a `StatefulSet`, specifically:
219219
* increasing the requested storage size (`spec.volumeClaimTemplates.spec.resources.requests.storage`)
220-
* modifying Volume AttributesClass used by the claim(`spec.volumeClaimTemplates.spec.volumeAttributesClassName`)
221-
* modifying VolumeClaim template's labels(`spec.volumeClaimTemplates.metadata.labels`)
222-
* modifying VolumeClaim template's annotations(`spec.volumeClaimTemplates.metadata.annotations`)
223-
* Automatically patch the existing PersistentVolumeClaim objects, without interrupting the running Pods.
220+
* modifying Volume AttributesClass used by the claim( `spec.volumeClaimTemplates.spec.volumeAttributesClassName`)
221+
* modifying VolumeClaim template's labels (`spec.volumeClaimTemplates.metadata.labels`)
222+
* modifying VolumeClaim template's annotations (`spec.volumeClaimTemplates.metadata.annotations`)
224223
* Add `.spec.volumeClaimUpdatePolicy` allowing users to decide how the volume claim will be updated: in-place or on PVC deletion.
225224

226225

@@ -264,8 +263,7 @@ specify how to coordinate the update of PVCs and Pods. Possible values are:
264263

265264
Additionally collect the status of managed PVCs, and show them in the StatefulSet status.
266265
Some fields in the `status` are updated to reflect the status of the PVCs:
267-
- readyReplicas: in addition to pods, also consider the PVCs status.
268-
- availableReplicas: total number of replicas of which both Pod and PVCs are ready for at least `minReadySeconds`
266+
- claimsReadyReplicas: the number of replicas with all PersistentVolumeClaims ready to use.
269267
- currentRevision, updateRevision, currentReplicas, updatedReplicas
270268
are updated to reflect the status of PVCs.
271269

@@ -303,7 +301,7 @@ The patch used in server-side apply is the volumeClaimTemplates in the StatefulS
303301
which can help recover from a failed expansion if `RecoverVolumeExpansionFailure` feature gate is enabled.
304302
* `controller-revision-hash` label is added to the PVCs.
305303

306-
Naturally, most of the update control logics also apply to PVCs.
304+
Naturally, most of the update control logic also applies to PVCs.
307305
* Wait for PVCs to be ready for at least `minReadySeconds` before proceeding to the next replica.
308306
* If `updateStrategy` is `RollingUpdate`, update the PVCs in the order from the largest ordinal to the smallest.
309307
* If `updateStrategy` is `OnDelete`, only update the PVCs if the Pod is deleted manually.
@@ -416,6 +414,10 @@ required) or even code snippets. If there's any ambiguity about HOW your
416414
proposal will be implemented, this is the place to discuss them.
417415
-->
418416

417+
When `volumeClaimUpdatePolicy` is `OnClaimDelete`, APIServer should accept the changes to `volumeClaimTemplates`,
418+
but StatefulSet controller should not touch the PVCs and preserve the current behaviour.
419+
Following describes the workflow when `volumeClaimUpdatePolicy` is `InPlace`.
420+
419421
When updating volumeClaimTemplates along with pod template, we will go through the following steps:
420422
1. Delete the old pod.
421423
2. Apply the changes to the PVCs used by this replica.
@@ -648,14 +650,14 @@ in back-to-back releases.
648650
#### Alpha
649651

650652
- Feature implemented behind a feature flag
651-
- Initial e2e tests completed and enabled
653+
- Initial unit, integration and e2e tests completed
652654

653655
#### Beta
654656

655657
- Gather feedback from developers and surveys
656-
- Complete features A, B, C
658+
- Complete features: StatefulSet status reporting and `kubectl rollout status` support.
657659
- Additional tests are in Testgrid and linked in KEP
658-
- More rigorous forms of testing—e.g., downgrade tests and scalability tests
660+
- Downgrade tests and scalability tests
659661
- All functionality completed
660662
- All security enforcement completed
661663
- All monitoring requirements completed
@@ -666,8 +668,7 @@ in back-to-back releases.
666668

667669
#### GA
668670

669-
- N examples of real-world usage
670-
- N installs
671+
- 3 examples of real-world usage
671672
- Allowing time for feedback
672673
- All issues and gaps identified as feedback during beta are resolved
673674

@@ -689,7 +690,7 @@ enhancement:
689690
No changes required to maintain previous behavior.
690691

691692
To make use of the enhancement, user can update `volumeClaimTemplates` of existing StatefulSets.
692-
He can also update `volumeClaimUpdatePolicy` to `InPlace` in order to rollout the changes automatically.
693+
One can also update `volumeClaimUpdatePolicy` to `InPlace` in order to rollout the changes automatically.
693694

694695
### Version Skew Strategy
695696

@@ -706,13 +707,13 @@ enhancement:
706707
CRI or CNI may require updating that component before the kubelet.
707708
-->
708709

709-
No coordinating behavior in the control plane and nodes.
710+
No coordinating between the control plane and nodes are required, since this KEP does not involve nodes.
710711

711712
Should enable this feature for APIServer before kube-controller-manager.
712713
An n-1 kube-controller-manager should ignore the `volumeClaimUpdatePolicy` field and never touch PVCs.
713714
It should always create PVCs with the latest `volumeClaimTemplates`.
714715

715-
If `volumeClaimUpdatePolicy` is set to `InPlace`,
716+
If `volumeClaimUpdatePolicy` is set to `InPlace` while the kube-controller-manager is down,
716717
when new kube-controller-manager starts, it should pick this up and start rolling out PVCs immediately.
717718

718719
If `volumeClaimUpdatePolicy` is set to `InPlace` when the feature-gate of kube-controller-manager is disabled,
@@ -1142,6 +1143,8 @@ Major milestones might include:
11421143
- the version of Kubernetes where the KEP graduated to general availability
11431144
- when the KEP was retired or superseded
11441145
-->
1146+
- 2024-05-17: initial version
1147+
- 2025-06-09: targeting v1.34 for alpha
11451148

11461149
## Drawbacks
11471150

keps/sig-apps/4650-stateful-set-update-claim-template/kep.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ authors:
66
owning-sig: sig-apps
77
participating-sigs:
88
- sig-storage
9-
status: provisional
9+
status: implementable
1010
creation-date: 2024-05-17
1111
reviewers:
1212
- "@kow3ns"

0 commit comments

Comments
 (0)