Kubernetes 1.22: 达到新高峰

我们很高兴宣布 Kubernetes 1.22 发布,这是 2021 年的第二个版本!

本次发布包含 53 项增强功能:13 项增强功能已升级到稳定版,24 项增强功能正在进入 Beta 版,16 项增强功能正在进入 Alpha 版。此外,有三项功能已被弃用。

今年四月,Kubernetes 发布节奏正式从每年四次更改为每年三次。这是与该更改相关的首个较长周期的发布。随着 Kubernetes 项目的成熟,每个周期的增强功能数量也在增长。这意味着贡献者社区和发布工程团队在不同版本之间有更多工作,并且可能会给最终用户社区带来压力,使其难以跟上包含越来越多功能的版本。

将发布节奏从每年四次更改为每年三次,平衡了项目的许多方面,无论是在如何管理贡献和发布方面,还是在社区规划升级和保持最新的能力方面。

你可以在官方博客文章《Kubernetes 发布节奏更改:你需要了解的内容》中阅读更多信息。

主要主题

Server-side Apply 升级至 GA

Server-side Apply 是一种新的字段所有权和对象合并算法,运行在 Kubernetes API Server 上。Server-side Apply 帮助用户和控制器通过声明式配置管理其资源。它允许他们通过简单地发送完全指定的意图来声明式地创建和/或修改其对象。在经历了几个版本的 Beta 阶段后,Server-side Apply 现已正式可用 (GA)。

外部凭据提供程序现已稳定

对 Kubernetes 客户端凭据插件的支持自 1.11 版本以来一直处于 Beta 阶段,随着 Kubernetes 1.22 的发布,现已升级到稳定版。GA 特性集包括对提供交互式登录流程的插件的改进支持,以及一些 Bug 修复。有志于开发插件的作者可以查看 sample-exec-plugin 作为入门参考。

etcd 升级到 3.5.0

Kubernetes 的默认后端存储 etcd 有一个新版本发布:3.5.0。新版本在安全性、性能、监控和开发者体验方面都有所改进。有大量的 Bug 修复和一些关键的新特性,例如迁移到结构化日志和内置日志轮换。该版本附带了一个详细的未来路线图,用于实现流量过载问题的解决方案。你可以在3.5.0 发布公告中阅读完整详细的变更列表。

内存资源的 QoS (服务质量)

最初,Kubernetes 使用 v1 cgroups API。在该设计下,Pod 的 QoS 类仅应用于 CPU 资源(例如 cpu_shares)。作为一项 Alpha 特性,Kubernetes v1.22 现在可以使用 cgroups v2 API 来控制内存分配和隔离。此特性旨在在内存资源争用时提高工作负载和节点的可用性,并提高容器生命周期的可预测性。

节点系统 Swap 支持

关于设置和使用 Kubernetes,每个系统管理员或 Kubernetes 用户都面临着同样的问题:禁用 swap 空间。随着 Kubernetes 1.22 的发布,现在提供了运行带有 swap 内存节点的 Alpha 支持。这项更改允许管理员选择在 Linux 节点上配置 swap,将部分块存储作为额外的虚拟内存使用。

Windows 增强功能和能力

为了持续支持不断壮大的开发者社区,SIG Windows 发布了他们的开发环境。这些新工具支持多种 CNI 提供程序,并可在多种平台运行。还有一种新的方法可以从零开始运行最新的 Windows 特性,即编译 Windows kubelet 和 kube-proxy,然后将它们与其他 Kubernetes 组件的每日构建版本一起使用。

CSI 对 Windows 节点的支持在 1.22 版本中移至 GA 阶段。在 Kubernetes v1.22 中,Windows 特权容器是一项 Alpha 特性。为了允许在 Windows 节点上使用 CSI 存储,CSIProxy 使 CSI 节点插件能够作为非特权 Pod 部署,使用代理在节点上执行特权存储操作。

seccomp 的默认配置文件

kubelet 中添加了一项关于 seccomp 默认配置文件的 Alpha 特性,以及一个新的命令行标志和配置。启用后,此新特性提供集群范围的 seccomp 默认设置,默认使用 RuntimeDefault seccomp 配置文件而非 Unconfined。这增强了 Kubernetes 部署的默认安全性。现在,安全管理员可以安心入眠,因为工作负载默认更安全。要了解有关此特性的更多信息,请参阅官方的seccomp 教程

使用 kubeadm 构建更安全的控制平面

一项新的 Alpha 特性允许将 kubeadm 控制平面组件作为非 root 用户运行。这是 kubeadm 中长期以来一直请求的安全措施。要尝试此功能,你必须启用 kubeadm 特有的 RootlessControlPlane 特性门控。当你使用此 Alpha 特性部署集群时,你的控制平面将以较低的权限运行。

对于 kubeadm,Kubernetes 1.22 还带来了一个新的v1beta3 配置 API。这个版本添加了一些长期以来一直请求的特性,并弃用了一些现有特性。v1beta3 版本现在是首选的 API 版本;v1beta2 API 仍然可用,尚未弃用。

主要变化

移除几个已弃用的 Beta API

1.22 版本中已移除一些已弃用的 Beta API,转而使用这些相同 API 的 GA 版本。所有现有对象都可以通过稳定的 API 进行交互。此次移除包括 IngressIngressClassLeaseAPIServiceValidatingWebhookConfigurationMutatingWebhookConfigurationCustomResourceDefinitionTokenReviewSubjectAccessReviewCertificateSigningRequest API 的 Beta 版本。

有关完整列表,请查看弃用 API 迁移指南以及博客文章《Kubernetes 1.22 中的 API 和特性移除:你需要了解的内容》。

Ephemeral Containers 的 API 变更和改进

用于创建Ephemeral Containers 的 API 在 1.22 版本中发生了变化。Ephemeral Containers 特性是 Alpha 版本,默认禁用,新 API 不兼容尝试使用旧 API 的客户端。

对于稳定特性,kubectl 工具遵循 Kubernetes 的版本偏差策略;但是,kubectl v1.21 及更早版本不支持 Ephemeral Containers 的新 API。如果你打算使用 kubectl debug 创建 Ephemeral Containers,并且你的集群正在运行 Kubernetes v1.22,则无法使用 kubectl v1.21 或更早版本进行操作。如果你希望在混合集群版本中使用 kubectl debug,请将 kubectl 更新到 1.22。

其他更新

升级至稳定版

值得关注的特性更新

发行说明

你可以在发行说明中查看 1.22 版本的完整详细信息。

版本的可用性

Kubernetes 1.22 可供下载,也可在 GitHub 项目上获取。

有一些很棒的资源可用于 Kubernetes 入门。你可以在 Kubernetes 主站上查看一些交互式教程,或者使用 kind 在你的机器上使用 Docker 容器运行本地集群。如果你想尝试从零开始构建集群,可以查看 Kelsey Hightower 撰写的Kubernetes the Hard Way 教程。

发布团队

本次发布得益于一群非常敬业的贡献者,他们作为一个团队共同努力,提供了技术内容、文档、代码以及构成每个 Kubernetes 版本的其他众多组件。

非常感谢发布负责人 Savitha Raghunathan 带领我们度过了成功的发布周期,也感谢发布团队中的其他所有人相互支持,并努力工作,为社区交付了 1.22 版本。

我们也想借此机会缅怀 Peeyush Gupta,他是我们团队中今年早些时候离世的一位成员。Peeyush 积极参与 SIG ContribEx 和 Kubernetes 发布团队,最近担任 1.22 版本的传播负责人。他的贡献和努力将继续在他帮助建立的社区中得到体现。已创建一个 CNCF 纪念页面,社区可以在此分享思念和回忆。

发布徽标

Kubernetes 1.22 Release Logo

在持续的疫情、自然灾害以及始终存在的倦怠阴影之下,Kubernetes 1.22 版本包含了 53 项增强功能。这使其成为迄今为止规模最大的版本。这项成就的取得,离不开勤奋热情的发布团队成员以及 Kubernetes 生态系统中杰出的贡献者们。发布徽标提醒我们不断迈向新的里程碑,创造新的记录。它献给所有的发布团队成员、徒步者和观星者!

徽标由 Boris Zotkin 设计。Boris 是 MathWorks 的 Mac/Linux 管理员。他享受简单的生活,喜欢与家人共度时光。这位精通技术的个人总是乐于接受挑战,并乐于帮助朋友!

用户亮点

项目速度

CNCF K8s DevStats 项目汇总了与 Kubernetes 和各种子项目发展速度相关的许多有趣数据点。这包括从个人贡献到贡献公司的数量,展示了为发展这个生态系统所付出的努力的深度和广度。

在为期 15 周(4 月 26 日至 8 月 4 日)的 v1.22 发布周期中,我们看到了来自1063 家公司2054 名个人的贡献。

生态系统更新

活动更新

即将到来的发布网络研讨会

欢迎参加 Kubernetes 1.22 发布团队成员将于 2021 年 10 月 5 日举行的网络研讨会,了解此版本的主要特性以及弃用和移除的内容,以便帮助你规划升级。有关更多信息和注册,请访问 CNCF 线上项目网站上的活动页面

参与其中

如果你对为 Kubernetes 社区做贡献感兴趣,特别兴趣小组 (SIG) 是一个很好的起点。其中许多可能与你的兴趣相符!如果你有想与社区分享的内容,可以参加每周的社区会议,或使用以下任一渠道