Skip to content

[Feature blog]: cgroup v1 deprecation#52814

Closed
kannon92 wants to merge 1 commit intokubernetes:mainfrom
kannon92:cgroupv1-deprecation-blog-post
Closed

[Feature blog]: cgroup v1 deprecation#52814
kannon92 wants to merge 1 commit intokubernetes:mainfrom
kannon92:cgroupv1-deprecation-blog-post

Conversation

@kannon92
Copy link
Copy Markdown
Contributor

Description

Add a blog post annoucing deprecation of cgroup v1.

Issue

Closes: #

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. area/blog Issues or PRs related to the Kubernetes Blog subproject labels Oct 20, 2025
@k8s-ci-robot
Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign graz-dev for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added language/en Issues or PRs related to English language size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Oct 20, 2025
@kannon92 kannon92 force-pushed the cgroupv1-deprecation-blog-post branch from 626e2ca to ad317bf Compare October 20, 2025 15:05
@kannon92 kannon92 changed the title create cgroup v1 deprecation blog [Feature blog]: cgroup v1 deprecation Oct 20, 2025
@netlify
Copy link
Copy Markdown

netlify Bot commented Oct 20, 2025

Pull request preview available for checking

Built without sensitive environment variables

Name Link
🔨 Latest commit 626e2ca
🔍 Latest deploy log https://app.netlify.com/projects/kubernetes-io-main-staging/deploys/68f64f0e1cab620008e32f8d
😎 Deploy Preview https://deploy-preview-52814--kubernetes-io-main-staging.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link
Copy Markdown

netlify Bot commented Oct 20, 2025

Pull request preview available for checking

Built without sensitive environment variables

Name Link
🔨 Latest commit ad317bf
🔍 Latest deploy log https://app.netlify.com/projects/kubernetes-io-main-staging/deploys/68f64fa7d4e6b30008a76617
😎 Deploy Preview https://deploy-preview-52814--kubernetes-io-main-staging.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

: Version 20.3.0 or later

**Other runtimes**
: Check with your application runtime documentation for cgroup v2 compatibility
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel that this section implies that cgroup v2 support is only important at the application runtime which in my experience migrating 100's of k8s clusters from v1 to v2 is less of an issue. Everything I'm finding are various applications that assumed a cgroup v1 file system and were reading and/or interacting directly with hardcoded v1 paths (i.e. /sys/fs/cgroup/memory/memory.usage_in_bytes).

I think it's important that users understand that they need to not only ensure they have upgraded various runtimes but, that it's also worth a cursory look to see if the code has cgroup v1 assumptions or not. Unfortunately, these can be buried within many libraries. The next section while seemingly simple, is the best for migrating. I've been shocked at how not-seamless this migration actually is in practice.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, I'm not really sure if we even need a section on this tbh. At this point, I think we could remove the runtimes and just ask that blocker for migrations to cgroup v2 be brought up?

What would you suggest?

Copy link
Copy Markdown
Member

@neolit123 neolit123 Oct 20, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

my vote is to keep the generic runtime section and add a new below such as 'direct cgroup application dependencies', implying that some apps might assume cgroup v1 in hardcoded logic.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I think it's helpful to have a list of known upgrades folks should consider. If we can make it a bit more 'in your face' that it's not just those though, then I think that's a good place to land the blog post.

Copy link
Copy Markdown
Member

@lmktfy lmktfy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the article. Do you have a sense of when you'd like it published? That will affect how we help you with reviews etc.

I have provided some initial feedback. We'll add more once we've got a buddy assigned for you.

---
layout: blog
title: "Kubernetes Deprecating cgroup v1: Completing the Transition to cgroup v2"
date: xx
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
date: xx
draft: true

We'll initially merge this as a draft.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Kubernetes SIG Node](https://github.com/kubernetes/community/tree/master/sig-node)
---

Following the [transition of cgroup v1 support to maintenance mode](/blog/2024/08/14/kubernetes-1-31-moving-cgroup-v1-support-maintenance-mode/) in Kubernetes v1.31, the Kubernetes project is taking the next step in our migration to cgroup v2. Starting with Kubernetes v1.35, the kubelet will refuse to start on systems using cgroup v1 by default, and complete removal of cgroup v1 code is planned for a future release. This change aligns Kubernetes with the broader Linux ecosystem's evolution toward cgroup v2.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make sure that Release Comms are on board with this and are happy to run it as a standalone article.

Did you already check in with those folks?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eh I'm okay to not have this as a blog. It makes my workload lighter.

But i think maybe its go to announce this.

Maybe this is better as a 1.35 blog post where we call this out. WDYT?

author: >
[Kubernetes SIG Node](https://github.com/kubernetes/community/tree/master/sig-node)
---

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the article introduction, make it clear that this change only applies to clusters with Linux nodes (you don't have to have any).


To ensure a smooth transition, cluster administrators should:

1. **Verify cgroup version**: Check if your nodes are running cgroup v1 or v2:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. **Verify cgroup version**: Check if your nodes are running cgroup v1 or v2:
1. **Verify cgroup version**: Check if your cluster has any Linux nodes running with cgroup v1:

# Output: cgroup2fs = cgroup v2, tmpfs = cgroup v1
```

2. **Migrate host systems**: Transition nodes to cgroup v2 before upgrading Kubernetes:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Linux nodes)

- Configure systemd to use cgroup v2 if not already enabled
- Restart nodes to apply cgroup v2 configuration

3. **Update container runtimes**: Ensure your container runtime supports cgroup v2:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we sure that this is an exhaustive list? If not, rephrase to make that clear.

@@ -0,0 +1,144 @@
---
layout: blog
title: "Kubernetes Deprecating cgroup v1: Completing the Transition to cgroup v2"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the title mention the version v1.35?

---
layout: blog
title: "Kubernetes Deprecating cgroup v1: Completing the Transition to cgroup v2"
date: xx
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kannon92
Copy link
Copy Markdown
Contributor Author

#52814 (comment)

/hold

I am not sure this really needs to be a blog. I want to check with release team and see if we can include this as part of the 1.35 release blog. I think this should be maybe a paragraph rather than a full blog post.

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Oct 26, 2025
@graz-dev
Copy link
Copy Markdown
Contributor

Hi @kannon92, Graziano from the v1.35 Release Comms Team here!

Thank you for opening this PR for the blog post announcing the cgroup v1 deprecation to the community.

Currently, this post is tracked as a "Feature Blog" for the v1.35 release, which means it is scheduled for publication after the official release (tentatively, in early January).

I definitely agree that this is an important piece, and we should publish it as a stand-alone article.

Regarding its publication, we have two main options:

  1. We (the Comms Team) will announce the cgroup v1 deprecation in a section of our Mid-Cycle Blog. We could then publish this post as a follow-up "deep dive" immediately after the Mid-Cycle Blog, but before the main release. This way, the community is updated before the release goes live, and this article would no longer be considered a "Feature Blog" (since it would be published pre-release).

  2. I read in the KEP that the actual removal will happen "no earlier than 1.38 to maintain the k8s deprecation policy." If users are not required to take any mandatory actions immediately following v1.35, we could keep this post scheduled as a "Feature Blog" (publishing after the release). We would still pre-announce the deprecation in the Mid-Cycle Blog. In this case, we would just need to revise the blog's content slightly to reflect that the change already landed in v1.35 (since the article would be published post-release).

@kannon92 , as the author of this PR, please let me know which approach you prefer. The Comms Team is flexible and open to both paths.

@lmktfy cc

@kannon92
Copy link
Copy Markdown
Contributor Author

There is an action needed if someone is still using cgroup v1 node.

Due to that, I like option 1.

: Simplifies resource management with a single, consistent hierarchy structure.

**Improved Performance**
: Better scalability and reduced overhead for large-scale deployments.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How did you measure it?

: Better scalability and reduced overhead for large-scale deployments.

**Enhanced Features**
: Access to new kernel features and improvements that are only available in cgroup v2.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"new kernel features" and their impact on Kubernetes should be explained

: Access to new kernel features and improvements that are only available in cgroup v2.

**Better Resource Control**
: More precise and predictable resource allocation and limits.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How did you measure it?

@kannon92
Copy link
Copy Markdown
Contributor Author

kannon92 commented Nov 7, 2025

/close

I don't think a fully blog is necessary for this after all.

@k8s-ci-robot
Copy link
Copy Markdown
Contributor

@kannon92: Closed this PR.

Details

In response to this:

/close

I don't think a fully blog is necessary for this after all.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/blog Issues or PRs related to the Kubernetes Blog subproject cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. language/en Issues or PRs related to English language size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants