作者:Kubernetes 1.26 发布团队[1]
很高兴向大家宣布,Kubernetes 1.26正式发布了。
这个版本总共包括 37 个增强:其中 11 个升级到 Stable,10 个升级到 Beta 版,16 个进入 Alpha 版。我们还有 12 个功能被弃用或删除,其中三个我们在本次宣布中会详细介绍。
Kubernetes v1.26 版的主题是振奋人心(Electrifying)。
Kubernetes 的每一个版本,都是敬业的志愿者们共同努力的结果,只有通过使用分散在全球多个数据中心和地区的各种复杂的计算资源,才有可能实现。发布的最终结果——二进制文件、镜像容器、文档——随后被部署在越来越多的个人、内部和云计算资源上。
在此版本中,我们希望认识到开发和使用 Kubernetes 所基于的所有这些构建模块的重要性,同时提高对考虑能耗足迹的重要性的认识:环境可持续性是任何软件解决方案的创作者和用户不可避免的关注,以及像 Kubernetes 这样的软件的环境足迹,我们相信这一领域将在未来的版本中发挥重要作用。
作为一个社区,我们总是努力使每个新的发布过程比以前更好(例如,在这个版本中,我们已经开始使用 Projects 来跟踪增强[2])。如果1.24 版“观星者”让我们向上看,当我们的社区走到一起时会有什么可能,而1.25 版“合作者”是我们社区的共同努力所能做到的,那么 1.26 版“振奋人心的”也是献给所有那些个人行动,整合到发布流中,使所有这些成为可能的人。
Kubernetes v1.26 由许多变化组成,由全球志愿者团队为你带来。对于这个版本,我们已经确定了几个主要主题。
在之前的版本中,Kubernetes 改变了容器注册表[3],允许在多个云提供商和地区之间传播负载,这一改变减少了对单个实体的依赖,并为大量用户提供了更快的下载体验。
Kubernetes 的这个版本是第一个专门在新的 registry.k8s.io 容器镜像注册表中发布的版本。在(现在遗留的)k8s.gcr.io 镜像注册表中,不会发布 1.26 版的容器镜像标签,只有 1.26 版之前的版本的标签会继续更新。请参考k8s.gcr.io -> registry.k8s.io:更快、更便宜,且普遍可用(GA),了解有关这一重大变化的动机、优势和影响的更多信息。
随着 1.24 版中CRI[4](Container Runtime Interface,容器运行时接口)的采用和dockershim 的删除[5],CRI 成为 Kubernetes 与不同容器运行时交互的唯一受支持和有文档记录的方式。每个 kubelet 协商在该节点上的容器运行时使用哪个版本的 CRI。
在之前的版本中,Kubernetes 项目推荐使用 CRI 版本 v1,但 kubelet 仍然可以协商使用 CRI 版本 1alpha2,但该版本已被弃用。
Kubernetes v1.26 不再支持 CRI v1alpha2。如果容器运行时不支持 CRI v1,那么这删除[6]将导致 kubelet 不注册节点。这意味着在 Kubernetes 1.26 中不支持 containerd minor 1.5 及更早的版本;如果你使用 containerd,在将该节点升级到 Kubernetes v1.26 之前,你需要升级到 containerd 版本 1.6.0 或更高版本。这同样适用于任何其他仅支持 v1alpha2 的容器运行时:如果这影响到你,你应该联系容器运行时供应商以获得建议,或者查看他们的网站以获得如何向前发展的其他说明。
继上一版本中的[核心 CSI(Container Storage Interface,容器存储接口)迁移](core Container Storage Interface "核心 CSI(Container Storage Interface,容器存储接口)迁移")功能正式发布后,CSI 迁移是一项持续的工作,我们现在已经为几个版本做了工作,此版本继续添加(和删除)与迁移目标一致的功能,以及对 Kubernetes 存储的其他改进。
vSphere[7]和Azure[8]的 in-tree 驱动程序到 CSI 的迁移都已升级到 Stable。你可以在[vSphere CSI 驱动程序]( "vSphere CSI 驱动程序")https://github.com/kubernetes-sigs/vsphere-csi-driver和Azure File CSI 驱动程序[9]仓库中找到有关它们的更多信息。
该功能允许 Kubernetes 在挂载卷时向 CSI 驱动程序提供 pod 的 fsGroup[10],以便驱动程序可以利用挂载选项来控制卷权限。以前,kubelet 总是根据 Pod 的.spec.securityContext.fsGroupChangePolicy 字段中指定的策略,将 fsGroup 所有权和权限更改应用于卷中的文件。从此版本开始,CSI 驱动程序可以选择在卷的连接或挂载期间应用 fsGroup 设置。
在 1.25 版中已被弃用,在此版本中删除[11]了 In-tree GlusterFS 驱动程序。
此版本删除了已弃用的 OpenStack 树内存储集成(cinder 卷类型)。你应该从https://github.com/kubernetes/cloud-provider-openstack迁移到外部云提供商和CSI驱动程序。有关更多信息,请访问Cinder in-tree to CSI 驱动程序迁移[12]。
这个特性[13]是在 Kubernetes v1.24 中引入的,是提高 Kubernetes 发布过程安全性的一个重要里程碑。所有发布工件都使用cosign[14]进行无密钥签名,二进制工件和镜像都可以被验证[15]。
特权容器支持允许容器以与直接在主机上运行的进程相似的对主机的访问来运行。Windows 节点中对此功能的支持称为HostProcess 容器[16],现在将升级到 Stable[17],允许从特权容器访问主机资源(包括网络资源)。
这个版本在指标上有几个值得注意的改进。
指标框架扩展升级到 Alpha[18],Kubernetes 代码库中的每个指标都发布了文档[19]。这一增强为 Kubernetes 指标增加了两个额外的元数据字段:Internal 和 Beta,代表指标成熟度的不同阶段。
此外,在使用 Kubernetes 指标的能力方面,组件健康服务水平指标[20](SLI,Service Level Indicator)已经升级到 Alpha[21]:通过启用 ComponentSLIs 功能标志,将有一个额外的指标端点,允许从转换为指标格式的原始健康检查数据计算服务水平目标(SLO,Service Level Objective)。
现在每个 Kubernetes 组件都有了特性指标,通过检查 kubernetes_feature_enabled 的组件指标端点,可以跟踪每个活跃功能门是否被启用[22]。
动态资源分配[23]是一项新功能[24],它将资源调度交给了第三方开发人员:它为请求访问资源的有限“countable”接口(如 nvidia.com/gpu:2)提供了一种替代方案,提供了一种更类似于持久性卷的 API。在底层,它使用CDI[25](Container Device Interface,容器设备接口)进行设备注入。此功能被 DynamicResourceAllocation 功能门阻止。
这个特性[26]引入了一个 v1alpha1 API 来验证准入策略[27],通过CEL[28](Common Expression Language,公共表达式语言)表达式实现可扩展的接纳控制。目前,自定义策略是通过准入 webhook[29]来执行的,虽然这种方式很灵活,但与进程内策略执行相比,还是有一些缺点。要使用,请通过--runtime-config 启用 ValidatingAdmissionPolicy 功能门和 admissionregistration.k8s.io/v1alpha1 API。
Kubernetes v1.26 引入了一些相关的增强功能,可以更好地控制调度行为。
该特性[30]在 Pod 的 API 中引入了一个.spec.schedulingGates 字段,以指示是否允许调度 Pod[31]。外部用户/管理器可以使用此字段根据他们的策略和需求来阻止 Pod 的调度。
通过在 topologySpreadConstraints 中指定 nodeInclusionPolicy,你可以控制在计算 Pod 拓扑分布偏差时是否考虑污点/容差[32]。
此版本总共包括 11 项升级为 Stable 的增强功能:
在此版本中,Kubernetes弃用或删除[44]了 12 个功能。
Kubernetes v1.26 版本的完整细节可以在发行说明[57]中找到。
Kubernetes v1.26 版可以在Kubernetes 网站[58]下载。要开始使用 Kubernetes,请查看这些交互式教程[59]或通过kind[60],使用容器作为“节点”运行本地 Kubernetes 集群。你也可以使用kubeadm[61]轻松安装 1.26 版。
参考资料
[1]
Kubernetes 1.26 发布团队: https://github.com/kubernetes/sig-release/blob/master/releases/release-1.26/release-team.md
[2]
开始使用 Projects 来跟踪增强: https://github.com/orgs/kubernetes/projects/98/views/1
[3]
Kubernetes 改变了容器注册表: https://github.com/kubernetes/kubernetes/pull/109938
[4]
CRI: https://kubernetes.io/docs/concepts/architecture/cri/
[5]
dockershim 的删除: https://kubernetes.io/blog/2022/02/17/dockershim-faq/
[6]
删除: https://github.com/kubernetes/kubernetes/pull/110618
[7]
vSphere: https://github.com/kubernetes/enhancements/issues/1491
[8]
Azure: https://github.com/kubernetes/enhancements/issues/1885
[9]
Azure File CSI 驱动程序: https://github.com/kubernetes-sigs/azurefile-csi-driver
[10]
挂载卷时向 CSI 驱动程序提供 pod 的 fsGroup: https://github.com/kubernetes/enhancements/issues/2317
[11]
删除: https://github.com/kubernetes/enhancements/issues/3446
[12]
Cinder in-tree to CSI 驱动程序迁移: https://github.com/kubernetes/enhancements/issues/1489
[13]
特性: https://github.com/kubernetes/enhancements/issues/3031
[14]
cosign: https://github.com/sigstore/cosign/
[15]
可以被验证: https://kubernetes.io/docs/tasks/administer-cluster/verify-signed-artifacts/
[16]
HostProcess 容器: https://kubernetes.io/docs/tasks/configure-pod-container/create-hostprocess-pod/
[17]
升级到 Stable: https://github.com/kubernetes/enhancements/issues/1981
[18]
升级到 Alpha: https://github.com/kubernetes/enhancements/issues/3498
[19]
Kubernetes 代码库中的每个指标都发布了文档: https://kubernetes.io/docs/reference/instrumentation/metrics/
[20]
组件健康服务水平指标: https://kubernetes.io/docs/reference/instrumentation/slis/
[21]
升级到 Alpha: https://github.com/kubernetes/kubernetes/pull/112884
[22]
跟踪每个活跃功能门是否被启用: https://github.com/kubernetes/kubernetes/pull/112690
[23]
动态资源分配: https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/
[24]
新功能: https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/3063-dynamic-resource-allocation/README.md
[25]
CDI: https://github.com/container-orchestrated-devices/container-device-interface
[26]
特性: https://github.com/kubernetes/enhancements/issues/3488
[27]
验证准入策略: https://kubernetes.io/docs/reference/access-authn-authz/validating-admission-policy/
[28]
CEL: https://github.com/google/cel-spec
[29]
准入 webhook: https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/
[30]
特性: https://github.com/kubernetes/enhancements/issues/3521
[31]
指示是否允许调度 Pod: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-scheduling-readiness/
[32]
考虑污点/容差: https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/
[33]
Support for Windows privileged containers: https://github.com/kubernetes/enhancements/issues/1981
[34]
vSphere in-tree to CSI driver migration: https://github.com/kubernetes/enhancements/issues/1491
[35]
Allow Kubernetes to supply pod's fsgroup to CSI driver on mount: https://github.com/kubernetes/enhancements/issues/2317
[36]
Azure file in-tree to CSI driver migration: https://github.com/kubernetes/enhancements/issues/1885
[37]
Job tracking without lingering Pods: https://github.com/kubernetes/enhancements/issues/2307
[38]
Service Internal Traffic Policy: https://github.com/kubernetes/enhancements/issues/2086
[39]
Kubelet Credential Provider: https://github.com/kubernetes/enhancements/issues/2133
[40]
Support of mixed protocols in Services with type=LoadBalancer: https://github.com/kubernetes/enhancements/issues/1435
[41]
Reserve Service IP Ranges For Dynamic and Static IP Allocation: https://github.com/kubernetes/enhancements/issues/3070
[42]
CPUManager: https://github.com/kubernetes/enhancements/issues/3570
[43]
DeviceManager: https://github.com/kubernetes/enhancements/issues/3573
[44]
弃用或删除: https://kubernetes.io/blog/2022/11/18/upcoming-changes-in-kubernetes-1-26/
[45]
CRI v1alpha2
API is removed: https://github.com/kubernetes/kubernetes/pull/110618
[46]
Removal of the v1beta1
flow control API group: https://kubernetes.io/docs/reference/using-api/deprecation-guide/#flowcontrol-resources-v126
[47]
Removal of the v2beta2
HorizontalPodAutoscaler API: https://kubernetes.io/docs/reference/using-api/deprecation-guide/#horizontalpodautoscaler-v126
[48]
GlusterFS plugin removed from available in-tree drivers: https://github.com/kubernetes/enhancements/issues/3446
[49]
Removal of legacy command line arguments relating to logging: https://github.com/kubernetes/kubernetes/pull/112120
[50]
Removal of kube-proxy
userspace modes: https://github.com/kubernetes/kubernetes/pull/112133
[51]
Removal of in-tree credential management code: https://github.com/kubernetes/kubernetes/pull/112341
[52]
The in-tree OpenStack cloud provider is removed: https://github.com/kubernetes/enhancements/issues/1489
[53]
Removal of dynamic kubelet configuration: https://github.com/kubernetes/kubernetes/pull/112643
[54]
Deprecation of non-inclusive kubectl
flag: https://github.com/kubernetes/kubernetes/pull/113116
[55]
Deprecations for kube-apiserver
command line arguments: https://github.com/kubernetes/kubernetes/pull/38186
[56]
Deprecations for kubectl run
command line arguments: https://github.com/kubernetes/kubernetes/pull/112261
[57]
发行说明: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md
[58]
Kubernetes 网站: https://k8s.io/releases/download/
[59]
交互式教程: https://kubernetes.io/docs/tutorials/
[60]
kind: https://kind.sigs.k8s.io/
[61]
kubeadm: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有