将节点迁移到cgroup v2
Kubernetes社区在v1.25已正式GA支持cgroup v2,其采用统一层级结构,资源管理能力更强,且兼容Kubernetes后续新特性,建议您将节点迁移至启用cgroup v2的新版操作系统。
cgroup版本说明
Linux 内核提供 cgroup v1 和 cgroup v2 两个版本,kubelet 与底层容器运行时均通过 cgroup 实现对 Pod 和容器的资源管控,包括为容器化工作负载配置 CPU、内存的请求与限制。cgroup v2 作为新一代 cgroup 接口,采用统一的层级结构设计,解决了 cgroup v1 多控制器层级分散、管理复杂的问题,具备更强的资源管控能力与更稳定的隔离效果,同时引入压力失速信息(Pressure Stall Information, PSI),也能更好地兼容 Kubernetes 后续新功能。由于两个版本在内核接口与文件系统结构上存在差异,直接访问 cgroup 文件系统的应用程序需要进行相应适配。
cgroup版本兼容性差异
cgroup v2 与 cgroup v1 在文件系统结构和参数命名上存在差异,直接读取 cgroup 系统路径的应用程序,需验证并适配其对 cgroup v2 的兼容性。
您需重点关注并升级以下应用与组件:
- 部分第三方监控、安全代理类应用,以及需要读取 cgroup 文件的自定义脚本,均依赖 cgroup 文件系统。相关应用需升级至明确支持 cgroup v2 的版本;而自定义脚本会因 cgroup v2 环境下的文件路径变更失效,需逐一审查并修改为适配 cgroup v2 的读取逻辑。
- DaemonSet 方式部署 cAdvisor 用于 Pod 和容器监控,需升级至 v0.43.0 及以上版本。
- Java 应用建议使用已完整支持 cgroup v2 的版本:
OpenJDK / HotSpot:jdk8u372、11.0.16、15 及更高版本
IBM Semeru Runtimes:8.0.382.0、11.0.20.0、17.0.8.0 及更高版本
IBM Java:8.0.8.6 及更高版本
- 若使用 uber-go/automaxprocs 包,需升级至 v1.5.1 及以上版本。
查询节点cgroup版本
- 登录节点。
- 执行以下命令,查看当前节点cgroup版本。
stat -fc %T /sys/fs/cgroup/
- 对于cgroup v2,输出为cgroup2fs。
- 对于cgroup v1,输出为tmpfs。
区别CCE节点cgroup版本
使用cgroup v2操作系统的节点,CCE会为其打上cce.io/cgroupVersion: v2系统标签,同时,在节点列表会标识节点操作系统的cgroup版本。

迁移步骤
CCE集群节点的cgroup版本由操作系统决定。如需要迁移,请将节点重置为支持cgroup v2的新版操作系统(CCE中默认使用cgroup v2的操作系统为Ubuntu 22.04.cgroup2)。具体操作步骤及注意事项,请参考重置节点。