← All stories
● Covered by 1 source · 1 reportMedium impact1 neutral

Kubernetes v1.31 deprecates cgroup v1; v1.35 defaults to cgroup v2 only

🔄 Updated 1h ago
New to BrevFeed? We gather this story from every outlet covering it into one summary — ranked by real-world impact, not just the latest headline — so you never miss what matters. What is BrevFeed? →

Key points

  • Kubernetes v1.31 moved cgroup v1 support to maintenance mode.
  • cgroup v2 has been stable since Kubernetes v1.25.
  • Kubernetes v1.35 defaults to failing on cgroup v1 nodes.
  • Migration to cgroup v2 is required for upgrades to v1.35+.

Kubernetes Shifts to cgroup v2

Kubernetes has deprecated cgroup v1, a Linux kernel feature for managing system resources. Support for cgroup v1 moved into maintenance mode with Kubernetes v1.31, while cgroup v2 has been stable since Kubernetes v1.25. This change impacts how Kubernetes allocates CPU and memory to containers.

Benefits of cgroup v2

cgroup v2 offers a single unified hierarchy, a more consistent interface, and a stronger foundation for resource isolation. It also provides modern resource-management features compared to cgroup v1.

Migration Requirements for Kubernetes v1.35+

Starting with Kubernetes v1.35, the `failCgroupV1` setting defaults to `true`, preventing the kubelet from starting on cgroup v1 nodes. Administrators can temporarily set `failCgroupV1: false` in the kubelet configuration, but this is a temporary override before full removal. Users on releases older than v1.35 must migrate all Linux nodes to cgroup v2 before upgrading.

For kubeadm-managed clusters, Kubernetes v1.35 introduces a stricter `SystemVerification` preflight check. This check will return an error during `kubeadm init`, `kubeadm join`, and `kubeadm upgrade` if cgroup v1 is detected with kubelet v1.35 or later.

Known Issues and Workarounds

A known issue involves the kubelet treating `active_file` memory as non-reclaimable, which can lead to memory pressure and Pod eviction for I/O-intensive workloads. This behavior is not changed by migrating to cgroup v2. A documented workaround is to set equal memory requests and limits for containers performing intensive I/O.

✨ This summary was generated by AI from the outlets' reporting listed below. It is not independently verified and may contain errors — check the original sources. How BrevFeed works →

The daily brief

One email each morning: the day's tech stories, clustered across outlets and summarized. No account needed.

One email a day. Unsubscribe in one click, any time.

Today's brief

Spend a few minutes, get the whole day. Every topic's top stories in one hands-free rundown — listen, watch, or read the transcript.

~4 min · 3 stories · Oct 06

▶ Play today's brief Listen on Spotify

New every morning, and the back catalogue is archived by date.

Reporting from

Kubernetes has deprecated cgroup v1, with support moving to maintenance mode in v1.31 and v1.35 defaulting to cgroup v2. This shift provides a unified hierarchy and improved resource management for containers. Users must migrate Linux nodes to cgroup v2 before upgrading to v1.35 or later to avoid kubelet startup failures.