pv pvc 回收机制简单探究
cat nfs-pv.yaml
#######################################################
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs-pv02 #创建的pv名称可创建多个.
namespace: mt-math #属于的命名空间
spec:
capacity:
storage: 1Gi #创建的pv容量为1G
accessModes:
- ReadWriteMany #pv的访问模式:可读可写可挂在多个节点
persistentVolumeReclaimPolicy: Retain #回收策略
storageClassName: pv-nfs-pv02
nfs: #创建的pv数据来源
path: /NFS/pv02 #数据源目录
server: 192.168.0.14 #数据源ip
####################################################
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs-pv03 #创建的pv名称可创建多个.
namespace: mt-math #属于的命名空间
spec:
capacity:
storage: 1Gi #创建的pv容量为1G
accessModes:
- ReadWriteMany #pv的访问模式:可读可写可挂在多个节点
persistentVolumeReclaimPolicy: Retain #回收策略
storageClassName: pv-nfs-pv03
nfs: #创建的pv数据来源
path: /NFS/pv03 #数据源目录
server: 192.168.0.14 #数据源ip
创建pv并查看状态
kubectl create -f nfs-pv.yaml
kubectl get pv
pv 采用的Retain 回收模式 第一次创建状态处于Available 可用状态。
创建pvc文件
cat nfs-pvc.yaml
#######################################pvc################################
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-nfs-03 #创建的pvc名称
namespace: mt-math #属于的命名空间
spec:
accessModes:
- ReadWriteMany #请求访问的权限
resources:
requests:
storage: 1Gi #请求容量为1G
storageClassName: pv-nfs-pv03
#创建pv的时候如果指定了标签.那么可在pvc中指定标签进行一一对应.这里其实采用的是storageClassName进行名称绑定的.(在容量和权限一致的情况下)
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-nfs-02 #创建的pvc名称
namespace: mt-math #属于的命名空间
spec:
accessModes:
- ReadWriteMany #请求访问的权限
resources:
requests:
storage: 1Gi #请求容量为1G
storageClassName: pv-nfs-pv02
运行并查看pv,pvc状态变化
kubectl create -f nfs-pvc.yaml
kubectl get pvc -n mt-math
kubectl get pv
pvc 成功绑定pv 后 pvc状态为:Bound状态,pv由原来的Available 状态变为Bound状态
测试回收机制:删除pvc后状态后 pv由Bound状态Released状态,此状态下并不能别pvc请求绑定,只有在Available状态下才可被pvc绑定
管理员手动回收:删除pv并重新创建pv
重建pv 发现pv有重新回到Available可用状态。创建pvc重新回到Bound状态
总结:
1.pv独立于pod存在
2.pv可以创建动态pv或者静态pv。动态pv不需要手动去创建。静态pv需要手动创建
3.访问模式:ReadWriteOnce:可读可写只能mount到一个节点. ReadOnlyMany:PV能模式挂载到多个节点
4.回收规则:PV 支持的回收策略有: Retain. Recycle.delete
Retain 管理员回收:kubectl delete pv pv-name 创建:kubectl apply -f pv-name.yaml ;Retain策略 在删除pvc后PV变为Released不可用状态, 若想重新被使用,需要管理员删除pv,重新创建pv,删除pv并不会删除存储的资源,只是删除pv对象而已;若想保留数据,请使用该Retain,
Recycle策略 – 删除pvc自动清除PV中的数据,效果相当于执行 rm -rf /thevolume/*. 删除pvc时.pv的状态由Bound变为Available.此时可重新被pvc申请绑定
Delete – 删除存储上的对应存储资源,例如 AWS EBS、GCE PD、Azure Disk、OpenStack Cinder Volume 等,NFS不支持delete策略