Kubernetes Project Reminds Operators That the Kubelet Refuses to Start on cgroup v1 Nodes by Default Since v1.35
A Kubernetes Blog post says failCgroupV1 defaults to true since v1.35, so the kubelet won't start on cgroup v1 nodes unless an admin sets a temporary override.
Editor's Note ·
- Correction:
- The article states that "The cited sources do not give a Kubernetes release in which cgroup v1 support will be removed; the post says only that removal will follow the deprecation policy." The Kubernetes Blog post does give a target: "in Kubernetes 1.36 (the current release) the cgroup v1 option remains supported as a fallback. That fallback is scheduled for removal in Kubernetes v1.38." The post also says removal "will follow the Kubernetes deprecation policy" and is tracked in KEP-5573.
Overview
The Kubernetes project has published a migration explainer telling operators that the kubelet no longer starts on cgroup v1 nodes by default. In a Kubernetes Blog post dated October 6, 2026, Paco Xu of DaoCloud wrote that, starting with Kubernetes v1.35, failCgroupV1 defaults to true, so the kubelet does not start on a cgroup v1 node by default. The Kubernetes documentation marks cgroup v1 as deprecated since Kubernetes v1.35 and says removal will follow the Kubernetes deprecation policy.
What We Know
- Timeline. According to the Kubernetes Blog, support for v1 cgroup management moved into maintenance mode with Kubernetes v1.31, and support for v2 cgroup management has been stable since Kubernetes v1.25.
- The override. The same post says administrators can temporarily set
failCgroupV1: falsein the kubelet configuration file, but removal will follow the Kubernetes deprecation policy. The Kubernetes documentation likewise says a cluster admin should setfailCgroupV1to false in the kubelet configuration file to disable the setting. - Removal tracking. The Kubernetes Blog states that further removal work is tracked in KEP-5573: Remove cgroup v1 support.
- Upgrade guidance. Per the blog post, clusters on a release older than v1.35 should migrate every Linux node to cgroup v2 before upgrading, or plan to set the temporary
failCgroupV1: falseoverride (Kubernetes Blog). - kubeadm checks. The post says the
SystemVerificationpreflight check, provided byk8s.io/system-validators, returns an error duringkubeadm init,kubeadm join, andkubeadm upgradewhen it detects cgroup v1 with kubelet v1.35 or later, while with an older kubelet the check remains a warning (Kubernetes Blog). - Checking a node. The Kubernetes documentation says to run
stat -fc %T /sys/fs/cgroup/on the node: for cgroup v2 the output iscgroup2fs, and for cgroup v1 it istmpfs.
Why the Project Favors cgroup v2
The Kubernetes Blog says cgroup v2 provides a single unified hierarchy, a more consistent interface, and a stronger foundation for resource isolation and modern resource-management features. The post ties several features to it:
- Memory QoS is available only on Linux nodes that use cgroup v2. The post says it remains alpha in v1.36 and that kernel 5.9 or later is recommended.
- On cgroup v2 nodes, the kubelet defaults
singleProcessOOMKillto false and setsmemory.oom.groupfor each container cgroup, so an out-of-memory event kills all processes in that container together. - Pressure Stall Information (PSI) requires cgroup v2, Linux 4.20 or later, and
CONFIG_PSI=y. - The post notes that Pod user namespace support graduated to stable in Kubernetes v1.36.
The post also cautions that moving to cgroup v2 does not fix every known problem. It says the kubelet treats active_file memory as not reclaimable, and that migrating to cgroup v2 does not by itself change that calculation.
Migration Details Operators May Overlook
According to the Kubernetes Blog, software that reads the cgroup filesystem directly needs updating when migrating, and the migration guidance recommends cAdvisor v0.43.0 or later. The post also says newer OCI runtimes use a different conversion from cgroup v1 cpu.shares to cgroup v2 cpu.weight. That change is implemented in the OCI runtime rather than Kubernetes and is available in crun v1.23 and runc v1.3.2; after upgrading a runtime, monitoring or policy tools that predict exact cpu.weight values may need updates.
What We Don’t Know
- The cited sources do not give a Kubernetes release in which cgroup v1 support will be removed; the post says only that removal will follow the deprecation policy and that work is tracked in KEP-5573.
- The sources do not say how many clusters still run cgroup v1 nodes.
Context
The default is not new. The Machine Herald previously reported in its Kubernetes 1.37 coverage that the kubelet continues to refuse to initialize on cgroup v1 nodes without an explicit override. The October 6 post is a consolidated migration guide rather than a new policy change, and both cited pages come from the Kubernetes project itself.