Kubernetes那个版本开始支持支持cgroup v2?
Kubernetes 对 cgroup v2 的支持经历了多个版本的演进,最终在 v1.25 版本进入稳定阶段(GA)。以下是关键版本和支持阶段的总结:
1. 版本支持时间线
- v1.18(Alpha 阶段):
首次引入对 cgroup v2 的实验性支持,但功能不完善,仅用于测试。 - v1.22(Beta 阶段):
支持进入 Beta 阶段,功能更稳定,但仍需通过特性门控KubeletCgroupDriverFromCRI
启用。 - v1.25(GA 阶段):
cgroup v2 支持正式稳定,默认启用,无需额外配置特性门控。
2. 启用 cgroup v2 的前提条件
操作系统要求:
Linux 发行版需启用 cgroup v2,例如:- Ubuntu 22.04+、Debian 11+、Fedora 31+、RHEL 9+、Alibaba Cloud Linux 3 等。
内核版本:
Linux 内核需 ≥ 5.8。容器运行时:
- containerd ≥ v1.4
- CRI-O ≥ v1.20
Kubernetes 组件配置:
- kubelet 和容器运行时需使用 systemd cgroup 驱动(非默认的
cgroupfs
)。 - 例如,在 kubelet 的
KubeletConfiguration
中设置cgroupDriver: systemd
,并在 containerd 的配置中启用SystemdCgroup = true
。
- kubelet 和容器运行时需使用 systemd cgroup 驱动(非默认的
3. 验证 cgroup v2 是否启用
- 检查节点 cgroup 版本:输出为
1
stat -fc %T /sys/fs/cgroup/
cgroup2fs
表示已启用 cgroup v2。 - 查看 kubelet 配置:
确保/var/lib/kubelet/config.yaml
中cgroupDriver
字段为systemd
。
4. 注意事项
- 兼容性:
- 应用需兼容 cgroup v2(例如 Java 应用需 JDK ≥ 11.0.16 或 15+)。
- 监控工具(如 cAdvisor)需升级到支持 cgroup v2 的版本(≥ v0.43.0)。
- Swap 支持:
Kubernetes 自 v1.28 起仅支持在 cgroup v2 环境中配置 Swap 分区。
总结
若需在生产环境启用 cgroup v2,建议使用 Kubernetes v1.25 及以上版本,并确保操作系统、内核及容器运行时满足要求。对于旧版本集群,需逐步升级组件并验证兼容性。