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

3. 验证 cgroup v2 是否启用

  • 检查节点 cgroup 版本
    1
    stat -fc %T /sys/fs/cgroup/
    输出为 cgroup2fs 表示已启用 cgroup v2。
  • 查看 kubelet 配置
    确保 /var/lib/kubelet/config.yamlcgroupDriver 字段为 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 及以上版本,并确保操作系统、内核及容器运行时满足要求。对于旧版本集群,需逐步升级组件并验证兼容性。