呼び出して次の永続的なボリュームを作成しました
kubectl create -f nameOfTheFileContainingTheFollowingContent.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-monitoring-static-content
spec:
capacity:
storage: 100Mi
accessModes:
- ReadWriteOnce
hostPath:
path: "/some/path"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-monitoring-static-content-claim
spec:
accessModes:
- ReadWriteOnce
storageClassName: ""
resources:
requests:
storage: 100Mi
この後、pvcを削除しようとしました。しかし、このコマンドは止まりました。 kubectl describe pvc pv-monitoring-static-content-claim
を呼び出すと、次の結果が得られます
Name: pv-monitoring-static-content-claim
Namespace: default
StorageClass:
Status: Terminating (lasts 5m)
Volume: pv-monitoring-static-content
Labels: <none>
Annotations: pv.kubernetes.io/bind-completed=yes
pv.kubernetes.io/bound-by-controller=yes
Finalizers: [foregroundDeletion]
Capacity: 100Mi
Access Modes: RWO
Events: <none>
kubectl describe pv pv-monitoring-static-content
Name: pv-monitoring-static-content
Labels: <none>
Annotations: pv.kubernetes.io/bound-by-controller=yes
Finalizers: [kubernetes.io/pv-protection foregroundDeletion]
StorageClass:
Status: Terminating (lasts 16m)
Claim: default/pv-monitoring-static-content-claim
Reclaim Policy: Retain
Access Modes: RWO
Capacity: 100Mi
Node Affinity: <none>
Message:
Source:
Type: HostPath (bare Host directory volume)
Path: /some/path
HostPathType:
Events: <none>
永続ボリュームを使用する実行中のポッドはありません。誰かがPVCとPVが削除されない理由を教えてもらえますか?
なぜこれが起こったのかはわかりませんが、kubernetesダッシュボードからpvとpvcのファイナライザーを削除すると、両方が削除されました。これは、質問で説明した手順を繰り返した後に再び起こりました。バグのようです。
これは、永続的なボリュームが保護されている場合に発生します。これを相互検証できるはずです:
コマンド:
kubectl describe pvc PVC_NAME | grep Finalizers
出力:
Finalizers: [kubernetes.io/pvc-protection]
kubectl patch
を使用してファイナライザをnullに設定することにより、これを修正できます。
kubectl patch pvc PVC_NAME -p '{"metadata":{"finalizers": []}}' --type=merge
Ref; 使用中のストレージオブジェクト保護
PVは保護されています。 PVCを削除する前にPVを削除してください。また、参照されているPVCのいずれかを要求しているポッド/デプロイメントを削除します。詳細については、チェックアウトしてください 使用中のストレージオブジェクト保護
この問題は数時間前に会ったばかりです。
この参照を使用した展開を削除すると、PV/PVCは自動的に終了します。
PVがまだ存在する場合は、ReclaimPolicyがRetainに設定されているためである可能性があり、この場合、PVCがなくなっても削除されません。ドキュメントから:
PersistentVolumeには、「保持」、「リサイクル」、「削除」など、さまざまな再生ポリシーを設定できます。動的にプロビジョニングされたPersistentVolumesの場合、デフォルトの再生ポリシーは「削除」です。つまり、ユーザーが対応するPersistentVolumeClaimを削除すると、動的にプロビジョニングされたボリュームが自動的に削除されます。ボリュームに貴重なデータが含まれている場合、この自動動作は不適切な場合があります。その場合、「保持」ポリシーを使用する方が適切です。 「保持」ポリシーでは、ユーザーがPersistentVolumeClaimを削除しても、対応するPersistentVolumeは削除されません。代わりに、すべてのデータを手動で回復できるリリースフェーズに移動します
私の場合、pv
とpvc
の両方に関連付けられたポッドを削除する限り、終了ステータスのpv
とpvc
はなくなります