pv-pvc 回收机制简单探究

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 可用状态。

34efe64ffdf0aa66db88ef49ad3726f72b7.jpg

创建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状态

dd2cf65f1696633e225de200bc2d63e2e08.jpg

测试回收机制:删除pvc后状态后 pv由Bound状态Released状态,此状态下并不能别pvc请求绑定,只有在Available状态下才可被pvc绑定

9195aa8d9b0496aa284d6655a7b82071d80.jpg

管理员手动回收:删除pv并重新创建pv

2d4f4a9db7fab9d69a299a9453435c35696.jpg

重建pv 发现pv有重新回到Available可用状态。创建pvc重新回到Bound状态

2ecdc93379a0d2281612b767e9bfc34af0d.jpg

1dbf51c84a5da14f1aa7d7b5aa20dfda737.jpg

简单总结:

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策略
5.storageClassName :在pvc的请求存储大小和访问权限与创建的pv一致的情况下 根据storageClassName进行与pv绑定。常用在pvc需要和特定pv进行绑定的情况下。举例:当有创建多个pv设置存储的大小和访问权限一致时,且pv,pvc没有配置storageClassName时,pvc会根据存储大小和访问权限去随机匹配。如果配置了storageClassName会根据这三个条件进行匹配。当然也可以用其他方法实现pvc与特定pv的绑定如标签.标签方法上一篇就是,这里就不再赘述。

转载于:https://my.oschina.net/wangyunlong/blog/3056071

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值