Kubernetes

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

  • December 10, 2020

我正在嘗試在我們的 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魔法是什麼?

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

kubectl get crd

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

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

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

引用自:https://serverfault.com/questions/1045741