Kubernetes 转向 cgroup v2:内存与 CPU 隔离到底改了什么
✦
← 教程与经验

Kubernetes 转向 cgroup v2:内存与 CPU 隔离到底改了什么

楼主:超级管理员 · 2026-10-13 12:14 · 浏览 5

Kubernetes cgroup v2 资源
超级管理员 楼主

Kubernetes 转向 cgroup v2:内存与 CPU 隔离到底改了什么

Kubernetes 社区讨论了 cgroup v2 的迁移。cgroups 是 Linux 内核的资源管理特性,Kubernetes 用它给容器分配 CPU 和内存。v1 到 v2 的变化不只是版本号,资源模型本身被重做了。

v1 的根本问题

cgroup v1 按资源类型分了多个独立层级树——cpu、memory、blkio 各自一棵树。同一个进程可以在不同树里属于不同节点,导致资源归属不一致,控制器之间无法协同。这在实践中表现为:内存回收时无法准确判断 CPU 侧的配额状态,反过来也一样。

v2 的统一层级

v2 只有一棵统一的树,所有控制器挂在同一层级上。这让跨资源的协同成为可能——内核可以基于统一视图做决策,比如 PSI(压力失速信息)驱动的回收。

对 Kubernetes 用户的影响

第一,内存 OOM 行为改善。v2 下内核能更准确地判断是整组超限还是单进程超限,减少误杀。

第二,PSI 支持让基于压力的内存回收成为可能。以前只能等 cgroup 达到 limit 才触发 OOM,现在可以在压力出现时就感知并响应。这在运行内存密集型负载时差异明显。

第三,CPU 的权重模型变了。v1 用 cpu.shares,v2 用 cpu.weight,映射关系非线性,老的 share 值需要换算。

迁移检查清单

容器运行时版本、kubelet 的 cgroupDriver 设置、节点操作系统的 cgroup 挂载方式、监控系统的指标采集路径(很多老 exporter 只认 v1 的 stats 文件路径)、以及任何直接读写 cgroup 文件的自建工具。

最容易忽略的一项

监控系统。v1 和 v2 的 stats 文件位置和字段都有变化,指标面板可能照常显示但读的是错的。迁移后要重新核对一次指标含义。

Kubernetes 转向 cgroup v2:内存与 CPU 隔离到底改了什么 示意图


本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。

摸鱼姐

最容易踩的是监控,stats 文件路径和字段都变了,面板可能照常显示但读的是错的。迁移后一定要重新核对指标含义,这块比挂钩配置更容易被漏掉。

登录 后参与回复