Skip to content

Commit b0dc977

Browse files
committed
KEP-3857: Recursive Read-only (RRO) mounts: promote to GA
Signed-off-by: Akihiro Suda <[email protected]>
1 parent 477ce42 commit b0dc977

File tree

3 files changed

+46
-16
lines changed

3 files changed

+46
-16
lines changed

keps/prod-readiness/sig-node/3857.yaml

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

keps/sig-node/3857-rro-mounts/README.md

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,19 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
146146
- [X] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
147147
- [X] e2e Tests for all Beta API Operations (endpoints)
148148
- https://github.com/kubernetes/kubernetes/blob/v1.30.0/test/e2e_node/mount_rro_linux_test.go
149-
- [ ] (R) Ensure GA e2e tests meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
150-
- [ ] (R) Minimum Two Week Window for GA e2e tests to prove flake free
151-
- [ ] (R) Graduation criteria is in place
152-
- [ ] (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)
153-
- [ ] (R) Production readiness review completed
154-
- [ ] (R) Production readiness review approved
149+
- [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)
150+
<!--
151+
This is an optional feature which is "not currently eligible for conformance tests".
152+
https://github.com/kubernetes/community/blob/e22cc42fba8078b8a7242a894d7fee9507ad92dc/contributors/devel/sig-architecture/conformance-tests.md?plain=1#L67
153+
154+
e2e_node tests have been passing.
155+
-->
156+
- [X] (R) Minimum Two Week Window for GA e2e tests to prove flake free
157+
- [X] (R) Graduation criteria is in place
158+
- [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)
159+
<!-- See the note above about the Conformance Tests -->
160+
- [X] (R) Production readiness review completed
161+
- [X] (R) Production readiness review approved <!-- 2024-06-13 https://github.com/kubernetes/enhancements/pull/4668#pullrequestreview-2113546630 -->
155162
- [X] "Implementation History" section is up-to-date for milestone
156163
- [X] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
157164
- [X] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
@@ -582,7 +589,9 @@ extending the production code to implement this enhancement.
582589
- kubelet unit tests: takes a CRI status and populate the `RecursiveReadOnly` field in the `VolumeMountStatus` struct.
583590
Implemented in <https://github.com/kubernetes/kubernetes/blob/v1.30.0/pkg/kubelet/kubelet_pods_test.go#L6080-L6201>.
584591
The unit test set covers 16 conditions as of Kubernetes v1.30.0.
585-
There is no branch coverage data (`go test -cover`), as the feature is not implemented as a dedicated Go package.
592+
Coverage:
593+
- `k8s.io/kubernetes/pkg/kubelet`: [2025-02-11 - 70.7%](https://testgrid.k8s.io/sig-testing-canaries#ci-kubernetes-coverage-unit)
594+
586595
- [CRI test](https://github.com/kubernetes-sigs/cri-tools):
587596
similar to [e2e tests](#e2e-tests) below but without using Kubernetes Core API.
588597
Implemented in <https://github.com/kubernetes-sigs/cri-tools/blob/v1.30.0/pkg/validate/container_linux.go#L311-L413>.
@@ -631,9 +640,27 @@ We expect no non-infra related flakes in the last month as a GA graduation crite
631640
- run RecursiveReadOnly="Enabled", and verify that the mount is actually recursively read-only
632641
- run RecursiveReadOnly="Disabled", and verify that the mount is actually not recursively read-only
633642

634-
Tests are implemented in <https://github.com/kubernetes/kubernetes/blob/v1.30.0/test/e2e_node/mount_rro_linux_test.go>,
635-
and will be executed on the CI when the CI is upgraded to use containerd v2.0.
636-
So, there is no link to the testgrid yet.
643+
The `e2e_node` tests are implemented in <https://github.com/kubernetes/kubernetes/blob/v1.30.0/test/e2e_node/mount_rro_linux_test.go>.
644+
645+
Test grid:
646+
647+
- [`containerd-node-e2e-features-1.7`](https://testgrid.k8s.io/sig-node-containerd#containerd-node-e2e-features-1.7)
648+
```
649+
E2eNode Suite.[It] [sig-node] Mount recursive read-only [LinuxOnly] [Feature:RecursiveReadOnlyMounts] Mount recursive read-only when the runtime does not support recursive read-only mounts should accept non-recursive read-only mounts
650+
E2eNode Suite.[It] [sig-node] Mount recursive read-only [LinuxOnly] [Feature:RecursiveReadOnlyMounts] Mount recursive read-only when the runtime does not support recursive read-only mounts should reject recursive read-only mounts
651+
```
652+
653+
- [`ci-crio-cgroupv2-node-e2e-features`](https://testgrid.k8s.io/sig-node-cri-o#ci-crio-cgroupv2-node-e2e-features)
654+
```
655+
E2eNode Suite.[It] [sig-node] Mount recursive read-only [LinuxOnly] [Feature:RecursiveReadOnlyMounts] Mount recursive read-only when the runtime supports recursive read-only mounts should accept recursive read-only mounts
656+
E2eNode Suite.[It] [sig-node] Mount recursive read-only [LinuxOnly] [Feature:RecursiveReadOnlyMounts] Mount recursive read-only when the runtime supports recursive read-only mounts should reject invalid recursive read-only mounts
657+
```
658+
659+
k8s-triage:
660+
- https://storage.googleapis.com/k8s-triage/index.html?sig=node&job=e2e&test=recursive%20read-only
661+
```
662+
0 clusters of 0 failures out of 127983 builds from 2025/1/28 9:00:38 to 2025/2/11 12:45:18.
663+
```
637664

638665
### Graduation Criteria
639666

@@ -711,7 +738,8 @@ in back-to-back releases.
711738

712739
#### GA
713740
- Two beta releases of Kubernetes at least
714-
- containerd, CRI-O, and cri-dockerd supports the feature with their GA releases
741+
- containerd (v2.0) and CRI-O (v1.30) support the feature with their GA releases.
742+
The feature has been implemented in the `master` branch of cri-dockerd too.
715743

716744
### Upgrade / Downgrade Strategy
717745

@@ -1264,6 +1292,7 @@ Major milestones might include:
12641292
-->
12651293
- v1.30: alpha
12661294
- v1.31: beta
1295+
- v1.33: GA
12671296

12681297
## Drawbacks
12691298

keps/sig-node/3857-rro-mounts/kep.yaml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,18 @@ approvers:
2121
# - "/keps/sig-ccc/3456-replaced-kep"
2222
#
2323
# The target maturity stage in the current dev cycle for this KEP.
24-
stage: beta
24+
stage: stable
2525

2626
# The most recent milestone for which work toward delivery of this KEP has been
2727
# done. This can be the current (upcoming) milestone, if it is being actively
2828
# worked on.
29-
latest-milestone: "v1.31"
29+
latest-milestone: "v1.33"
3030

3131
# The milestone at which this feature was, or is targeted to be, at each stage.
3232
milestone:
3333
alpha: "v1.30"
3434
beta: "v1.31"
35-
# stable: "v1.XX"
35+
stable: "v1.33"
3636

3737
# The following PRR answers are required at alpha release
3838
# List the feature gate name and the components for which it must be enabled
@@ -43,5 +43,4 @@ feature-gates:
4343
disable-supported: true
4444

4545
# The following PRR answers are required at beta release
46-
#metrics:
47-
# - my_feature_metric
46+
metrics: []

0 commit comments

Comments
 (0)