Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
FREEDOM251

Freedom251 › Blog › cgroup v2

Kubernetes cgroup v2 Migration FAQ: Compatibility, Workloads, and Troubleshooting

By Freedom251 Team · · 8 min read

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

To migrate Kubernetes nodes to cgroup v2 safely, first verify a cgroup-v2-capable Linux distribution and kernel, then use a container runtime that supports it and configure both kubelet and the runtime with the same systemd cgroup driver. Kubernetes normally detects cgroup v2 automatically when those requirements are met. Most pods continue running unchanged, but software that reads cgroup files—monitoring agents, security tools, cAdvisor, and some language runtimes—must be checked.

Use stat -fc %T /sys/fs/cgroup/ on every node to identify the current mode, audit applications that calculate memory from cgroups, and prefer replacing or reinstalling nodes over changing the driver on an already joined node.

As an Amazon Associate I earn from qualifying purchases.

What cgroup v2 changes in Kubernetes

Linux control groups (cgroups) limit and account for CPU, memory, and other resources. Kubernetes places pods and containers in that hierarchy so requests and limits can be enforced. cgroup v2 replaces the older v1 hierarchy with a unified interface and different file names, controls, and delegation rules.

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

Kubernetes has treated cgroup v2 as stable since version 1.25. The Kubernetes documentation says that, when the operating system and runtime meet its requirements, “The kubelet automatically detects that the OS is running on cgroup v2 and performs accordingly with no additional configuration required.” That automatic behavior does not remove the need to align the kubelet and runtime drivers or to update software that reads cgroup files directly.

#1 Best Overall
Sale
TOZO A1 Wireless Earbuds Bluetooth 5.3 Light Weight in Ear Headphones | IPX5 Waterproof,2 Mics for AI Calls,Immersive Premium Sound Bass Headset with Charging Case,32 EQ via App Black
  • [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
  • [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
  • [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
  • [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
  • [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.

Compatibility requirements before you migrate

Check these conditions on every Linux worker and control-plane node that will run workloads. The versions below are Kubernetes’ documented minimums or examples; packaged defaults can differ by distribution, so verify the actual installed versions.

Component Requirement or documented example What to verify
Linux distribution A distribution that enables cgroup v2 by default Distribution release documentation and the mounted cgroup filesystem
Linux kernel 5.8 or later uname -r on each node
Container runtime containerd 1.4 or later, or CRI-O 1.20 or later Installed runtime version and its cgroup-driver support
Kubelet and runtime driver systemd for both, as recommended for cgroup v2 Effective configuration, not only configuration files left on disk
Kubernetes release cgroup v2 stable from Kubernetes 1.25 Release-specific documentation for your target upgrade

Meeting these baselines is necessary but is not a guarantee that every vendor package behaves identically. Confirm the runtime’s driver-discovery behavior and the distribution’s boot configuration before changing production nodes.

How to tell whether a node uses cgroup v1 or v2

Run this command locally on each Linux node:

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

Record the result together with the kernel, Kubernetes, kubelet, and runtime versions. A mixed cluster is possible during a rolling migration, but each node must be internally consistent and meet the requirements of the workloads scheduled there.

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

A practical migration procedure

Use a staged, node-by-node process. Test the same operating-system image, runtime package, and bootstrap configuration in a non-production cluster first.

  1. Inventory the cluster. List every Linux node, its kernel and distribution, Kubernetes version, runtime version, current cgroup mode, and effective cgroup driver. Include dedicated monitoring and security nodes.
  2. Check workload dependencies. Identify DaemonSets, sidecars, admission components, and application images that read files below /sys/fs/cgroup. Ask each vendor or project for cgroup v2 support rather than assuming a v1-compatible release will work unchanged.
  3. Prepare the node image. Use a distribution and kernel that satisfy the documented requirements. Install a supported container runtime and configure its cgroup driver to systemd.
  4. Configure kubelet consistently. Set the kubelet cgroup driver to systemd when automatic runtime discovery is unavailable. For kubeadm-managed clusters, the relevant configuration is a KubeletConfiguration containing cgroupDriver: systemd.
  5. Validate before joining. Boot the node, run the filesystem check, inspect the runtime and kubelet logs, and confirm that both components report the same driver. Do not join a node whose driver settings are uncertain.
  6. Drain and replace nodes in a controlled order. Cordon the node, drain it using your normal disruption policy, remove or reinstall it with the prepared image, and then allow it to rejoin. Respect PodDisruptionBudgets and capacity limits while draining.
  7. Run workload and observability tests. Check pod startup, resource-limit enforcement, metrics, logging, security agents, and application memory behavior before moving to the next node.

For an already joined node, changing only one driver setting is risky. Kubernetes warns that changing the cgroup driver can prevent existing pod sandboxes from being recreated; restarting kubelet may not repair that state. Replacing the node through established automation is usually safer than an in-place driver conversion.

Rank #2
Sale
Smart Watch for Men Women Compatible with iPhone Samsung Android Phone 1.69 inch Full Touch Screen IP68 Waterproof Bluetooh Fitness Tracker Heart Rate/Sleep Monitor (Black)
  • 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
  • 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
  • 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
  • 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
  • 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.

Aligning kubelet and the container runtime

Kubelet and the runtime create and manage the same pod hierarchy. If one uses cgroupfs and the other uses systemd, they can place processes in incompatible paths and fail during sandbox creation or recreation. Kubernetes recommends systemd for cgroup v2.

Some newer containerd and CRI-O releases can discover the driver automatically, while older releases require explicit settings. Check the exact runtime documentation and the effective service configuration. A file containing systemd is not proof that the running process used it; verify through runtime and kubelet startup logs or the node’s reported configuration.

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

With kubeadm, set the driver in the kubelet configuration used by your cluster:

kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd

Apply the setting through the same kubeadm or node-provisioning workflow that manages the rest of your fleet. Avoid hand-editing one node if automation will overwrite it on the next reboot.

Will cgroup v2 break existing pods?

Ordinary applications that rely on Kubernetes resource limits through the container runtime usually do not notice the migration. The risk is concentrated in software that parses cgroup files, assumes v1 paths, or infers available memory from the host instead of the container limit.

Rank #3
New Bee Guitar Cable 10ft Electric Instrument Bass AMP Cord | 6.35mm Jack, Durable Design, Stage and Home Studio Use, Low Noise Shielded Electric Cord for Bass, Keyboard, Amp, Mixer
  • [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
  • [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
  • [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
  • [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
  • [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by

Monitoring and security agents

Review third-party monitoring and security agents that run as DaemonSets or host processes. Standalone cAdvisor deployments need cgroup v2 support; Kubernetes identifies cAdvisor 0.43.0 or later as the compatibility example. Confirm the agent’s current documentation, then test CPU, memory, filesystem, and process metrics after migration.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

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

Java runtimes

Java’s container-awareness behavior depends on the vendor and release. Kubernetes lists these cgroup v2-compatible examples:

Runtime family Documented cgroup v2 examples
OpenJDK/HotSpot jdk8u372, 11.0.16, and 15 or later
IBM Semeru 8.0.382.0, 11.0.20.0, and 17.0.8.0 or later
IBM Java 8.0.8.6 or later

These are compatibility examples, not a substitute for the current support statement from your Java vendor. Verify that the JVM sees the pod’s memory and CPU limits rather than the node totals.

Go applications using automaxprocs

Applications using uber-go/automaxprocs should use version 1.5.1 or higher, which includes cgroup v2 support according to Kubernetes guidance. Confirm the dependency version in the built image, not merely in the source repository.

Node.js memory limits

Node.js obtains cgroup v2 memory limits through libuv starting with Node.js 20.3.0. The Node.js 18 line does not reliably detect those limits. An affected process can size its heap against host memory, then be terminated by the kernel when the pod limit is reached.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
BSIMB 15.6" Digital Family Calendar & Chore Chart, No Subscription Fees
  • Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
  • Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
  • All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
  • Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
  • Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.

For an affected release, set an explicit heap ceiling appropriate to the pod’s memory limit, for example:

node --max-old-space-size=1536 server.js

Leave headroom for native allocations, buffers, and the runtime itself; the value must not consume the entire Kubernetes memory limit.

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

Inspecting the cgroup hierarchy after migration

Under cgroup v2, systemd usually organizes Kubernetes workloads into slices and scopes. These commands help confirm placement and resource accounting:

systemctl list-units 'kube*' --type=slice
systemctl list-units 'kube*' --type=scope
systemd-cgls
systemd-cgtop
tree -L 2 -d /sys/fs/cgroup/kubepods.slice
bpftool cgroup list /sys/fs/cgroup/*

The first two commands show systemd units; systemd-cgls displays the hierarchy; systemd-cgtop provides live usage; and the tree command shows the Kubernetes slice layout when that path exists. bpftool can reveal eBPF programs attached to cgroups, which is useful when a security or networking component changes behavior after the migration.

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

Troubleshooting common migration failures

The node reports cgroup v1 unexpectedly

  • Check the distribution’s documented default and kernel boot parameters.
  • Confirm that the running kernel is at least 5.8.
  • Run the filesystem test again after rebooting; changing a package without rebooting does not change the mounted hierarchy.
  • Verify that all nodes, not just the control plane, have been converted.

Pods fail to create or sandboxes cannot be recreated

Compare the effective kubelet and runtime drivers first. A mismatch commonly appears after an in-place edit or partial upgrade. Restore matching systemd settings and, when the node is already joined, follow the platform’s node replacement procedure instead of repeatedly restarting kubelet.

Metrics disappear or show host-sized limits

Identify which component reads cgroup files. Upgrade cAdvisor, monitoring agents, and security agents to cgroup v2-aware releases, then restart the DaemonSet so the new binary is actually running. Check both the agent logs and the values exposed for a test pod with a deliberately small memory limit.

Applications are killed for out-of-memory despite a configured limit

First confirm the pod limit and the process’s view of that limit. Node.js 18 is a known risk because it may not detect cgroup v2 memory correctly; set --max-old-space-size or move to a release with the newer libuv behavior. For Java and other runtimes, use the vendor’s cgroup v2 guidance and leave headroom for non-heap memory.

Only some nodes behave differently

Compare the cgroup filesystem result, kernel, runtime, driver, and node image across the affected and unaffected nodes. Scheduling the same test pod on each node can expose an image-specific agent or bootstrap difference. Keep a node-level inventory until the migration is complete.

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

cgroup v1 deprecation and Kubernetes 1.35

cgroup v1 support is release-sensitive and deprecated. A Kubernetes project article published on 2026-10-06 states that Kubernetes 1.35 defaults to refusing kubelet startup on cgroup v1 unless the failCgroupV1 setting is disabled. That behavior makes the node’s cgroup mode an upgrade prerequisite, not an optional cleanup task.

Before upgrading, read the official documentation for the exact target release, verify every Linux node, and confirm whether your runtime can discover the driver automatically. Do not carry a temporary fallback setting forward without an explicit plan to remove it.

Managed Kubernetes considerations

Managed-service providers control parts of the node image, kernel, runtime, and kubelet configuration. Ask the provider when cgroup v2 will be enabled, whether existing node pools are upgraded in place or replaced, which agent versions are supported, and whether customer workloads need changes. Apply provider-specific instructions rather than forcing host-level settings that the service may overwrite.

For self-managed or kubeadm clusters, keep the migration in infrastructure automation, test node replacement, and document the exact runtime and kubelet versions used. A successful migration is one where every node reports the intended cgroup mode, drivers match, resource limits remain enforceable, and all cgroup-reading software has been validated.

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.

The Bottom Line

Verify cgroup mode and kernel support on every node, align kubelet and runtime on systemd, audit cgroup-reading software, and replace rather than casually reconfigure joined nodes. With those checks completed, cgroup v2 is usually transparent to ordinary Kubernetes workloads.

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.

cgroup v2cluster migrationcontainerdCRI-OkubeletKubernetesLinux

Leave a Reply

Your email address will not be published. Required fields are marked *

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

Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.