Kubernetes v1.31 中的移除和主要变更

 互联网   2024-07-25 14:34   334 人阅读  0 条评论

Kubernetes v1.31 中的移除和主要变更  第1张

author: Abigail McCarthy, Edith Puclla, Matteo Bianchi, Rashan Smith, Yigit Demirbas

translator: Xin Li (DaoCloud)

随着 Kubernetes 的发展和成熟,为了项目的整体健康,某些特性可能会被弃用、删除或替换为更好的特性。本文阐述了 Kubernetes v1.31 版本的一些更改计划,发行团队认为你应当了解这些更改, 以便持续维护 Kubernetes 环境。下面列出的信息基于 v1.31 版本的当前状态;这些状态可能会在实际发布日期之前发生变化。

Kubernetes API 删除和弃用流程

Kubernetes 项目针对其功能特性有一个详细说明的弃用策略[1]。此策略规定,只有当某稳定 API 的更新、稳定版本可用时,才可以弃用该 API,并且 API 的各个稳定性级别都有对应的生命周期下限。已弃用的 API 标记为在未来的 Kubernetes 版本中删除, 这类 API 将继续发挥作用,直至被删除(从弃用起至少一年),但使用时会显示警告。已删除的 API 在当前版本中不再可用,因此你必须将其迁移到替换版本。

  • 正式发布的(GA)或稳定的 API 版本可被标记为已弃用,但不得在 Kubernetes 主要版本未变时删除。

  • Beta 或预发布 API 版本在被弃用后,必须保持 3 个发布版本中仍然可用。

  • Alpha 或实验性 API 版本可以在任何版本中删除,不必提前通知。

无论 API 是因为某个特性从 Beta 版升级到稳定版,还是因为此 API 未成功而被删除,所有删除都将符合此弃用策略。每当删除 API 时,迁移选项都会在文档[2]中传达。

关于 SHA-1 签名支持的说明

在 go1.18[3](2022 年 3 月发布)中,crypto/x509 库开始拒绝使用 SHA-1 哈希函数签名的证书。虽然 SHA-1 被确定为不安全,并且公众信任的证书颁发机构自 2015 年以来就没有颁发过 SHA-1 证书, 但在 Kubernetes 环境中,仍可能存在用户提供的证书通过私人颁发机构使用 SHA-1 哈希函数签名的情况, 这些证书用于聚合 API 服务器或 Webhook。如果你依赖基于 SHA-1 的证书,则必须通过在环境中设置 GODEBUG=x509sha1=1 以明确选择重新支持这种证书。

鉴于 Go 的 GODEBUG 兼容性策略[4]x509sha1 GODEBUG 和对 SHA-1 证书的支持将 在 2025 年上半年发布的 go1.24[5]中完全消失。如果你依赖 SHA-1 证书,请开始放弃使用它们。

请参阅 Kubernetes 问题 #125689[6], 以更好地了解对 SHA-1 支持的时间表,以及 Kubernetes 发布采用 go1.24 的计划时间、如何通过指标和审计日志检测 SHA-1 证书使用情况的更多详细信息。

Kubernetes 1.31 中的弃用和删除

弃用节点的 status.nodeInfo.kubeProxyVersion 字段(KEP 4004[7]

Node 的 .status.nodeInfo.kubeProxyVersion 字段在 Kubernetes v1.31 中将被弃用, 并将在后续版本中删除。该字段被弃用是因为其取值原来不准确,并且现在也不准确。该字段由 kubelet 设置,而 kubelet 没有关于 kube-proxy 版本或 kube-proxy 是否正在运行的可靠信息。

在 v1.31 中,DisableNodeKubeProxyVersion特性门控[8]将默认设置为 true, 并且 kubelet 将不再尝试为其关联的 Node 设置 .status.kubeProxyVersion 字段。

删除所有云驱动的树内集成组件

正如之前一篇文章[9]中所强调的, v1.31 版本将删除云驱动集成的树内支持的最后剩余部分。这并不意味着你无法与某云驱动集成,只是你现在必须使用推荐的外部集成方法。一些集成组件是 Kubernetes 项目的一部分,其余集成组件则是第三方软件。

这一里程碑标志着将所有云驱动集成组件从 Kubernetes 核心外部化的过程已经完成 (KEP-2395[10]), 该过程从 Kubernetes v1.26 开始。这一变化有助于 Kubernetes 进一步成为真正的供应商中立平台。

有关云驱动集成的更多详细信息,请阅读我们的 v1.29 云驱动集成特性的博客[11]。有关树内代码删除的更多背景信息,请阅读 (v1.29 弃用博客[12])。

后一个博客还包含对需要迁移到 v1.29 及更高版本的用户有用的信息。

删除 kubelet --keep-terminated-pod-volumes 命令行标志

kubelet 标志 --keep-terminated-pod-volumes 已于 2017 年弃用,将在 v1.31 版本中被删除。

你可以在拉取请求 #122082[13]中找到更多详细信息。

删除 CephFS 卷插件

CephFS 卷插件[14]已在此版本中删除, 并且 cephfs 卷类型已无法使用。

建议你改用 CephFS CSI 驱动程序[15] 作为第三方存储驱动程序。如果你在将集群版本升级到 v1.31 之前在使用 CephFS 卷插件,则必须重新部署应用才能使用新驱动。

CephFS 卷插件在 v1.28 中正式标记为已弃用。

删除 Ceph RBD 卷插件

v1.31 版本将删除 Ceph RBD 卷插件[16]及其 CSI 迁移支持,rbd 卷类型将无法继续使用。

建议你在集群中使用 RBD CSI 驱动[17]。如果你在将集群版本升级到 v1.31 之前在使用 Ceph RBD 卷插件,则必须重新部署应用以使用新驱动。

Ceph RBD 卷插件在 v1.28 中正式标记为已弃用。

kube-scheduler 中非 CSI 卷限制插件的弃用

v1.31 版本将弃用所有非 CSI 卷限制调度程序插件, 并将从默认插件[18]中删除一些已弃用的插件,包括:

  • AzureDiskLimits
  • CinderLimits
  • EBSLimits
  • GCEPDLimits

建议你改用 NodeVolumeLimits 插件,因为它可以处理与已删除插件相同的功能,因为这些卷类型已迁移到 CSI。如果你在调度器配置[19]中显式使用已弃用的插件, 请用 NodeVolumeLimits 插件替换它们。AzureDiskLimitsCinderLimitsEBSLimits 和 GCEPDLimits 插件将在未来的版本中被删除。

这些插件将从默认调度程序插件列表中删除,因为它们自 Kubernetes v1.14 以来已被弃用。

展望未来

Kubernetes v1.32[20] 计划删除的官方 API 包括:

  • 将删除 flowcontrol.apiserver.k8s.io/v1beta3 API 版本的 FlowSchema 和 PriorityLevelConfiguration。为了做好准备,你可以编辑现有清单并重写客户端软件以使用自 v1.29 起可用的 flowcontrol.apiserver.k8s.io/v1 API 版本。所有现有的持久化对象都可以通过新 API 访问。flowcontrol.apiserver.k8s.io/v1beta3 中需要注意的变化包括优先级配置spec.limited.nominalConcurrencyShares 字段仅在未指定时默认为 30,并且显式设置为 0 的话不会被更改为 30。

有关更多信息,请参阅 API 弃用指南[21]

想要了解更多?

Kubernetes 发行说明中会宣布弃用信息。我们将在 Kubernetes v1.31[22]中正式宣布弃用信息,作为该版本的 CHANGELOG 的一部分。

你可以在发行说明中看到待弃用的公告:

  • Kubernetes v1.30[23]

  • Kubernetes v1.29[24]

  • Kubernetes v1.28[25]

  • Kubernetes v1.27[26]

参考资料
[1]

弃用策略: https://kubernetes.io/zh-cn/docs/reference/using-api/deprecation-policy/

[2]

文档: https://kubernetes.io/zh-cn/docs/reference/using-api/deprecation-guide/

[3]

go1.18: https://go.dev/doc/go1.18#sha1

[4]

GODEBUG 兼容性策略: https://go.dev/blog/compat

[5]

在 2025 年上半年发布的 go1.24: https://tip.golang.org/doc/go1.23

[6]

Kubernetes 问题 #125689: https://github.com/kubernetes/kubernetes/issues/125689

[7]

KEP 4004: https://github.com/kubernetes/enhancements/issues/4004

[8]

特性门控: https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/feature-gates/

[9]

之前一篇文章: https://kubernetes.io/blog/2024/05/20/completing-cloud-provider-migration/

[10]

KEP-2395: https://github.com/kubernetes/enhancements/blob/master/keps/sig-cloud-provider/2395-removing-in-tree-cloud-providers/README.md

[11]

v1.29 云驱动集成特性的博客: https://kubernetes.io/zh-cn/blog/2023/12/14/cloud-provider-integration-changes/

[12]

v1.29 弃用博客: https://kubernetes.io/blog/2023/11/16/kubernetes-1-29-upcoming-changes/#removal-of-in-tree-integrations-with-cloud-providers-kep-2395-https-kep-k8s-io-2395

[13]

#122082: https://github.com/kubernetes/kubernetes/pull/122082

[14]

CephFS 卷插件: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes/#cephfs

[15]

CephFS CSI 驱动程序: https://github.com/ceph/ceph-csi/

[16]

Ceph RBD 卷插件: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes/#rbd

[17]

RBD CSI 驱动: https://github.com/ceph/ceph-csi/

[18]

默认插件: https://kubernetes.io/zh-cn/docs/reference/scheduling/config/

[19]

调度器配置: https://kubernetes.io/zh-cn/docs/reference/scheduling/config/

[20]

Kubernetes v1.32: https://kubernetes.io/zh-cn/docs/reference/using-api/deprecation-guide/#v1-32

[21]

API 弃用指南: /docs/reference/using-api/deprecation-guide/#v1-32

[22]

Kubernetes v1.31: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.31.md#deprecation

[23]

Kubernetes v1.30: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.30.md#deprecation

[24]

Kubernetes v1.29: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#deprecation

[25]

Kubernetes v1.28: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#deprecation

[26]

Kubernetes v1.27: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#deprecation


本文地址:https://dockerworld.cn/?id=383
温馨提示:文章内容系作者个人观点,不代表Docker中文社区对观点赞同或支持。
版权声明:本文为转载文章,来源于 互联网 ,版权归原作者所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?