永続ボリューム要求の削除

Compute Cloud@Customerで、PVCを削除するには、まずそのPVCを使用しているすべてのポッドを削除します。ポッドがまだPVCを使用している間にPVCを削除しようとすると、PVCは終了状態でスタックし、削除されません。そのPVCを使用しているすべてのポッドが削除されると、PVCは削除されます。

  1. PVCを使用しているすべてのポッドをリストします。

    JSONオブジェクトを問い合せるためのJQコマンドライン・ユーティリティがインストールされていることを確認します。

    次のコマンドを使用して、削除するPVCに関連付けられているすべてのネームスペースのポッドをリストします。

    $ kubectl get pods --all-namespaces -o=json | jq -c '.items[] | {name: .metadata.name, namespace: .metadata.namespace, claimName: .spec | select(has("volumes")).volumes[] | select(has("persistentVolumeClaim")).persistentVolumeClaim.claimName} | select(.claimName != null)'
    
    {"name":"pod1_name","namespace":"namespace1_name","claimName":"claim1_name"}
    {"name":"pod2_name","namespace":"namespace1_name","claimName":"claim1_name"}
    {"name":"pod3_name","namespace":"namespace2_name","claimName":"claim2_name"}

    現在のネームスペースでのみポッドをリストするには、--all-namespacesオプションを省略しない点を除き、前述のコマンドと同じコマンドを使用します。

  2. PVCを使用しているすべてのポッドを削除します。

    削除するclaimNameに関連付けられているkubectl get podsコマンドでレポートされるポッド名を使用します。

    $ kubectl delete pod pod1_name
                   pod2_name
                
  3. PVCを削除します。

    $ kubectl delete pvc claim1_name
                
  4. (オプション) PVを削除します。

    Persistent Volume Reclaim PolicyがDeleteの場合、このPVに関連付けられているすべてのPVCが削除されると、PVは自動的に削除されます。

    すべてのPVCをリストするには、kubectl get pvcコマンドを使用します。

    「Persistent Volume Reclaim Policy」が「Retain」の場合、次のコマンドを使用してPVを削除できます。

    $ kubectl delete pv pv_name