Kubernetes cgroup v2 迁移:为什么新建集群比原地升级更靠谱
Kubernetes 1.35 带来了一个不小的变化:kubelet 默认拒绝在 cgroup v1 节点上启动。这可不是简单的功能弃用,而是整个 Linux 生态在资源管理架构上的一次集体转向。 生态系统的连锁反应 这次变化特殊在哪?它不是某个项目的孤立决定,而是整个生态在同步行动: systemd v256 开始默认拒绝 cgroup v1,v258 会完全移除支持。 RHEL 9.4 废弃 cgroup v1,RHEL 10 只支持 v2。 Fedora 的时间表更激进:41/42 版本默认不启动 v1,43 会完全移除。 Ubuntu 22.04 LTS 及更高版本默认使用 cgroup v2。 Debian Trixie 使用 systemd 257,默认不支持 v1。 这种同步性背后有技术原因。cgroup v1 的混合层级架构在设计上就存在复杂性问题:每个资源控制器(CPU、内存、IO)都有独立的层级树,同一个进程在不同控制器中可能处于不同位置。这种设计在容器密度增加、资源管理需求变复杂后,维护成本越来越高。