Featured image of post Kubernetes v1.30 初探

Kubernetes v1.30 初探

A Peek at Kubernetes v1.30

作者: Amit Dsouza, Frederick Kautz, Kristin Martin, Abigail McCarthy, Natali Vlatko

译者: Rui Yang

# 快速预览:Kubernetes v1.30 的精彩新功能

新的一年,新的 Kubernetes 版本。我们已经进行了一半的发布周期,并且在 v1.30 中有许多有趣和令人兴奋的增强功能。从全新的 alpha 版本功能,到已有的功能升级到稳定版,再到期待已久的改进,这个版本对每个人都有值得关注的东西!

在正式发布之前,让我们先来看一看这个周期中我们最为期待的增强功能的预览!

# Kubernetes v1.30 的主要变更

# 为动态资源分配构建结构化参数 (KEP-4381)

在 Kubernetes v1.26 中作为 alpha 功能添加了动态资源分配。它定义了一种替代传统设备插件 API 的方法,用于请求访问第三方资源。根据设计,动态资源分配使用对于核心 Kubernetes 完全不透明的资源参数。这种方法对于集群自动缩放器(CA)或任何需要为一组 Pod(例如作业调度器)做出决策的更高级别控制器来说是个问题。它无法模拟随时间分配或释放资源请求的效果。只有第三方 DRA 驱动程序才有可用的信息来执行此操作。

“动态资源分配的结构化参数”是对原始实现的扩展,通过构建一个框架来支持使这些声明参数不再那么不透明,从而解决了这个问题。驱动程序不再直接处理所有资源参数的语义,而是可以使用由 Kubernetes 预先定义的特定的“结构化模型”来管理资源并描述它们。这将允许了解这个“结构化模型”的组件在不将资源外包给某些第三方控制器的情况下做出关于这些资源的决策。例如,调度器可以快速分配资源而无需与动态资源分配驱动程序进行来回通信。这个版本的工作集中在定义必要的框架来启用不同的“结构化模型”以及实现“命名资源”模型上。这个模型允许列出各个资源实例,并且与传统的设备插件 API 相比,增加了通过属性单独选择这些实例的能力。

# 节点内存交换支持 (KEP-2400)

在 Kubernetes v1.30 中,Linux 节点上的内存交换支持得到了重大变化,重点是改善系统稳定性。在先前的 Kubernetes 版本中,NodeSwap 特性门默认处于禁用状态,启用时,默认行为是使用 UnlimitedSwap。为了实现更好的稳定性,在 v1.30 中将删除 UnlimitedSwap 行为(可能会影响节点稳定性)。

更新后的仍处于测试阶段的 Linux 节点上的交换支持将默认可用。然而,默认行为将是将节点设置为 NoSwap 模式(而不是 UnlimitedSwap)。在 NoSwap 模式下,kubelet 支持在交换空间处于活动状态的节点上运行,但 Pod 不使用任何页面文件。你仍然需要设置 --fail-swap-on=false 让 kubelet 在该节点上运行。然而,另一种模式的变化很大:LimitedSwap。在这种模式下,kubelet 实际上会使用该节点上的页面文件,并允许 Pod 将部分虚拟内存分页出去。容器(及其父 Pod)无法超出其内存限制访问交换,但系统仍然可以使用交换空间(如果可用的话)。

Kubernetes 的节点特别兴趣小组(SIG Node)还将根据来自最终用户、贡献者和更广泛的 Kubernetes 社区的反馈,更新文档,以帮助你理解如何使用修订后的实现。

要获取有关 Kubernetes 中 Linux 节点交换支持的更多详细信息,请阅读以前的博客文章节点交换文档

# 支持在 Pods 中使用用户命名空间 (KEP-127)

用户命名空间是一个仅适用于 Linux 的功能,它更好地隔离 Pods,以防止或减轻几个被评为高/严重的 CVE,包括CVE-2024-21626,于 2024 年 1 月发布。在 Kubernetes 1.30 中,对用户命名空间的支持正在迁移到 beta 版,并且现在支持具有和不具有卷、自定义 UID/GID 范围等功能的 Pods!

# 结构化授权配置 (KEP-3221)

结构化授权配置的支持正在迁移到 beta 版,并将默认启用。该功能使你能够创建具有多个 Webhook 的授权链,具有明确定义的参数,按特定顺序验证请求,并允许细粒度控制,例如在失败时明确拒绝。配置文件方法甚至允许你指定CEL规则,以在将请求分派给 Webhook 之前对其进行预过滤,帮助你防止不必要的调用。当配置文件被修改时,API 服务器还会自动重新加载授权链。

你必须使用 --authorization-config 命令行参数指定授权配置的路径。如果你想继续使用命令行标志而不是配置文件,那么它们将继续像原样工作。要访问新的授权 Webhook 功能,如多个 Webhook、失败策略和预过滤规则,请切换到将选项放入 --authorization-config 文件中。从 Kubernetes 1.30 开始,配置文件格式处于 beta 级别,只需要指定 --authorization-config,因为默认情况下启用了功能门。在授权文档中提供了一个包含所有可能值的示例配置。更多详细信息,请阅读授权文档

# 基于容器资源的 Pod 自动缩放 (KEP-1610)

基于 ContainerResource 指标的水平 Pod 自动缩放将在 v1.30 中稳定发布。这种新的 HorizontalPodAutoscaler 行为允许你根据单个容器的资源使用情况配置自动缩放,而不是基于 Pod 的总体资源使用情况。欲了解更多详情,请参阅我们的先前文章,或阅读容器资源指标

# CEL 用于准入控制 (KEP-3488)

在 Kubernetes 中集成通用表达式语言(CEL)用于准入控制引入了一种更动态和富有表现力的方式来评估准入请求。这个功能允许通过 Kubernetes API 直接定义和强制执行复杂、细粒度的策略,增强了安全性和治理能力,而不会影响性能或灵活性。

CEL 的添加到 Kubernetes 准入控制赋予了集群管理员制定复杂规则的能力,这些规则可以评估 API 请求的内容与集群的期望状态和策略是否匹配,而无需求助于基于 Webhook 的访问控制器。这种控制水平对于维护集群操作的完整性、安全性和效率至关重要,使 Kubernetes 环境更加健壮,并能够适应各种用例和要求。有关使用 CEL 进行准入控制的更多信息,请参阅API 文档中的 ValidatingAdmissionPolicy 部分。

我们希望你和我们一样对这个版本的发布感到兴奋。请密切关注几周后发布的官方发布博客,了解更多亮点!

原文地址: https://kubernetes.io/blog/2024/03/12/kubernetes-1-30-upcoming-changes/

官方译文: https://kubernetes.io/zh-cn/blog/2024/03/12/kubernetes-1-30-upcoming-changes/

使用 Hugo 构建
主题 StackJimmy 设计