【问题标题】:Upgrading Controller after upgrading a CustomResourceDefinition升级 CustomResourceDefinition 后升级 Controller
【发布时间】:2022-02-15 17:22:47
【问题描述】:

在 Kubernetes 1.22 中,CustomResourceDefinition apiextensions.k8s.io/v1beta1 的 beta API 已被删除并替换为 apiextensions.k8s.io/v1。在更改 CRD 时,我意识到我的旧控制器(运算符模式,最初为 v1alpha1 编写)仍然尝试列出 apiextensions.k8s.io/v1alpha1,即使我已将 CRD 更改为 apiextensions.k8s.io/v1

我已阅读 this source,它指出,为了部署,我应该更改 API 版本,但我的情况是对此的扩展,因为我没有新 API 的控制器。

我是否需要为新的 API 版本编写新的控制器?

【问题讨论】:

  • 你看到this similar question了吗?
  • 这个问题很相似,但有一点不同。在那个问题中,运算符不是自定义的,我们已经在内部编写了运算符。因此,如果我更改 API 版本,我不确定控制器是否可以管理新的 API 版本。即使将 CRD 的 API 版本从 v1Alpha1 更改为 v1,我也会收到一条错误消息,指出控制器正在尝试使用 API 版本 v1alpha1 列出 CRD。

标签: kubernetes kubernetes-operator


【解决方案1】:

我需要为新的 API 版本编写新的控制器吗?

不幸的是,它看起来确实如此。如果您无法应用 this similar question 中描述的内容,因为您使用的是自定义控制器,那么您需要创建自己的新控制器(如果您无法更改其中的 API),它将与受支持的 API 一起使用。查看官方文档中的Custom controllers页面。

我不确定控制器是否可以管理新的 API 版本。即使将 CRD 的 API 版本从 v1Alpha1 更改为 v1,我也会收到一条错误消息,指出控制器正在尝试列出 API 版本为 v1alpha1 的 CRD。

控制器似乎有一些错误。引用[本文档中]所写的新 API 应该没有问题(看起来控制器写得不好。引用本文档中所写的新 API 应该没有问题。):

v1.22 版本将停止提供以下已弃用的 API 版本,转而使用更新、更稳定的 API 版本:

  • extensions/v1beta1 API 版本中的 Ingress 将不再提供服务
  • 迁移以使用 networking.k8s.io/v1beta1 API 版本,自 v1.14 起可用。 >可以通过新版本检索/更新现有的持久数据。

Kubernetes 1.16 将于 2019 年 9 月发布,因此请务必立即审核您的配置和集成!

  • 更改 YAML 文件以引用较新的 API
  • 更新自定义集成和控制器以调用较新的 API
  • 更新第三方工具(入口控制器、持续交付系统)以调用较新的 API

另见Kubernetes API and Feature Removals In 1.22: Here’s What You Need To Know

【讨论】:

    猜你喜欢
    • 2022-06-10
    • 2019-03-20
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    相关资源
    最近更新 更多