我正在嘗試在 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
)也將被刪除。