pv pvc 回收机制简单探究
cat nfs-pv.yamlapiVersion: v1kind: PersistentVolumemetadata: 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: v1kind: PersistentVolumemetadata: 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.yamlkubectl get pvpv 采用的Retain 回收模式 第一次创建状态处于Available 可用状态。
创建pvc文件
cat nfs-pvc.yaml #######################################pvc################################kind: PersistentVolumeClaimapiVersion: v1metadata: name: pvc-nfs-03 #创建的pvc名称 namespace: mt-math #属于的命名空间 spec: accessModes: - ReadWriteMany #请求访问的权限 resources: requests: storage: 1Gi #请求容量为1G storageClassName: pv-nfs-pv03 #创建pv的时候如果指定了标签.那么可在pvc中指定标签进行一一对应.这里其实采用的是storageClassName进行名称绑定的.(在容量和权限一致的情况下)---kind: PersistentVolumeClaimapiVersion: v1metadata: 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.yamlkubectl get pvc -n mt-mathkubectl get pvpvc 成功绑定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.deleteRetain 管理员回收: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策略5.storageClassName :在pvc的请求存储大小和访问权限与创建的pv一致的情况下 根据storageClassName进行与pv绑定。常用在pvc需要和特定pv进行绑定的情况下。举例:当有创建多个pv设置存储的大小和访问权限一致时,且pv,pvc没有配置storageClassName时,pvc会根据存储大小和访问权限去随机匹配。如果配置了storageClassName会根据这三个条件进行匹配。当然也可以用其他方法实现pvc与特定pv的绑定如标签.标签方法上一篇就是,这里就不再赘述。