跨多个/所有 Kubernetes 命名空间删除资源类型的所有实例

Mar*_*els 5 kubernetes google-kubernetes-engine cert-manager kubectl

我正在尝试在 Kubernetes 集群上卸载并重新安装 cert-manager。他们的卸载文档提到:

在继续之前,请确保用户创建的所有 cert-manager 资源均已删除。您可以使用以下命令检查任何现有资源:

$ kubectl get Issuers,ClusterIssuers,Certificates,CertificateRequests,Orders,Challenges --all-namespaces

该命令输出数百个资源,分布在二十几个命名空间中。

如何有效地删除它们,而不删除命名空间中的其他任何内容?

kubectl delete命令在删除所有特定类型时需要指定命名空间,如下所示:kubectl delete certificates -n example-ns,所以这在这里不好。

在指定的同时按名称删除每个循环-A也不起作用,因为我需要指定名称空间:

$ kubectl delete -A order.certmanager.k8s.io/fcfa95477bc0149dbc16c99c54faa82e-cert-1862418815
error: a resource cannot be retrieved by name across all namespaces
Run Code Online (Sandbox Code Playgroud)

这里正确的 cli 魔法是什么?

Jon*_*nas 5

您应该删除整个crd(自定义资源定义),首先列出您的 CRD

kubectl get crd
Run Code Online (Sandbox Code Playgroud)

然后删除 CRD,例如(作为Issuer示例)

kubectl delete crd issuer.<something>.<something>
Run Code Online (Sandbox Code Playgroud)

当删除 CRD 时,该 CRD 的所有实例(例如 的所有资源kind: Issuer)也将被删除。