TL;博士。我不知道删除 PVC 后如何访问数据,以及为什么删除 PVC 后 PV 不会消失。
我正在采取的步骤:
-
手动在GCE中创建磁盘:
gcloud compute disks create --size 5Gi disk-for-rabbitmq --zone europe-west1-b
-
ran:
kubectl apply -f /tmp/pv-and-pvc.yaml
具有以下配置:
# /tmp/pv-and-pvc.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-for-rabbitmq
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 5Gi
gcePersistentDisk:
fsType: ext4
pdName: disk-for-rabbitmq
persistentVolumeReclaimPolicy: Delete
storageClassName: standard
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-for-rabbitmq
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: standard
volumeName: pv-for-rabbitmq
-
手动删除 PVC(在较高级别上:我在这里模拟灾难性场景,例如意外删除或错误配置helm
发布):
kubectl delete pvc pvc-for-rabbitmq
此时我看到以下内容:
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv-for-rabbitmq 5Gi RWO Delete Released staging/pvc-for-rabbitmq standard 8m
$
一个附带问题,只是提高我的理解:为什么 PV 仍然存在,尽管它有一个回收政策Delete
?这不就是这个吗docs https://kubernetes.io/docs/concepts/storage/persistent-volumes/#delete说对于Delete
回收政策?
现在,如果我尝试重新创建 PVC 以重新访问 PV 中的数据:
$ kubectl apply -f /tmp/pv-and-pvc.yaml
persistentvolume "pv-for-rabbitmq" configured
persistentvolumeclaim "pvc-for-rabbitmq" created
$
我仍然得到这个pv
s,例如PV 卡在Released
state:
$
kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv-for-rabbitmq 5Gi RWO Delete Released staging/pvc-for-rabbitmq standard 15m
$
...我得到这个pvc
s:
$
kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-for-rabbitmq Pending pv-for-rabbitmq 0 standard 1m
$
看起来我的 PV 被卡住了Released
状态,PVC无法访问不在状态的PVAvailable
status.
那么,为什么同一个PV和PVC不能再成为好友呢?如何创建 PVC 以重新访问现有 PV 中的数据?