Kubernetes Api Service 删除后重新生成

Kubenetes ApiService regenerated after deletion

我正在尝试升级我的 kubernetes 集群中的证书管理器。目前安装的版本是 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

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

> 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 显示没有 crds,但大约 30 秒后它们会重新生成。我需要在哪里查看以确定导致它们再生的原因。

已删除所有其他证书管理器资源。

这是因为我似乎无法 view/edit/delete 新 CRD 中的资源,但应用更改会更新(隐藏的)资源。

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

certificates.certmanager.k8s.io,

challenges.certmanager.k8s.io,

clusterissuers.certmanager.k8s.io,

issuers.certmanager.k8s.io 和

orders.certmanager.k8s.io

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

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

~$ kubectl 获取 apiservices

~$ kubectl get customresourcedefinitions.apiextensions.k8s.io, and

~$ kubectl describe customresourcedefinitions.apiextensions.k8s.io certificates.certmanager.k8s.io

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