You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -83,24 +84,24 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
83
84
84
85
## Summary
85
86
86
-
Remove cgroup v1 support from Kubernetes codebase, building upon the maintenance mode introduced in KEP-4569. This enhancement will remove cgroup v1 support.
87
+
Remove cgroup v1 support from Kubernetes codebase, building upon the maintenance mode introduced in KEP-4569.
87
88
88
89
This KEP will have a phased approach where beta will prevent kubelet from starting on a cgroup v1 node.
89
90
90
-
We will commit to removing cgroup v1 code but there is not yet a timeline for removal.
91
+
We will commit to removing cgroup v1 code but there is not yet a timeline for removal.
91
92
The removal will be done no earlier than 1.38 to maintain the k8s deprecation policy.
92
93
93
94
## Motivation
94
95
95
-
Following the transition of cgroup v1 support to maintenance mode in KEP-4569, the next logical step is to move cgroup v1 to an unsupported state. This aligns with the broader ecosystem's migration to cgroup v2, including major Linux distributions and the Linux kernel community's focus on cgroup v2 for new features and improvements.
96
+
Following the transition of cgroup v1 support to maintenance mode in KEP-4569, the next logical step is to move cgroup v1 to a deprecated state. This aligns with the broader ecosystem's migration to cgroup v2, including major Linux distributions and the Linux kernel community's focus on cgroup v2 for new features and improvements.
96
97
97
98
The motivation builds on the rationale established in KEP-4569:
98
99
99
100
- The Linux kernel community has made cgroup v2 the focus for new features
100
101
- systemd announced deprecation 1.5 years ago in [v256](https://github.com/systemd/systemd/releases/tag/v256) and [removal](https://github.com/systemd/systemd/releases/tag/v258). Other critical components are moving beyond cgroup v1
101
102
- cgroup v2 offers better functionality, more consistent interfaces, and improved scalability
102
103
103
-
By removing cgroup v1, Kubernetes provides a clear signal to the community about the removal path and encourages migration to the more secure and efficient cgroup v2 technology.
104
+
The goal of this enhancement would be to eventually remove cgroup v1 related code once the timeline is figured out.
104
105
105
106
### Linux Community Momentum
106
107
@@ -144,9 +145,9 @@ The latest release of debian "Trixie" is using [systemd 257](https://packages.de
144
145
145
146
1.**Disable cgroup v1 support by default**: Set the kubelet flag `FailCgroupV1` to `true` by default, effectively making cgroup v1 unsupported unless explicitly enabled.
146
147
147
-
2.**Clear messaging**: Update warning messages and events to reflect that cgroup v1 is now unsupported rather than in maintenance mode.
148
+
2.**Clear messaging**: Update warning messages and events to reflect that cgroup v1 is now deprecated rather than in maintenance mode.
148
149
149
-
3.**Documentation updates**: Update all relevant documentation to reflect the unsupported status of cgroup v1 and provide migration guidance.
150
+
3.**Documentation updates**: Update all relevant documentation to reflect the deprecated status of cgroup v1 and provide migration guidance.
150
151
151
152
4.**Preparation for removal**: This change prepares the codebase for eventual removal of cgroup v1 support in future releases.
152
153
@@ -179,6 +180,7 @@ The primary risks involve potential disruptions for users who have not yet migra
179
180
- Third-party monitoring and security agents need to support cgroup v2
180
181
181
182
**Mitigations**:
183
+
182
184
- Provide comprehensive migration documentation and guidance
183
185
- Change the KubeletConfig field FailCgroupV1 to false.
184
186
- Clear warning messages when cgroup v1 is detected
@@ -196,12 +198,14 @@ This enhancement primarily involves configuration changes and messaging updates,
196
198
The key technical change is to modify the default value of the kubelet config api `FailCgroupV1` from `false` to `true`. This change will be implemented in the kubelet configuration types.
197
199
198
200
Current behavior:
201
+
199
202
```go
200
203
// Default: false (cgroup v1 support enabled by default)
201
204
FailCgroupV1: false,
202
205
```
203
206
204
207
Proposed behavior:
208
+
205
209
```go
206
210
// Default: true (cgroup v1 support disabled by default)
207
211
FailCgroupV1: true,
@@ -212,11 +216,13 @@ FailCgroupV1: true,
212
216
Update the warning messages and events introduced in KEP-4569 to reflect the new unsupported status:
213
217
214
218
From (maintenance mode):
219
+
215
220
```golang
216
221
klog.Warning("cgroup v1 detected. cgroup v1 support has been transitioned into maintenance mode, please plan for the migration towards cgroup v2. More information at https://git.k8s.io/enhancements/keps/sig-node/4569-cgroup-v1-maintenance-mode")
217
222
```
218
223
219
224
To (deprecated):
225
+
220
226
```golang
221
227
klog.Warning("cgroup v1 detected. cgroup v1 support is deprecated and will be removed in a future release. Please migrate to cgroup v2. More information at https://git.k8s.io/enhancements/keps/sig-node/5573-cgroup-v1-unsupported")
222
228
```
@@ -226,6 +232,7 @@ Similar updates will be made to corresponding events.
226
232
### Documentation updates
227
233
228
234
Update all relevant documentation across the Kubernetes ecosystem:
235
+
229
236
- Kubernetes.io documentation
230
237
- Kubelet configuration documentation
231
238
- Migration guides
@@ -246,6 +253,17 @@ Once all supported releases of Kubernetes have `FailCGroupV1` set to true, we ca
246
253
In this section, we should call the places where we are going to remove cgroup v1.
247
254
</UNRESOLVED>
248
255
256
+
### Meaning of deprecation
257
+
258
+
Kubernetes will continue to test and verify no regressions appear in the following [job](https://testgrid.k8s.io/sig-node-containerd#cos-cgroupv1-containerd-node-e2e).
259
+
260
+
Until cgroup v1 removal happens in the code base, this job will continue to be maintained and supported.
261
+
262
+
If there are any regressions caused by code in this lane, the Kubernetes community will treat that as a regression
263
+
and this would be a candidate for cherry-picks.
264
+
265
+
CGroup v1 related features or UX improvements are not in scope since cgroup v1 is deprecated.
266
+
249
267
### Test Plan
250
268
251
269
<!--
@@ -275,13 +293,6 @@ All existing cgroup v2 test jobs must continue to pass. Tests should verify that
275
293
276
294
##### Unit tests
277
295
278
-
<!--
279
-
In principle every added code should have complete unit test coverage, so providing
280
-
the exact set of tests will not bring additional value.
281
-
However, if complete unit test coverage is not possible, explain the reason of it
282
-
together with explanation why this is acceptable.
283
-
-->
284
-
285
296
Unit tests should cover:
286
297
287
298
- Default configuration values
@@ -291,25 +302,10 @@ Unit tests should cover:
291
302
292
303
##### Integration tests
293
304
294
-
<!--
295
-
This question should be filled when targeting a release.
296
-
For Alpha, describe what tests will be added to ensure proper quality of the enhancement.
297
-
For Beta and GA, add links to added tests together with links to k8s-triage for those tests:
0 commit comments