Kubernetes v1.34:节点 Cgroup 驱动程序自动配置升级到 GA
历史上,配置正确的 CGroup 驱动程序一直是运行新 Kubernetes 集群的用户的痛点。
在 Linux 系统上,有两种不同的 cgroup 驱动程序:cgroupfs 和 systemd。
过去,kubelet
和 CRI 实现(如 CRI-O 或 containerd)都需要配置为使用相同的 CGroup 驱动程序,
否则 kubelet 会出现异常行为而没有任何明确的错误消息。这曾是许多集群管理员头痛的根源。
现在,我们(几乎)已经结束了这种头痛。
自动化 CGroup 驱动程序检测
在 v1.28.0 中,SIG Node 社区引入了特性门控 KubeletCgroupDriverFromCRI,
它指示 kubelet 询问 CRI 实现应该使用哪种 CGroup 驱动程序。
你可以在此处阅读更多内容。
经过多个版本的等待,每个 CRI 实现都发布了主要版本并打包到主要操作系统中,
此特性从 Kubernetes 1.34.0 开始升级为 GA。
除了设置特性门控外,集群管理员还需要确保他们的 CRI 实现足够新:
- containerd:在 v2.0.0 中添加了支持
- CRI-O:在 v1.28.0 中添加了支持
公告:Kubernetes 弃用 containerd v1.y 支持
虽然 CRI-O 发布与 Kubernetes 版本匹配的版本,因此不再支持没有此行为的 CRI-O 版本, 但 containerd 保持其自己的发布周期。此功能的 containerd 支持仅在 v2.0 及更高版本中可用, 但 Kubernetes 1.34 仍然支持 containerd 1.7 和其他 containerd 的 LTS 版本。
Kubernetes SIG Node 社区已正式同意 containerd v1.y 的最终支持时间表。
提供此支持的最后一个 Kubernetes 版本将是 v1.35 的最后一个发布版本,支持将在 v1.36.0 中删除。
为了帮助管理员管理此未来过渡,提供了一种新的检测机制。
你可以监控 kubelet_cri_losing_support 指标来确定集群中的任何节点是否正在使用即将过时的
containerd 版本。
此指标存在 1.36.0 版本标签将表明节点的 containerd 运行时对于即将到来的要求来说不够新。
因此,管理员需要在将 kubelet 升级到 v1.36.0 之前或同时将 containerd 升级到 v2.0 或更高版本。