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。
其他更新
升级到稳定版
值得注意的功能更新
- 引入了新的PodSecurity admission alpha 功能,旨在取代 PodSecurityPolicy
- 内存管理器进入 Beta 阶段
- 一项新的 alpha 功能,可启用API 服务器跟踪
- 一个新的 v1beta3 版本的kubeadm 配置格式
- 用于 PersistentVolumes 的通用数据填充器现已在 alpha 版本中提供
- Kubernetes 控制平面现在将始终使用CronJobs v2 控制器
- 作为一项 alpha 功能,所有 Kubernetes 节点组件(包括 kubelet、kube-proxy 和容器运行时)都可以以非 root 用户身份运行
发布说明
您可以在发布说明中查看 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 版本包含了 53 项增强功能。这使其成为迄今为止最大的版本。这一成就的取得离不开勤奋热情的发布团队成员以及 Kubernetes 生态系统中杰出的贡献者。发布徽标提醒我们不断追求新的里程碑并创造新的记录。它献给所有发布团队成员、徒步旅行者和观星者!
此徽标由 Boris Zotkin 设计。Boris 是 MathWorks 的 Mac/Linux 管理员。他喜欢生活中的简单事物,并热爱与家人共度时光。这位精通技术的个人总是乐于接受挑战并乐于帮助朋友!
用户亮点
- 5月,CNCF 欢迎全球 27 家新组织成为多元化云原生生态系统的成员。这些新成员将参与 CNCF 活动,包括将于 2021 年 10 月 12 日至 15 日在洛杉矶举行的KubeCon + CloudNativeCon NA。
- CNCF 在 KubeCon + CloudNativeCon EU – Virtual 2021 期间授予 Spotify 最佳最终用户奖。
项目速度
CNCF K8s DevStats 项目汇总了与 Kubernetes 及各个子项目的速度相关的许多有趣数据点。这包括从个人贡献到贡献公司数量的一切,是展示构建此生态系统所需付出努力的深度和广度的例证。
在持续 15 周(4 月 26 日至 8 月 4 日)的 v1.22 发布周期中,我们看到了来自 1063 家公司和 2054 名个人的贡献。
生态系统更新
- KubeCon + CloudNativeCon Europe 2021 于 5 月举行,这是第三次虚拟活动。所有演讲现已可点播,供任何想了解的人观看!
- 春季学期 LFX 项目迎来了规模最大的毕业生班级,共有 28 名成功的 CNCF 实习生!
- CNCF 于今年年初在 Twitch 上推出了直播,旨在为任何希望在世界任何地方学习、成长并与云原生社区中的其他人协作的人提供明确的互动媒体体验。
活动更新
- 北美 KubeCon + CloudNativeCon 2021 将于 2021 年 10 月 12 日至 15 日在洛杉矶举行!您可以在活动网站上找到有关会议和注册的更多信息。
- Kubernetes 社区日即将在意大利、英国和华盛顿特区举行。
即将举行的发布网络研讨会
加入 Kubernetes 1.22 发布团队成员,于 2021 年 10 月 5 日了解此版本的主要功能,以及弃用和移除的功能,以帮助规划升级。有关更多信息和注册,请访问 CNCF 在线项目网站上的活动页面。
参与其中
如果您有兴趣为 Kubernetes 社区做出贡献,特别兴趣小组 (SIG) 是一个很好的起点。其中许多可能与您的兴趣相符!如果您想与社区分享一些东西,您可以参加每周的社区会议,或使用以下任何渠道
- 在 Kubernetes 贡献者网站上了解更多关于为 Kubernetes 做出贡献的信息。
- 在 Twitter 上关注我们 @Kubernetesio 获取最新更新
- 在 Discuss 上加入社区讨论
- 在 Slack 上加入社区
- 分享你的 Kubernetes 故事
- 在博客上阅读更多关于 Kubernetes 的动态
- 了解更多关于 Kubernetes 发布团队的信息