Kubernetes 1.26: 汇总变更内容(新功能!)和升级时的注意事项
首先
这篇文章提供了Kubernetes 1.26的CHANGELOG以及从Kubernetes v1.26: Electrifying到What’s new!的页面链接,其中包含升级注意事项和各个修改点的总结。请参阅每个总结页面以获取更多详细信息。
详细更改内容链接
Metrics Changes と SIG Instrumentation @watawuwu
SIG Apps @yosshi_
SIG API Machinery @Ladicle
SIG Auth @hiyosi
SIG CLI @superbrothers
SIG Cluster Lifecycle @yuanying
SIG Storage @ysakashita
SIG Network @tkusumi
SIG Scheduling @everpeace
SIG Node @y1r96
What’s New (Major Themes)
容器镜像注册表更改
在之前的版本中,Kubernetes更改了容器注册表,并且可以在多个云提供商和地区进行负载均衡。这个变化减少了对单一实体的依赖,并且为许多用户提供了更快的下载体验。
这个Kubernetes的版本是第一个仅在新的registry.k8s.io容器镜像注册表中发布的版本。(现在已经是传统的)k8s.gcr.io镜像注册表将不再发布带有v1.26标签的容器镜像,仅持续更新v1.26之前的标签。关于这个重要变更的动机、优点和意义,请参考registry.k8s.io:更快、更便宜和普遍可用。
中国之声(CRI)v1alpha2已删除。
通过Container Runtime Interface(CRI)和v1.24的dockershim的删除,CRI已成为与不同容器运行时进行交互的唯一支持和文档化的方式。每个kubelet将协商其节点上使用的容器运行时和CRI版本。
在以前的发布中,Kubernetes项目推荐使用CRI版本v1,但kubelet继续使用v1alpha2,并且这被认为是不推荐的做法。
在Kubernetes v1.26中,不再支持CRI v1alpha2。通过删除它,如果kubelet不支持CRI v1的容器运行时,将无法注册节点。这意味着Kubernetes v1.26不支持containerd的1.5版本及更早版本。如果使用containerd,需要在将节点升级到Kubernetes v1.26之前将containerd升级到1.6.0或更高版本。这也适用于只支持v1alpha2的其他容器运行时。如果受影响,请联系容器运行时的供应商以获得建议,或在其网站上进一步了解未来的更新方式。
存储改进
以前のリリースでコアのContainer Storage Interface (CSI) Migration機能のGAに続き、CSI migrationは数リリース前から取り組んでいる継続的な取り組みで、今回のリリースでもマイグレーションの目標に沿った機能の追加(および削除)、およびKubernetesストレージのその他の改良が行われています。
CSI迁移适用于Azure File和vSphere已升级至稳定版本。
如果您想了解更多详细信息,请参考vSphere CSI驱动程序和Azure File CSI驱动程序的存储库。vSphere和Azure的in-tree驱动的CSI迁移已升级为稳定版本。
将FSGroup委派给CSI驱动程序升级到稳定版本
通过该功能,Kubernetes将在挂载卷时将Pod的fsGroup提供给CSI驱动程序,并且驱动程序可以使用挂载选项来控制卷的权限。之前,Kubelet始终根据Pod的.spec.securityContext.fsGroupChangePolicy字段中指定的策略应用于卷内文件的fsGroup所有权和权限更改。从这个版本开始,CSI驱动程序添加了在附加或挂载卷时应用fsGroup设置的选项。
移除内嵌的GlusterFS驱动程序
在这个发布版本中,已经删除了被视为废弃的内置GlusterFS驱动器,这个驱动器在v1.25版本中已经不再推荐使用。
移除In-tree OpenStack Cinder驱动程序
在这个版本中,已经删除了原来的在OpenStack(Cinder卷类型)中的内置存储集成,该功能被列为不推荐使用。相反,您应该迁移到 https://github.com/kubernetes/cloud-provider-openstack 的外部云提供程序和CSI驱动程序。有关更详细的信息,请参考Cinder in-tree to CSI driver migration。
将Kubernetes发布的相关文件签署升级为正式版
在 Kubernetes v1.24 中引入的这个功能构成了提升 Kubernetes 发布的安全性的重要里程碑。所有的发布构件都会通过 cosign 进行无密钥签名,既可以验证二进制构件又可以验证镜像。
Windows特权容器的支持升级为稳定版本。
在支持特权容器的情况下,可以在主机上直接运行进程和拥有主机访问权限的容器。在Windows节点上,通过支持这一功能,被称为HostProcess容器的特权容器现已成为稳定版本,并且可以访问主机资源,包括网络资源。
对Kubernetes指标的改进
这个发布版本包含了一些值得关注的度量指标的改进。
度量框架的扩展升级为阿尔法版
度量衡框架扩展(Metrics framework extension)现已处于alpha版本,并发布了Kubernetes代码库中所有指标的文档。在这次增强中,我们为Kubernetes的指标添加了两个元数据字段:Internal和Beta。这两个元数据字段表示指标的不同成熟阶段。
组件健康服务水平指标升级至alpha版本。
改善了消费Kubernetes指标的功能,并将组件健康的服务水平指标(SLI)升级为Alpha级别。启用ComponentSLIs功能标志后,将添加额外的指标端点,通过将转化为指标格式的原始健康检查数据计算服务级别目标(SLO)。
现在可以使用功能指标了。
可以在每个Kubernetes组件中使用Feature Metrics,并通过检查组件的Metrics Endpoint的kubernetes_feature_enabled,来跟踪每个活动的特性开关是否已启用。
动态资源分配升级至阿尔法级别。
动态资源分配是一项新功能,将资源调度委托给第三方开发者:它提供了一个受限的“可计数”接口来替代请求资源(例如nvidia.com/gpu: 2),并提供了类似于持久卷的API。在内部,它使用容器设备接口(Container Device Interface,CDI)来注入设备。此功能受DynamicResourceAllocation功能门控制。
入学控制的CEL升级至alpha版本。
引入v1alpha1 API并使用Common Expression Language来实现可拓展的admission control,以支持validation admission policies的功能。目前,自定义策略是通过admission webhook进行强制执行的,与灵活但内部执行的策略相比,它存在一些缺点。要使用此功能,必须启用ValidatingAdmissionPolicy feature gate,并通过–runtime-config启用admissionregistration.k8s.io/v1alpha1。
由于我们已经对以下功能进行了调查,虽然简单,但如果您有兴趣,请也参考这个!
Pod调度的改进
在Kubernetes v1.26中,引入了几个与控制调度行为更为准确相关的功能增强。
PodSchedulingReadiness的等级提升至Alpha版。
此功能将.spec.schedulingGates字段添加到Pod的API中,以指示Pod是否允许被调度。外部用户和控制器可以使用此字段基于策略和需求来阻止Pod被调度。
NodeInclusionPolicyInPodTopologySpread 升级为 beta 版本。
通过指定topologySpreadConstraints的nodeInclusionPolicy,可以在计算Pod拓扑分布偏差时控制是否考虑污点和容忍设置。
其他更新
祝贺毕业找到稳定的工作
这个发布包含了总共11项增强功能的稳定提升。
-
- Support for Windows privileged containers
-
- vSphere in-tree to CSI driver migration
-
- Allow Kubernetes to supply pod’s fsgroup to CSI driver on mount
-
- Azure file in-tree to CSI driver migration
-
- Job tracking without lingering Pods
-
- Service Internal Traffic Policy
-
- Kubelet Credential Provider
-
- Support of mixed protocols in Services with type=LoadBalancer
-
- Reserve Service IP Ranges For Dynamic and Static IP Allocation
-
- CPUManager
- DeviceManager
弃用和删除
在这个版本中,Kubernetes 中有12个功能已被标为不推荐或删除。
-
- CRI v1alpha2 API is removed
-
- Removal of the v1beta1 flow control API group
-
- Removal of the v2beta2 HorizontalPodAutoscaler API
-
- GlusterFS plugin removed from available in-tree drivers
-
- Removal of legacy command line arguments relating to logging
-
- Removal of kube-proxy userspace modes
-
- Removal of in-tree credential management code
-
- The in-tree OpenStack cloud provider is removed
-
- Removal of dynamic kubelet configuration
-
- Deprecation of non-inclusive kubectl flag
-
- Deprecations for kube-apiserver command line arguments
- Deprecations for kubectl run command line arguments
紧急升级注意事项
不,真的,在升级之前你必须阅读这个。(在升级之前,你务必阅读此内容)
v1.26で削除予定であった非推奨のbeta APIはサーブされなくなりました。詳細は https://kubernetes.io/docs/reference/using-api/deprecation-guide/#v1-26 をご参照ください。(#111973, @liggitt)
- OpenStackのためのin-treeのcloud provider(とcinder volume provider)は削除されました。代わりにcloud-provider-openstackからexternal cloud providerとcsi driverを利用してください。(#67782, @dims)