这篇文章已超过一年。较旧的文章可能包含过时的内容。请检查页面上的信息自发布以来是否已变得不正确。
Kubernetes v1.27 中的移除和重大变更
随着 Kubernetes 的发展和成熟,为了项目的整体健康,某些功能可能会被弃用、删除或替换为更好的功能。基于 v1.27 版本流程中当前可用的信息(该流程仍在进行中,可能会引入其他更改),本文将识别并描述 Kubernetes v1.27 版本计划的一些更改。
关于 k8s.gcr.io 重定向到 registry.k8s.io 的说明
为了托管其容器镜像,Kubernetes 项目使用一个名为 registry.k8s.io 的社区拥有的镜像注册表。3 月 20 日,所有来自过时的 k8s.gcr.io 注册表的流量都将被重定向到 registry.k8s.io。已弃用的 k8s.gcr.io 注册表最终将被淘汰。
此更改意味着什么?
如果您是子项目维护者,则必须更新您的清单和 Helm 图表以使用新的注册表。
v1.27 Kubernetes 版本将不会发布到旧的注册表。
从 4 月开始,v1.24、v1.25 和 v1.26 的补丁版本将不再发布到旧的注册表。
我们有一篇 博客文章,其中包含有关此更改的所有信息以及如果它影响您时该怎么做。
Kubernetes API 删除和弃用过程
Kubernetes 项目具有文档完善的 功能弃用策略。该策略规定,只有在同一 API 的更新、稳定版本可用时,才能弃用稳定的 API,并且 API 的每个稳定性级别都有最低生存期。已弃用的 API 已被标记为在未来的 Kubernetes 版本中删除,它将继续运行直到删除(至少从弃用起一年),但是使用将导致显示警告。删除的 API 在当前版本中不再可用,此时您必须迁移到使用替换 API。
一般可用 (GA) 或稳定的 API 版本可能会被标记为已弃用,但不得在 Kubernetes 的主要版本中删除。
Beta 或预发布 API 版本必须在弃用后支持 3 个版本。
Alpha 或实验性 API 版本可以在任何版本中删除,而无需事先发出弃用通知。
无论是由于功能从 beta 升级到稳定而删除 API,还是因为该 API 根本没有成功,所有删除都符合此弃用策略。每当删除 API 时,都会在文档中传达迁移选项。
Kubernetes v1.27 的 API 删除和其他更改
从 CSIStorageCapacity
中删除 storage.k8s.io/v1beta1
CSIStorageCapacity API 支持通过 CSIStorageCapacity 对象公开当前可用的存储容量,并增强了使用延迟绑定的 CSI 卷的 Pod 的调度。CSIStorageCapacity 的 storage.k8s.io/v1beta1
API 版本在 v1.24 中已弃用,并且在 v1.27 中将不再提供服务。
迁移清单和 API 客户端以使用自 v1.24 起可用的 storage.k8s.io/v1
API 版本。所有现有的持久化对象都可以通过新的 API 访问。
有关详细信息,请参阅 用于 Pod 调度的存储容量约束 KEP。
Kubernetes v1.27 不会删除任何其他 API;但是,其他几个方面将被删除。请继续阅读详细信息。
对已弃用 seccomp 注释的支持
在 Kubernetes v1.19 中,seccomp(安全计算模式)支持已升级为通用可用性 (GA)。此功能可用于通过限制 Pod(适用于所有容器)或单个容器的系统调用来提高工作负载安全性。
对 alpha seccomp 注释 seccomp.security.alpha.kubernetes.io/pod
和 container.seccomp.security.alpha.kubernetes.io
的支持自 v1.19 起已弃用,现在已完全删除。创建带有 seccomp 注释的 Pod 时,不再自动填充 seccomp 字段。Pod 应改为使用相应的 pod 或容器 securityContext.seccompProfile
字段。
删除卷扩展的多个功能门
以下用于 卷扩展 GA 功能的功能门将被删除,并且不再必须在 --feature-gates
标志中引用
ExpandCSIVolumes
- 启用 CSI 卷的扩展。
ExpandInUsePersistentVolumes
- 启用正在使用 PVC 的扩展。
ExpandPersistentVolumes
- 启用持久卷的扩展。
删除 --master-service-namespace
命令行参数
kube-apiserver 接受一个已弃用的命令行参数 --master-service-namespace
,该参数指定在何处创建名为 kubernetes
的 Service 以表示 API 服务器。Kubernetes v1.27 将删除自 v1.26 版本以来已弃用的该参数。
删除 ControllerManagerLeaderMigration
功能门
领导者迁移 提供了一种机制,通过该机制,HA 集群可以通过 kube-controller-manager
和 cloud-controller-manager
之间共享的资源锁安全地迁移“云特定”控制器,同时升级复制的控制平面。
自 v1.24 以来,GA 的 ControllerManagerLeaderMigration
功能已无条件启用,并且在 v1.27 版本中,该功能门选项将被删除。如果您显式设置此功能门,则需要将其从命令行参数或配置文件中删除。
删除 --enable-taint-manager
命令行参数
kube-controller-manager 命令行参数 --enable-taint-manager
已弃用,将在 Kubernetes v1.27 中删除。它支持的功能 基于污点的驱逐 默认已启用,并且在删除该标志后将继续隐式启用。
删除 --pod-eviction-timeout
命令行参数
已弃用的命令行参数 --pod-eviction-timeout
将从 kube-controller-manager 中删除。
删除 CSI Migration
功能门
CSI 迁移计划允许从内联卷插件迁移到外联 CSI 驱动程序。自 Kubernetes v1.16 以来,CSI 迁移已普遍可用,并且相关的 CSIMigration
功能门将在 v1.27 中删除。
删除 CSIInlineVolume
功能门
CSI 临时卷功能允许直接在 pod 规范中指定 CSI 卷以用于临时用例。它们可用于使用已挂载的卷直接在 pod 内注入任意状态,例如配置、机密、身份、变量或类似信息。此功能在 v1.25 中升级为 GA。因此,功能门 CSIInlineVolume
将在 v1.27 版本中删除。
删除 EphemeralContainers
功能门
临时容器 在 v1.25 中升级为 GA。这些是临时存在的容器,在现有 pod 的命名空间内执行。临时容器通常由用户启动,以便观察其他 pod 和容器的状态以进行故障排除和调试。对于 Kubernetes v1.27,对临时容器的 API 支持已无条件启用;EphemeralContainers
功能门将被删除。
删除 LocalStorageCapacityIsolation
功能门
本地临时存储容量隔离功能在 v1.25 中移至 GA。该功能提供了对 pod 之间本地临时存储(例如 emptyDir
卷)的容量隔离的支持,以便可以严格限制 pod 对共享资源的消耗。如果本地临时存储的消耗超过配置的限制,kubelet 将驱逐 Pod。功能门 LocalStorageCapacityIsolation
将在 v1.27 版本中删除。
删除 NetworkPolicyEndPort
功能门
Kubernetes 的 v1.25 版本将 NetworkPolicy 中的 endPort
提升为 GA。支持 endPort
字段的 NetworkPolicy 提供程序可用于指定要应用 NetworkPolicy 的端口范围。以前,每个 NetworkPolicy 只能以单个端口为目标。因此,此版本将删除功能门 NetworkPolicyEndPort
。
请注意,endPort
字段必须由 Network Policy 提供程序支持。如果您的提供程序不支持 endPort
,并且在 Network Policy 中指定了此字段,则将创建仅覆盖端口字段(单个端口)的 Network Policy。
删除 StatefulSetMinReadySeconds
功能门
对于属于 StatefulSet 的 pod,只有在 Pod 可用(并通过检查)至少在 minReadySeconds
中指定的时间段后,Kubernetes 才能将 Pod 标记为就绪。该功能在 Kubernetes v1.25 中变为通用可用,并且 StatefulSetMinReadySeconds
功能门将被锁定为 true 并在 v1.27 版本中删除。
删除 IdentifyPodOS
功能门
您可以为 Pod 指定操作系统,自 v1.25 版本起,此功能的支持已稳定。IdentifyPodOS
功能门将在 Kubernetes v1.27 中被移除。
移除 DaemonSetUpdateSurge
功能门
Kubernetes 的 v1.25 版本也稳定了 DaemonSet Pod 的 surge 支持,该支持旨在最大限度地减少滚动更新期间 DaemonSet 的停机时间。DaemonSetUpdateSurge
功能门将在 Kubernetes v1.27 中被移除。
移除 --container-runtime
命令行参数
kubelet 接受一个已弃用的命令行参数 --container-runtime
,并且在 dockershim 代码移除后,唯一有效的值将是 remote
。 Kubernetes v1.27 将移除该参数,该参数自 v1.24 版本起已弃用。
展望未来
Kubernetes v1.29 计划的API 删除的官方列表包括:
- FlowSchema 和 PriorityLevelConfiguration 的
flowcontrol.apiserver.k8s.io/v1beta2
API 版本在 v1.29 中将不再提供服务。
想了解更多?
弃用声明会在 Kubernetes 发行说明中公布。您可以在以下版本的发行说明中查看待弃用的公告:
我们将作为该版本的变更日志的一部分,正式宣布 Kubernetes v1.27 的弃用。
有关弃用和移除过程的信息,请查看官方 Kubernetes 的弃用策略文档。