跨多個/所有 Kubernetes 命名空間刪除資源類型的所有實例

跨多個/所有 Kubernetes 命名空間刪除資源類型的所有實例

我正在嘗試在 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

這裡正確的 cli 魔法是什麼?

答案1

您應該刪除整個crd(自訂資源定義),首先列出您的 CRD

kubectl get crd

然後刪除 CRD,例如(Issuer作為範例)

kubectl delete crd issuer.<something>.<something>

當刪除 CRD 時,該 CRD 的所有實例(例如 的所有資源kind: Issuer)也將被刪除。

相關內容