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魔法是什麼?
您應該刪除整個
crd
(自定義資源定義),首先列出您的 CRDkubectl get crd
然後刪除 CRD,例如(
Issuer
用作範例)kubectl delete crd issuer.<something>.<something>
當 CRD 被刪除時,該 CRD 的所有實例(例如 的所有資源
kind: Issuer
)也被刪除。