Skip to content

Commit 3ef9f06

Browse files
authored
Merge pull request #4901 from mattcary/prr-ga
KEP-1847: Promote statefulset autodelete feature to stable
2 parents 96702c9 + b4e4d16 commit 3ef9f06

File tree

3 files changed

+38
-24
lines changed

3 files changed

+38
-24
lines changed

keps/prod-readiness/sig-apps/1847.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@ alpha:
33
approver: "@wojtek-t"
44
beta:
55
approver: "@johnbelamaric"
6+
stable:
7+
approver: "@johnbelamaric"

keps/sig-apps/1847-autoremove-statefulset-pvcs/README.md

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,17 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
7777
- [X] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
7878
- [X] (R) KEP approvers have approved the KEP status as `implementable`
7979
- [X] (R) Design details are appropriately documented
80-
- [X] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
80+
- [X] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
8181
- [X] e2e Tests for all Beta API Operations (endpoints)
82-
- [ ] (R) Ensure GA e2e tests meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
82+
- [X] (R) Ensure GA e2e tests meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
83+
- [X] (R) Minimum Two Week Window for GA e2e tests to prove flake free
8384
- [X] (R) Graduation criteria is in place
85+
- [X] (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)
8486
- [X] (R) Production readiness review completed
8587
- [X] (R) Production readiness review approved
86-
- [X] "Implementation History" section is up-to-date for milestone
88+
- [X] "Implementation History" section is up-to-date for milestone
8789
- [X] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
88-
- [ ] Supporting documentation e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
89-
90+
- [X] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
9091

9192
[kubernetes.io]: https://kubernetes.io/
9293
[kubernetes/enhancements]: https://git.k8s.io/enhancements
@@ -360,24 +361,27 @@ to implement this enhancement.
360361

361362
#### Unit tests
362363

363-
- `k8s.io/kubernetes/pkg/controller/statefulset`: `2022-06-15`: `85.5%`
364-
- `k8s.io/kubernetes/pkg/registry/apps/statefulset`: `2022-06-15`: `68.4%`
365-
- `k8s.io/kubernetes/pkg/registry/apps/statefulset/storage`: `2022-06-15`: `64%`
364+
From https://testgrid.k8s.io/sig-testing-canaries#ci-kubernetes-coverage-unit&include-filter-by-regex=statefulset
366365

366+
- `k8s.io/kubernetes/pkg/controller/statefulset`: `2024-10-07`: `86.5%`
367+
- `k8s.io/kubernetes/pkg/registry/apps/statefulset`: `2022-10-07`: `62.7%`
368+
- `k8s.io/kubernetes/pkg/registry/apps/statefulset/storage`: `2022-10-07`: `64%`
367369

368370
##### Integration tests
369371

370-
- `test/integration/statefulset`: `2022-09-21`: These do not appear to be
371-
running in a job visible to the triage dashboard, see for example a search
372-
for the previously existing [TestStatefulSetStatusWithPodFail](https://storage.googleapis.com/k8s-triage/index.html?test=TestStatefulSetStatusWithPodFail).
372+
- `test/integration/statefulset`: `2024-10-07`: [No failures](https://storage.googleapis.com/k8s-triage/index.html?job=ci-kubernetes-integration&test=TestAutodeleteOwnerRefs)
373373

374374
Added `TestAutodeleteOwnerRefs` to `k8s.io/kubernetes/test/integration/statefulset`.
375375

376376
##### E2E tests
377377

378-
- `[gci-gce-statefulset](https://testgrid.k8s.io/google-gce#gci-gce-statefulset)`: `2022-09-21`: `0 Failures`
379-
- Note that as this KEP is behind the `StatefulSetAutoDeletePVC` feature gate,
380-
tests for this KEP are not being run.
378+
- `[gci-gce-statefulset](https://testgrid.k8s.io/google-gce#gci-gce-statefulset)`: `2024-10-07`: `0 Failures`
379+
- [triage](https://storage.googleapis.com/k8s-triage/index.html?test=.*StatefulSetPersistentVolumeClaimPolicy.*): `2024-10-09`:
380+
- Flakey failures in `ci-kubernetes-kind-e2e-parallel`, `ci-kubernetes-kind-e2e-parallel-1-30` and
381+
`ci-kubernetes-kind-ipv6-e2e-parallel-1-31` also had failures in many other tests, so appears to
382+
be general infrastructure flake.
383+
- ` [sig-apps] StatefulSet Non-retain StatefulSetPersistentVolumeClaimPolicy should delete PVCs
384+
after adopting pod (WhenScaled)` seems to have real flakes which will be investigated.
381385

382386
Added `Feature:StatefulSetAutoDeletePVC` tests to `k8s.io/kubernetes/test/e2e/apps/`.
383387

@@ -403,7 +407,10 @@ mechanism to run upgrade/downgrade tests.
403407
- (Done) Enable feature gate for e2e pipelines
404408

405409
#### GA release
406-
- Validate with customer workloads
410+
- (Done) Validate with customer workloads. There has been no customer feedback
411+
aside from some unrelated issues on GKE which showed that customers were using
412+
delete strategies, and analysis of owner references on PVCs that motivated
413+
[#122400](https://github.com/kubernetes/kubernetes/issues/122400).
407414

408415

409416
### Upgrade / Downgrade Strategy
@@ -432,9 +439,14 @@ set. The behavior is then as follows.
432439
* The retention policy is ignored.
433440

434441
### Version Skew Strategy
435-
There are only kube-controller-manager changes involved (in addition to the
436-
apiserver changes for dealing with the new StatefulSet field). Node components
437-
are not involved so there is no version skew between nodes and the control plane.
442+
There are only apiserver and kube-controller-manager changes involved. Node
443+
components are not involved so there is no version skew between nodes and the
444+
control plane. Since the api changes are backwards compatible, as long as the
445+
apiserver version which originally added the new StatefulSet fields is rolled
446+
out before the kube-controller-manager, behavior will be correct. Since the alpha
447+
API has been out since 1.23 and there have been no incompatible changes to the
448+
API, the order of any modern apiserver & kube-controller-manager rollout should
449+
not matter anyway.
438450

439451
## Production Readiness Review Questionnaire
440452

@@ -504,8 +516,7 @@ are not involved so there is no version skew between nodes and the control plane
504516

505517
##### Is the rollout accompanied by any deprecations and/or removals of features, APIs,
506518
fields of API types, flags, etc.?
507-
Enabling the feature also enables the `PersistentVolumeClaimRetentionPolicy`
508-
api field.
519+
No
509520

510521
### Monitoring Requirements
511522

@@ -570,8 +581,8 @@ of this feature?
570581
have been happening anyway, manually.
571582

572583
##### Will enabling / using this feature result in increasing size or count of the existing API objects?
573-
- PVC, new ownerRef.
574-
- StatefulSet, new field
584+
- PVC, new ownerRef; ~64 bytes
585+
- StatefulSet, new field; ~8 bytes (holds string enumeration either "Delete" or "Retain"
575586

576587
##### Will enabling / using this feature result in increasing time taken by any operations covered by existing SLIs/SLOs?
577588
No. (There are currently no StatefulSet SLOs?)
@@ -624,6 +635,7 @@ stateful set controller lives) should be examined and/or restarted.
624635
- 1.23, alpha implementation.
625636
- 1.27, graduation to beta.
626637
- 1.31, fix controller references.
638+
- 1.32, graduation to GA.
627639

628640
## Drawbacks
629641
The StatefulSet field update is required.

keps/sig-apps/1847-autoremove-statefulset-pvcs/kep.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ approvers:
1818
- "@msau42"
1919
- "@janetkuo"
2020

21-
stage: beta
21+
stage: stable
2222

23-
latest-milestone: "v1.31"
23+
latest-milestone: "v1.32"
2424

2525
milestone:
2626
alpha: "v1.23"

0 commit comments

Comments
 (0)