从 cgroup v1 迁移到 cgroup v2

适用场景

新内核/新发行版或 Kubernetes 1.25+ 节点启用统一 cgroup v2。v2 提供统一层级、更好的资源隔离和一致的统计接口。

前置条件

步骤

  1. 确认当前模式:
stat -fc %T /sys/fs/cgroup
mount | grep cgroup
cat /proc/cgroups

cgroup2fs 表示已是 v2;多个 tmpfs 挂载通常是 v1。

  1. 检查运行时和 K8s 支持:
containerd --version
crictl info | grep -i cgroup
kubelet --version
  1. 启用统一层级(以 GRUB 为例):
# /etc/default/grub
GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=1"
update-grub
reboot
  1. 重启后验证:
stat -fc %T /sys/fs/cgroup
cat /sys/fs/cgroup/cgroup.controllers
cat /sys/fs/cgroup/memory.max
cat /sys/fs/cgroup/cpu.max
  1. 更新监控和容器配置:

验证

回滚

常见坑

相关命令