背景
在删除不用的pv时,误删除了一个正在使用的pv,下面总结一下如何恢复。
过程
之前的没有截图,我创建了一个nginx pod,挂载pv,模拟一下误删除场景。
查看pv并删除
kubectl get pv | grep long
kubectl delete pv pvc-2ace3553-b8e6-4ef8-8149-4cb372064d36
此时pv处于Terminating状态,这是因为pv有finalizers。
finalizers:
- kubernetes.io/pv-protection
- external-attacher/driver-longhorn-io
注意,只删除了pv,pod和pvc都没有删除。
恢复
保存pv的yaml文件
kubectl get pv pvc-2ace3553-b8e6-4ef8-8149-4cb372064d36 -o yaml > pv.yaml
编辑pv删除finalizers字段
kubectl edit pv pvc-2ace3553-b8e6-4ef8-8149-4cb372064d36
此时pv已经被删除了。
编辑pv.yaml,删除delete字段
deletionGracePeriodSeconds: 0
deletionTimestamp: ""
重新apply pv
kubectl apply -f pv.yaml
kubectl get pv | grep long
pv状态变为Bound,恢复成功。