Kubernetes 1.22:达到新的高峰

我们很高兴地宣布 Kubernetes 1.22 发布,这是 2021 年的第二次发布!

此版本包含 53 项增强功能:13 项增强功能已升级到稳定版,24 项增强功能正在移至测试版,16 项增强功能正在进入 Alpha 版。此外,还有三项功能已弃用。

今年四月,Kubernetes 的发布节奏已正式从每年四次更改为每年三次。这是与该更改相关的第一个较长周期发布。随着 Kubernetes 项目的成熟,每个周期的增强功能数量不断增长。这意味着从一个版本到另一个版本,贡献者社区和发布工程团队的工作量更大,并且可能会对最终用户社区造成压力,要求他们及时更新包含越来越多功能的版本。

将发布节奏从每年四次更改为每年三次,平衡了项目的许多方面,包括贡献和发布的管理方式,以及社区规划升级和保持最新状态的能力。

您可以在官方博文 Kubernetes 发布节奏变更:您需要了解的一切 中阅读更多内容。

主要主题

Server-side Apply 达到 GA

Server-side Apply 是一个在 Kubernetes API 服务器上运行的新字段所有权和对象合并算法。Server-side Apply 帮助用户和控制器通过声明式配置管理其资源。它允许他们通过发送其完全指定的意图,以声明方式创建和/或修改其对象。在测试版中发布了几个版本后,Server-side Apply 现已普遍可用。

外部凭证提供程序现在稳定

Kubernetes 客户端凭证插件的支持自 1.11 版本以来一直处于测试阶段,随着 Kubernetes 1.22 版本的发布,现已升级到稳定版。GA 功能集包括对提供交互式登录流的插件的改进支持,以及许多错误修复。有志的插件作者可以查看sample-exec-plugin以开始使用。

etcd 升级到 3.5.0

Kubernetes 的默认后端存储 etcd 发布了新版本:3.5.0。新版本改进了安全性、性能、监控和开发者体验。有许多错误修复和一些关键的新功能,例如迁移到结构化日志记录和内置日志轮换。该版本还提供了详细的未来路线图,以实施解决流量过载的方案。您可以在 3.5.0 发布公告 中阅读完整详细的更改列表。

内存资源的QoS

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

节点系统交换支持

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

Windows 增强功能和能力

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

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 功能允许以非 root 用户身份运行 `kubeadm` 控制平面组件。这是 `kubeadm` 中长期要求的安全措施。要尝试此功能,您必须启用 `kubeadm` 特定的 RootlessControlPlane 功能门。当您使用此 alpha 功能部署集群时,您的控制平面将以较低的权限运行。

对于 `kubeadm`,Kubernetes 1.22 还带来了新的 v1beta3 配置 API。此迭代添加了一些长期请求的功能并弃用了一些现有功能。v1beta3 版本现在是首选的 API 版本;v1beta2 API 也仍然可用,尚未弃用。

重大变更

移除若干已弃用的 Beta API

1.22 版本中已移除了一些已弃用的 Beta API,取而代之的是这些 API 的 GA 版本。所有现有对象都可以通过稳定的 API 进行交互。此次移除包括 `Ingress`、`IngressClass`、`Lease`、`APIService`、`ValidatingWebhookConfiguration`、`MutatingWebhookConfiguration`、`CustomResourceDefinition`、`TokenReview`、`SubjectAccessReview` 和 `CertificateSigningRequest` API 的 Beta 版本。

有关完整列表,请查看已弃用 API 迁移指南以及博文Kubernetes 1.22 中的 API 和功能移除:您需要了解的一切

临时容器的 API 更改和改进

用于创建临时容器的 API 在 1.22 版本中发生了变化。临时容器功能是 Alpha 阶段,默认禁用,新 API 不适用于尝试使用旧 API 的客户端。

对于稳定功能,kubectl 工具遵循 Kubernetes 版本偏差策略;但是,kubectl v1.21 及更早版本不支持临时容器的新 API。如果您计划使用 `kubectl debug` 创建临时容器,并且您的集群正在运行 Kubernetes v1.22,则无法使用 kubectl v1.21 或更早版本进行操作。如果您希望将 `kubectl debug` 与混合集群版本一起使用,请将 kubectl 更新到 1.22。

其他更新

升级到稳定版

值得注意的功能更新

发布说明

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

版本可用性

Kubernetes 1.22 可供下载,也可在 GitHub 项目上找到。

有很多很棒的资源可以帮助您开始使用 Kubernetes。您可以在 Kubernetes 主站点上查看一些交互式教程,或者使用 Docker 容器和 kind 在您的机器上运行本地集群。如果您想尝试从头开始构建集群,请查看 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 名个人的贡献。

生态系统更新

  • KubeCon + CloudNativeCon Europe 2021 于 5 月举行,这是第三次虚拟活动。所有演讲现已可点播,供任何想了解的人观看!
  • 春季学期 LFX 项目迎来了规模最大的毕业生班级,共有 28 名成功的 CNCF 实习生!
  • CNCF 于今年年初在 Twitch 上推出了直播,旨在为任何希望在世界任何地方学习、成长并与云原生社区中的其他人协作的人提供明确的互动媒体体验。

活动更新

即将举行的发布网络研讨会

加入 Kubernetes 1.22 发布团队成员,于 2021 年 10 月 5 日了解此版本的主要功能,以及弃用和移除的功能,以帮助规划升级。有关更多信息和注册,请访问 CNCF 在线项目网站上的活动页面

参与其中

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