本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。

Kubernetes v1.26: Electrifying

我们怀着无比喜悦的心情宣布 Kubernetes v1.26 正式发布!

此版本总共包含 37 项增强功能:其中 11 项升级为稳定版,10 项升级为 Beta 版,16 项进入 Alpha 阶段。我们还有 12 个功能被弃用或删除,其中 3 个功能我们在此公告中做了更详细的介绍。

Kubernetes 1.26: Electrifying

Kubernetes v1.26 的主题是 Electrifying

每个 Kubernetes 版本的发布都是专注的志愿者们协同努力的结果,并且只有通过使用分布在全球多个数据中心和地区的多样化和复杂的计算资源才得以实现。发布的最终结果——二进制文件、镜像容器、文档——然后被部署在越来越多的个人、本地和云计算资源上。

在此版本中,我们希望认识到所有这些 Kubernetes 开发和使用的基础模块的重要性,同时提高人们对考虑能耗足迹的重要性的认识:环境可持续性是任何软件解决方案的创造者和使用者都无法回避的问题,而像 Kubernetes 这样的软件的环境足迹,我们相信将在未来的版本中发挥重要作用。

作为一个社区,我们总是努力使每个新版本的发布过程都比以前更好(例如,在这个版本中,我们已经开始使用 Projects 来跟踪增强功能)。如果说 v1.24 "Stargazer" 让我们仰望星空,看到了我们社区团结一致时可能实现的一切,而 v1.25 "Combiner" 则展示了我们社区共同努力所能达成的成就,那么这次的 v1.26 "Electrifying" 也同样献给所有那些个人行动融入发布流程,使这一切成为可能的人们。

主要主题

Kubernetes v1.26 包含了许多变化,这些变化由全球志愿者团队为您带来。对于此版本,我们确定了几个主要主题。

容器镜像仓库变更

在之前的版本中,Kubernetes 更改了容器仓库,允许将负载分散到多个云提供商和地区,这一变化减少了对单一实体的依赖,并为大量用户提供了更快的下载体验。

此版本的 Kubernetes 是第一个完全在新 registry.k8s.io 容器镜像仓库中发布的版本。在(现已过时的)k8s.gcr.io 镜像仓库中,将不会发布 v1.26 的容器镜像标签,只有 v1.26 之前的版本的标签会继续更新。有关此重大变化的动机、优势和影响的更多信息,请参阅 registry.k8s.io:更快、更便宜且已普遍可用

CRI v1alpha2 已移除

随着容器运行时接口 (CRI) 的采用和 v1.24 中dockershim 的移除,CRI 成为 Kubernetes 与不同容器运行时交互的唯一受支持和有文档记录的方式。每个 kubelet 都会与该节点上的容器运行时协商使用哪个版本的 CRI。

在之前的版本中,Kubernetes 项目推荐使用 CRI v1 版本,但 kubelet 仍然可以协商使用已被弃用的 CRI v1alpha2

Kubernetes v1.26 放弃了对 CRI v1alpha2 的支持。这个移除将导致如果容器运行时不支持 CRI v1,kubelet 将不会注册该节点。这意味着 containerd 的 1.5 及更早的次要版本在 Kubernetes 1.26 中不受支持;如果您使用 containerd,您需要将 containerd 升级到 1.6.0 或更高版本**之后**才能将该节点升级到 Kubernetes v1.26。这同样适用于任何其他只支持 v1alpha2 的容器运行时:如果这对您有影响,您应该联系容器运行时供应商寻求建议,或查看他们的网站以获取有关如何继续操作的其他说明。

存储改进

继上一个版本中核心容器存储接口 (CSI) 迁移功能正式发布 (GA) 后,CSI 迁移是我们几个版本以来一直努力的持续性工作,此版本继续添加(和删除)与迁移目标一致的功能,以及对 Kubernetes 存储的其他改进。

针对 Azure File 和 vSphere 的 CSI 迁移已升级为稳定版

vSphereAzure 树内驱动程序向 CSI 的迁移都已升级为稳定版。您可以在 vSphere CSI 驱动程序Azure File CSI 驱动程序 仓库中找到更多相关信息。

将 FSGroup 委托给 CSI 驱动程序 已升级为稳定版

此功能允许 Kubernetes 在挂载卷时将 pod 的 fsGroup 提供给 CSI 驱动程序,以便驱动程序可以利用挂载选项来控制卷权限。以前,kubelet 总是会根据 Pod 的 .spec.securityContext.fsGroupChangePolicy 字段中指定的策略,对卷中的文件应用 fsGroup 所有权和权限更改。从此版本开始,CSI 驱动程序可以选择在卷的附加或挂载时应用 fsGroup 设置。

移除树内 GlusterFS 驱动程序

在 v1.25 版本中已被弃用的树内 GlusterFS 驱动程序在此版本中被移除

移除树内 OpenStack Cinder 驱动程序

此版本移除了已弃用的 OpenStack 树内存储集成(cinder 卷类型)。您应该迁移到来自 https://github.com/kubernetes/cloud-provider-openstack 的外部云提供商和 CSI 驱动程序。更多信息,请访问 Cinder 树内到 CSI 驱动程序迁移

签署 Kubernetes 发布工件功能升级为 Beta

在 Kubernetes v1.24 中引入的此功能是提高 Kubernetes 发布过程安全性的一个重要里程碑。所有发布工件都使用 cosign 进行无密钥签名,二进制工件和镜像都可以被验证

支持 Windows 特权容器功能升级为稳定版

特权容器支持允许容器以与直接在主机上运行的进程相似的访问权限来运行。Windows 节点上对该功能的支持,称为 HostProcess 容器,现在将升级为稳定版,从而可以从特权容器访问主机资源(包括网络资源)。

Kubernetes 指标改进

此版本在指标方面有几个值得注意的改进。

指标框架扩展升级为 Alpha

指标框架扩展升级为 Alpha,并且Kubernetes 代码库中每个指标的文档现已发布。此增强功能为 Kubernetes 指标增加了两个额外的元数据字段:InternalBeta,代表指标成熟度的不同阶段。

组件健康服务水平指标升级为 Alpha

同样在消费 Kubernetes 指标的能力上有所改进,组件健康服务水平指标 (SLIs)升级为 Alpha:通过启用 ComponentSLIs 特性门控,将有一个额外的指标端点,允许从原始健康检查数据转换成的指标格式来计算服务水平目标 (SLOs)。

特性指标现已可用

现在每个 Kubernetes 组件都可以使用特性指标,通过检查组件的 kubernetes_feature_enabled 指标端点,可以跟踪每个活动特性门控是否已启用

动态资源分配升级为 Alpha

动态资源分配是一个新功能,它将资源调度交由第三方开发者控制:它为请求资源访问提供了一种替代有限的“可数”接口(例如 nvidia.com/gpu: 2)的方法,提供了一个更类似于持久卷的 API。在底层,它使用容器设备接口 (CDI) 来进行设备注入。此功能由 DynamicResourceAllocation 特性门控控制。

准入控制中的 CEL 升级为 Alpha

此功能验证准入策略引入了一个 v1alpha1 API,通过通用表达式语言 (Common Expression Language) 表达式实现可扩展的准入控制。目前,自定义策略通过准入 Webhook 来强制执行,虽然灵活,但与进程内策略执行相比存在一些缺点。要使用此功能,请通过 --runtime-config 启用 ValidatingAdmissionPolicy 特性门控和 admissionregistration.k8s.io/v1alpha1 API。

Pod 调度改进

Kubernetes v1.26 引入了一些相关的增强功能,以更好地控制调度行为。

PodSchedulingReadiness 升级为 Alpha

此功能为 Pod 的 API 引入了一个 .spec.schedulingGates 字段,用于指示该 Pod 是否允许被调度。外部用户/控制器可以使用此字段根据其策略和需求来暂缓 Pod 的调度。

NodeInclusionPolicyInPodTopologySpread 升级为 Beta

通过在 topologySpreadConstraints 中指定 nodeInclusionPolicy,您可以控制在计算 Pod 拓扑扩展偏差时是否考虑污点/容忍

其他更新

升级到稳定版

此版本总共包含 11 项升级为稳定版的增强功能

弃用和移除

此版本中有 12 个功能从 Kubernetes 中被弃用或移除

发布说明

Kubernetes v1.26 的完整发布详情可在我们的发布说明中找到。

可用性

Kubernetes v1.26 可在 Kubernetes 网站上下载。要开始使用 Kubernetes,请查看这些交互式教程,或使用容器作为“节点”来运行本地 Kubernetes 集群,使用 kind。您也可以使用 kubeadm 轻松安装 v1.26。

发布团队

Kubernetes 的存在离不开其社区的支持、承诺和辛勤工作。每个发布团队都由专注的社区志愿者组成,他们共同努力构建构成您所依赖的 Kubernetes 版本的各个部分。这需要我们社区各个角落的人们的专业技能,从代码本身到其文档和项目管理。

我们想感谢整个发布团队,感谢他们辛勤工作数小时,以确保我们为社区提供一个稳定的 Kubernetes v1.26 版本。

我们还要特别感谢我们的发布负责人 Leonard Pahlke,他成功地在整个发布周期中引导了整个发布团队,通过他持续的支持和对构成成功发布之路的众多不同细节的关注,确保我们都能以最佳方式为这个版本做出贡献。

用户亮点

生态系统更新

  • KubeCon + CloudNativeCon Europe 2023 将于 2023 年 4 月 17 日至 21 日在荷兰阿姆斯特丹举行!您可以在活动网站上找到有关会议和注册的更多信息。
  • CloudNativeSecurityCon North America 是一个为期两天的活动,旨在促进云原生安全项目的协作、讨论和知识共享,以及如何最好地利用这些项目来应对安全挑战和机遇。该活动将于 2023 年 2 月 1 日至 2 日在美国华盛顿州西雅图举行。更多信息请参见活动页面
  • CNCF 宣布了2022 年社区奖获奖者:社区奖旨在表彰那些为推进云原生技术做出杰出贡献的 CNCF 社区成员。

项目速度

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

在为期 14 周(9 月 5 日至 12 月 9 日)的 v1.26 发布周期中,我们看到了来自 976 家公司6877 名个人的贡献。

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

请于 2023 年 1 月 17 日星期二美国东部时间上午 10 点至 11 点(世界标准时间下午 3 点至 4 点)加入 Kubernetes v1.26 发布团队的成员,了解此版本的主要功能,以及弃用和移除的内容,以帮助规划升级。更多信息和注册,请访问活动页面

参与其中

参与 Kubernetes 的最简单方法是加入与你兴趣相符的众多特别兴趣小组(SIG)之一。

有什么想向 Kubernetes 社区广播的内容吗?在我们每周的社区会议上分享你的声音,并通过以下渠道进行分享: