0

我正在尝试在我的 kubernetes 集群中升级 cert-manager。目前安装的版本是 pre crd 名称更改,我正在尝试清理旧的 CRD。

> kubectl get crd | grep certmanager.k8s.io 

certificates.certmanager.k8s.io                2020-01-31T08:25:56Z
challenges.certmanager.k8s.io                  2020-01-31T08:25:56Z
clusterissuers.certmanager.k8s.io              2020-01-31T08:25:58Z
issuers.certmanager.k8s.io                     2020-01-31T08:25:03Z
orders.certmanager.k8s.io                      2020-01-31T08:25:08Z

识别出 crd 后,我将其删除:

> kubectl delete customresourcedefinition certificates.certmanager.k8s.io challenges.certmanager.k8s.io clusterissuers.certmanager.k8s.io issuers.certmanager.k8s.io orders.certmanager.k8s.io

customresourcedefinition.apiextensions.k8s.io "certificates.certmanager.k8s.io" deleted
customresourcedefinition.apiextensions.k8s.io "challenges.certmanager.k8s.io" deleted
customresourcedefinition.apiextensions.k8s.io "clusterissuers.certmanager.k8s.io" deleted
customresourcedefinition.apiextensions.k8s.io "issuers.certmanager.k8s.io" deleted
customresourcedefinition.apiextensions.k8s.io "orders.certmanager.k8s.io" deleted

删除kubectl get crd | grep certmanager.k8s.io后没有显示 crd,但大约 30 秒后它们会重新生成。我需要在哪里寻找以确定导致它们再生的原因。

所有其他 cert-manager 资源已被删除。

这是因为我似乎无法查看/编辑/删除新 CRD 中的资源,但应用更改会更新(隐藏的)资源。

4

1 回答 1

1

您遇到的行为可能是由 Istio 插件引起的。在集群中启用 Istio 时,会创建以下资源:

证书.certmanager.k8s.io,

挑战.certmanager.k8s.io,

clusterissuers.certmanager.k8s.io,

issuers.certmanager.k8s.io,和

orders.certmanager.k8s.io

.. 并且 istio 负责定期对它们进行协调。这意味着如果您手动删除它们,它们将自动重新创建。

您可以通过创建一个启用 istio 的示例集群来验证这一点,然后运行以下命令:

~$ kubectl 获取 apiservices

~$ kubectl 获取 customresourcedefinitions.apiextensions.k8s.io,和

~$ kubectl 描述 customresourcedefinitions.apiextensions.k8s.io 证书.certmanager.k8s.io

有一个带有标签“addonmanager.kubernetes.io/mode=Reconcile”的插件,根据定义,它会定期进行协调,这就是 CRD(由 Istio 管理)不断重新创建的原因。详情可以参考这个网址。请在删除之前尝试禁用插件。”

于 2020-01-31T19:58:09.430 回答