web-dev-qa-db-ja.com

マウントされていないPVCとPVのみを削除するにはどうすればよいですか?

ポッドはほとんどの場合それらを再利用するため、PVとPVCを削除したくありません。しかし、長期的には、使用されていないPVやPVCが多く発生します。安全に掃除する方法は?

5
Pav K.

あなたがpvcを保つまで、あなたのpvは束縛状態になります。したがって、次のコマンドを使用して、未使用のPVCを削除できます。kubectl -n namespace get pvc -o name | grep myname | xargs kubectl -n namespace delete

1
abinet

すべての非バインドPVおよびPVCを削除する場合は、次のようにします。

最初にPVCを削除します。

$ kubectl -n <namespace> get pvc | tail -n +2 | grep -v Bound | \
  awk '{print $1}' | xargs -I{} kubectl -n namespace delete pvc {}

次に、PVを削除します。

$ kubectl -n <namespace> get pv | tail -n +2 | grep -v Bound | \
  awk '{print $1}' | xargs -I{} kubectl -n namespace delete pv {}
1
Rico

以前の回答はすべて有効で興味深いものです。永続ボリュームを削除する別の簡単な方法は次のとおりです。

最初に関連するpersistentvolumeclaimを削除する必要がありますが、場合によっては、persistentvolumesを自動的に削除できませんでした。 (例:「保持」再利用ポリシー)。

これは、リリースされたsatus(未使用およびマウント解除)を使用したpersistentvolumes削除の安全な構文です。

kubectl get --no-headers persistentvolumes|awk '$5=="Released" { print $1 }'|xargs echo "kubectl delete persistentvolumes"
0
Maximilien D

ええ、最初に未使用のPVCを削除する必要があります。 kubectl get pvc --all-namespacesを使用すると、対応するPVとともに、すべての名前空間にあるそれらすべてを一覧表示できます。未使用のPVを削除するには、ReclaimPolicyを変更する必要があります。これは、PVを保持するように設定されている場合、PVは削除されませんが、「リリース済み」ステータスでハングするためです。したがって、これを行うには、PVにパッチを適用する必要があります(何らかの理由でkubectl editを使用して手動で編集することはできません)。

kubectl patch pv <your-pv-name> -p '{"spec":{"persistentVolumeReclaimPolicy":"Delete"}}'
0