Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Kubernetes has not fully removed cgroup v1 support, but it is no longer a safe default for new or upgraded nodes. Beginning with Kubernetes v1.35, kubelet refuses to start on a cgroup v1 node by default. A temporary failCgroupV1: false override remains in the documented releases, but Kubernetes documentation says its removal is planned for v1.38. KEP-5573 makes the eventual code-removal point conditional, so v1.38 is a published plan—not proof that removal has already happened.

The practical next step is to inventory each Linux node, verify its OS, kernel, container runtime and cgroup drivers, then test workloads and agents before moving node pools to cgroup v2. Kubernetes has supported cgroup v2 as stable since v1.25; cgroup v1 entered maintenance in v1.31 and was deprecated in v1.35. Kubernetes’ cgroup documentation and its October 6, 2026 migration article describe the transition.

What “dead” means for Kubernetes cgroup v1

“Dead” describes the operational direction, not completed removal. Since Kubernetes v1.35, kubelet’s failCgroupV1 setting defaults to true, so kubelet will not start on a cgroup v1 node unless an operator explicitly disables that check. The override is a short-term bridge for exceptional cases, not a durable configuration for a cluster.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The release schedule needs careful wording. The v1.36 documentation says fallback is scheduled for removal in v1.38. A later v1.37 release announcement says the override remains available in v1.37 and describes future removal, while KEP-5573 says full code removal depends on all supported Kubernetes releases having the default enabled; its removal section does not settle an exact code-removal release. Treat v1.38 as the documented plan and check the release notes for the Kubernetes version you will actually deploy. The sources’ current-version labels do not align cleanly, so they do not establish a single current release label.

The project’s direction for Linux nodes is cgroup v2. Kubernetes support for v2 has been stable since v1.25; v1 moved into maintenance mode in v1.31 and was deprecated in v1.35. The Kubernetes v1.35 announcement covers the default kubelet behavior, and the v1.37 announcement describes the later release state.

Check which cgroup hierarchy each node uses

Run the official check on every Linux control-plane and worker node you manage; a cluster’s Kubernetes version does not tell you which hierarchy its operating system booted with:

stat -fc %T /sys/fs/cgroup/
  • cgroup2fs means the node is using cgroup v2.
  • tmpfs means it is using cgroup v1.

Record the result alongside the node’s distribution and release, kernel version, container runtime and version, and effective kubelet and runtime cgroup drivers. Check provider-managed nodes through the provider’s supported access and inventory methods if direct shell access is unavailable.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check OS, kernel, runtime and cgroup-driver compatibility

Operating system and kernel

Kubernetes documentation lists Linux kernel 5.8 or later for cgroup v2; kernel 5.9 or later is recommended when using Memory QoS. The docs give Ubuntu 21.10 (with 22.04 or later recommended), Debian 11, Fedora 31, RHEL-like 9 distributions and Container Optimized OS M97 as examples with cgroup v2 support. These examples are not a current support guarantee or an exhaustive list: confirm the lifecycle, boot defaults and cgroup configuration for the exact distribution image you run.

Container runtime and driver alignment

Kubernetes documentation lists containerd v1.4 or later and CRI-O v1.20 or later as supporting cgroup v2. For automatic cgroup-driver discovery through the runtime’s RuntimeConfig, the October 2026 migration article gives containerd v2.0 or later and CRI-O v1.28 or later as examples. These are different thresholds: basic v2 support does not by itself mean the runtime supports automatic driver discovery.

Ensure kubelet and the runtime use compatible, aligned cgroup drivers. Kubernetes recommends the systemd driver for kubeadm installations, since kubeadm manages kubelet as a systemd service. Inspect the effective configuration rather than assuming the driver from the runtime’s version. For details, consult the kubeadm cgroup-driver guidance and the container runtime documentation.

Containerd lifecycle is a separate upgrade item

Kubernetes v1.35 is the final Kubernetes release supporting containerd 1.X, according to its release announcement. That is an adjacent compatibility deadline, not the same thing as the cgroup v1 deprecation. Check both requirements when planning: a runtime may support cgroup v2 yet still need upgrading for Kubernetes-version compatibility.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Find software that depends on cgroup files

Most users should not notice a difference unless applications or node-level agents read the cgroup filesystem directly, on the host or inside a container. Cgroup v2 presents a different API and hierarchy, so test monitoring, security, resource-management and application components that inspect /sys/fs/cgroup.

A concrete risk is memory sizing. Software that reads host memory instead of the container or pod limit can size a heap too generously and be terminated for exceeding its memory limit. Kubernetes documentation gives these compatibility examples:

  • Standalone cAdvisor: v0.43.0 or later.
  • automaxprocs: v1.5.1 or later.
  • Node.js: v20.3.0 or later for cgroup v2 memory-limit detection. Node.js v18 does not reliably detect those limits; if an affected deployment must remain on that version, the documentation suggests setting the heap explicitly with --max-old-space-size.
  • Java: verify that the specific runtime version supports cgroup v2 and correctly detects container limits.

These are examples, not a complete compatibility inventory. Check each component’s own version documentation and test its observed resource limits on a v2 node before broad rollout. See Kubernetes’ cgroup v2 guidance.

What cgroup v2 changes—and what it does not

Cgroup v2 uses a unified hierarchy rather than the separate hierarchies used by cgroup v1, and its interfaces differ. A migration may therefore affect software that reads cgroup paths or derives memory and CPU limits from them, even where Kubernetes workload manifests stay unchanged.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

It also enables Kubernetes features that rely on v2 primitives. Memory QoS is one example; the v1.37 release announcement also identifies in-place scaling for memory-backed volumes among advanced resource-management capabilities available only on cgroup v2. Switching the hierarchy alone does not enable every such capability: Kubernetes version, feature gates and workload configuration still apply. Consult the cgroup documentation and the relevant feature documentation for your cluster version.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

A staged migration path

  1. Inventory the fleet. Run stat -fc %T /sys/fs/cgroup/ on each Linux node you operate. Record hierarchy, distribution and release, kernel, runtime/version, and effective kubelet/runtime cgroup drivers.
  2. Validate the node image. Confirm the distribution supports and enables cgroup v2, and that its kernel is at least 5.8. If you plan to use Memory QoS, use the documented recommendation of kernel 5.9 or later.
  3. Validate runtime and drivers. Check cgroup v2 support for your runtime version, then confirm driver alignment. Check separately whether you need RuntimeConfig automatic discovery or a containerd upgrade for Kubernetes v1.35-and-later compatibility.
  4. Test dependent software. Identify applications and agents that read cgroup files. Update affected components and test memory-limit detection, monitoring and security behavior on representative v2 nodes.
  5. Roll out through your supported procedure. Migrate a test node or pool, validate workloads and node health, then expand in stages using the OS, cloud-provider or managed-Kubernetes instructions for your environment. Kubernetes’ general guidance does not prescribe one universal node-pool sequence.
  6. Retire any exception. If you temporarily set failCgroupV1: false to keep a v1 node running, document the affected nodes and remove the override as part of the migration. Verify the release notes and configuration behavior for your target Kubernetes version rather than relying on a planned removal date alone.

When to use the temporary kubelet override

The override can be a narrowly scoped contingency when an existing cgroup v1 node cannot yet be migrated and the cluster’s release still supports the setting. It does not convert that node to v2, make its OS or applications compatible, or remove the future upgrade risk. Avoid applying it as a fleet-wide migration plan; document an owner and a removal milestone tied to your release and provider schedule.

For managed Kubernetes, follow the service provider’s node-image and upgrade procedures. The Kubernetes sources establish general OS, kernel and runtime requirements, not a universal sequence for every provider or distribution.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.