有人误删pvc,由于pod还在使用pvc,所以现在的状态为Terminating。
恢复操作:
首先调节pv的回收策略为Retain,pv 的回收策略有三种分别是:
Retain:PV的默认回收策略,删除pvc后,挂载卷的数据会保留。可以通过kubectl get pv看到
Recycle:删除卷的内容并使卷可用于再次声明。通过这种方式,持久卷可以被不同的持久卷声明和pod反复使用。但是删除pv以后,挂载卷的数据会被删除掉。
Delete:删除底层存储。
调节pv的回收策略为Retain,如果是Retain则省略此步:
kubectl edit pv PVNAME
备份pvc yml
kubectl get pvc PVCNAME -o yaml > PVCNAME.yml
停止相关pod,当pod停止后,相关pvc会删除;
# 删除pod
kubectl -n test scale deploy nginx --replicas=0
# 查看pvc
kubectl get pvc
修改pv,删除以前的绑定信息:
kubectl edit pv PVNAME
# 找到如下内容并删除,共7行
# claimRef:
# apiVersion: v1
# kind: PersistentVolumeClaim
# name: data-apisix-etcd-1
# namespace: arexpert
# resourceVersion: "15491"
# uid: 050108cd-ba8e-4f2f-9345-dbca90a43c85
删除完成后,保存退出,重新创建pvc,并查看状态,启动pod,查看状态
kubectl apply -f PVCNAME.yml
kubectl get pvc
kubectl -n test scale deploy nginx --replicas=0
至此,pvc恢复完成。