[英]How do I delete all the disks in a deployment in Kubernetes?
我想刪除附加到自定義部署的所有持久卷聲明。 首先,我刪除了刪除所有 Pod 但磁盤沒有刪除的部署本身。
我知道刪除 pvc 的命令,但這涉及使用命令 [1] 獲取所有 pvc,然后手動復制粘貼 [2] 屬於部署集的那些。
如果我想以編程方式執行此操作,我應該使用 Kubernetes Python 客戶端的哪個 API 或 cli 命令?
我正在使用 GKE。
我嘗試閱讀Python 客戶端文檔,但無法推斷出如何執行此任務。
[1] kubectl --namespace=<my_namespace> --context=<my_cluster> get pvc
[2] kubectl --namespace=<my_namespace> --context=<cluster_name> delete pvc data-avirals-july19-1-devel-0 data-avirals-july19-1-devel-1
可能有一些更短的方法,但是這個方法會過濾與部署名稱MY_DEPLOYMENT_NAME
關聯的所有 pvc。 其他pvc
(不與同一部署關聯)不會被觸及。
for volume in $(kubectl get deployments MY_DEPLOYMENT_NAME -o jsonpath='{.spec.template.spec.volumes[*].name}');
do
kubectl get pv $volume -o jsonpath='{.spec.claimRef.name}{"\n"}' ;
# kubectl delete pvc "$(kubectl get pv $volume -o jsonpath='{.spec.claimRef.name}{"\n"}')"
done
筆記:
kubectl delete
命令以真正刪除 pvc。 它的評論是為了保護用戶不被意外刪除。bash
才能使此循環工作。 解釋:
以下命令將列出名為MY_DEPLOYMENT_NAME
的部署所使用的卷
kubectl get deployments MY_DEPLOYMENT_NAME -o jsonpath='{.spec.template.spec.volumes[*].name}'
現在,我們將遍歷這些卷,以找出這些卷使用的claim
是什么。 這是我檢查claimRef
部分完成的。 這是通過以下方式完成的:
kubectl get pv $volume -o jsonpath='{.spec.claimRef.name}{"\n"}'
您可以使用以下命令一次刪除所有 pvc:
kubectl --namespace=<my_namespace> delete pvc --all
之后應該刪除 PV,但這可能需要一些時間。 此外,使用此命令要非常小心,並確保您正在刪除您打算刪除的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.