Kubernetes 1.28发布,包含45项增强功能!( 二 )


3.改进 CustomResourceDefinition 验证规则
通用表达式语言(CEL)可用于验证自定义资源 。其主要目标是允许大多数验证用例 , 而这些用例曾经可能需要你作为自定义资源定义(CRD)的作者来设计和实现 webhook 。取而代之的是 , 作为一个 beta 功能 , 你可以将验证表达式直接添加到 CRD 的模式中 。
直接支持复杂验证对于 CRD 来说是必要的 。尽管接纳 webhooks 支持 CRD 验证 , 但它们使 CRD 的开发和操作变得相对复杂 。
在 1.28 中 , 添加了两个可选字段 reason 和 fieldPath , 用户可以指定失败的原因和字段路径 。
更多信息 , 请阅读:
https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation-rules
4.ValidatingAdmissionPolicies 升级到测试版
用于入场控制的通用表达式语言是对 Kubernetes API 服务器请求的可定制、进程内验证 , 可替代验证入场 webhooks 。
为入场控制的通用表达式语言提供了一种定制化的、内置的请求验证方法 , 这是对验证入场 webhooks 的一个替代方案 。
该功能建立在 1.25 版升级到测试版的 CRD 验证规则功能的基础上 , 但侧重于验证入场控制的策略执行功能 。
这将降低执行可定制策略的基础架构障碍 , 并提供有助于社区建立和遵守 Kubernetes 及其扩展的最佳实践的原语 。
要使用 ValidatingAdmissionPolicies , 你需要启用集群控制平面中的 admissionregistration.k8s.io/v1beta1 API 组和ValidatingAdmissionPolicy 功能门 。
5.接纳 webhook 的匹配条件
Kubernetes v1.27 版允许你为入场 webhooks 指定匹配条件 , 这让你可以缩小 Kubernetes 在入场时进行远程 HTTP 调用的范围 。ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 的 matchCondition 字段是一个 CEL 表达式 , 其值必须为 “true” , 接纳请求才会发送到 Webhook 。
在 Kubernetes v1.28 中 , 该字段被移至 beta 版 , 并且默认启用 。
要了解更多信息 , 请参阅:
https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-matchconditions
6.Beta 版支持在 Linux 上启用交换空间
这将以可控、可预测的方式为节点添加交换支持 , 以便 Kubernetes 用户可以执行测试并提供数据 , 继续在交换基础上构建集群功能 。
交换有两种不同类型的用户 , 他们可能会重叠:

  • 节点管理员 , 他们可能希望交换能用于节点级性能调整和稳定性 / 减少嘈杂邻居问题 。
  • 应用开发人员 , 他们编写的应用程序将从使用交换内存中受益 。
7.混合版本代理(alpha)
当一个集群拥有多个混合版本的 API 服务器时(例如在升级/降级期间 , 或运行时配置发生变化和部署发生时) , 并非每个 apiserver 都能为每个版本的每个资源提供服务 。
对于 Kubernetes v1.28 , 可以在 API 服务器的聚合层中启用混合版本代理 。混合版本代理会查找本地 API 服务器无法识别、但控制平面内的另一个 API 服务器能够支持的请求 。找到合适的对等程序后 , 聚合层会将请求代理到兼容的 API 服务器;从客户端的角度来看 , 这是透明的 。
在集群上执行升级或降级时 , 控制平面内的 API 服务器可能会在一段时间内处于不同的版本;当这种情况发生时 , API 服务器的不同子集能够为不同的内置资源集提供服务(不同的组、版本和资源都是可能的) 。这种新的 alpha 功能可以帮助你向客户端隐藏这种偏差 。
8.控制平面组件的源代码重组
Kubernetes 的贡献者们已经开始重组 kube-apiserver 的代码 , 以建立一个新的暂存仓库 , 该仓库消耗 k/apiserver , 但拥有更大的、精心挑选的 kube-apiserver 功能子集 , 从而使其可以重用 。
这是一个循序渐进的重组过程;最终会有一个新的 Git 仓库 , 其通用功能将从 Kubernetes 的 API 服务器中抽象出来 。
9.支持将 CDI 注入容器(alpha)
CDI 提供了将复杂设备注入容器的标准化方式(即逻辑上需要注入不止一个 /dev 节点才能工作的设备) 。这一新特性使插件开发人员能够利用 1.27 版中添加到 CRI 的 CDIDevices 字段 , 将 CDI 设备直接传递给启用了 CDI 的运行时(如 contAInerd 和 crio-o 的最新版本) 。


推荐阅读