apt-mark hold 阻止软件自动更新
变化是 Kubernetes 生命周期不可或缺的一部分:随着 Kubernetes 的成长和成熟,功能可能会被弃用、删除或替换为项目健康的改进。对于 Kubernetes v1.26,有几个计划:本文根据 v1.26 发布过程中这个周期中期点可用的信息确定并描述了其中的一部分,该过程仍在进行中,并且可能会引入其他更改。
Kubernetes API 移除和弃用流程
Kubernetes 项目有一个有据可查的功能弃用政策。
https://kubernetes.io/docs/reference/using-api/deprecation-policy/
此政策规定,只有当同一 API 的更新、稳定版本可用时,稳定的 API 才可能被弃用,并且 API 具有每个稳定性级别的最短生命周期。已弃用的 API 已被标记为在未来的 Kubernetes 版本中删除;它将继续运行直到被删除(从弃用起至少一年),但使用会导致显示警告。已删除的 API 在当前版本中不再可用,此时您必须迁移到使用替换 API。
一般可用 (GA) 或稳定的 API 版本可能会标记为已弃用,但不得在 Kubernetes 的主要版本中删除。
弃用后的 3 个版本必须支持 Beta 或预发布 API 版本。
Alpha 或实验性 API 版本可能会在任何版本中删除,恕不另行通知。
无论 API 是由于功能从测试版升级到稳定版而被删除,还是因为该 API 根本没有成功,所有删除都符合此弃用政策。每当删除 API 时,都会在文档中传达迁移选项。
删除对 CRI v1alpha2 API 和 containerd 1.5 的支持
在 1.24 版本中采用了 Container Runtime Interface (CRI)
https://kubernetes.io/docs/concepts/architecture/cri/
和 移除 dockershim 之后,CRI 成为了 Kubernetes 与不同容器运行时交互的受支持和文档化的方式。每个 kubelet 与该节点上的容器运行时协商使用哪个版本的 CRI。
Kubernetes 项目推荐使用 CRI 版本 v1; 在 Kubernetes 版本 1.25 中,kubelet 还可以协商使用 CRI 版本 v1alpha2(在添加对稳定 v1 接口的支持的同时,已经不再推荐使用该版本)。
Kubernetes v1.26 将不支持 CRI v1alpha2。如果容器运行时不支持 CRI v1,则此次移除将导致 kubelet 不注册节点:
https://github.com/kubernetes/kubernetes/pull/110618
这意味着 Kubernetes 1.26 将不支持 containerd 次要版本 1.5 及更早的版本;如果您使用 containerd,则需要先升级到 containerd 1.6.0 或更高版本,然后再将该节点升级到 Kubernetes v1.26。其他仅支持v1alpha2的容器运行时也受到同样的影响:如果这影响到您,您应该联系容器运行时供应商寻求建议或查看他们的网站以获取有关如何改进的更多说明。
如果您想从 v1.26 功能中获益并仍然使用较旧的容器运行时,您可以运行较旧的 kubelet。kubelet 支持的倾斜允许您运行 v1.25 kubelet:
https://kubernetes.io/releases/version-skew-policy/#kubelet
即使您将控制平面升级到 Kubernetes 的 1.26 次要版本,它仍然与v1alpha2 CRI 支持兼容。
除了容器运行时本身,还有像 stargz-snapshotter:
https://github.com/containerd/stargz-snapshotter
这样的工具充当 kubelet 和容器运行时之间的代理,这些工具也可能受到影响。
Kubernetes v1.26 中的弃用和删除
除上述内容外,Kubernetes v1.26 的目标是包括一些额外的删除和弃用。
移除v1beta1流量控制 API 组
FlowSchema 和 PriorityLevelConfiguration 的 flowcontrol.apiserver.k8s.io/v1beta1 API 版本,将不再在 v1.26 中提供:
https://kubernetes.io/docs/reference/using-api/deprecation-guide/#flowcontrol-resources-v126
用户应迁移清单和 API 客户端以使用自 v1.23 起可用的 API 版本:flowcontrol.apiserver.k8s.io/v1beta2
删除 v2beta2 HorizontalPodAutoscaler API
HorizontalPodAutoscaler autoscaling/v2beta2API 版本将不再在 v1.26 中提供服务:
https://kubernetes.io/docs/reference/using-api/deprecation-guide/#horizontalpodautoscaler-v126
用户应迁移清单和 API 客户端以使用自 v1.23 起可用的 API 版本:autoscaling/v2