开发者社区> 阿里云容器服务 ACK> 正文

Kubernetes中将Delete类型的PV更新为Retain类型

简介: 回收策略典型的StorageClass模板如下所示,通过reclaimPolicy 字段定义生成PV的回收策略:apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: alicloud-disk-efficiency...

回收策略

典型的StorageClass模板如下所示,通过reclaimPolicy 字段定义生成PV的回收策略:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-disk-efficiency
parameters:
  type: cloud_efficiency
provisioner: alicloud/disk
reclaimPolicy: Delete

reclaimPolicy两种常用取值:Delete、Retain;

Delete:表示删除PVC的时候,PV也会一起删除,同时也删除PV所指向的实际存储空间;

Retain:表示删除PVC的时候,PV不会一起删除,而是变成Released状态等待管理员手动清理;

这两种配置各有优缺点:

Delete:

优点:实现数据卷的全生命周期管理,应用删除PVC会自动删除后端云盘。能有效避免出现大量闲置云盘没有删除的情况。
缺点:删除PVC时候一起把后端云盘一起删除,如果不小心误删pvc,会出现后端数据丢失;

Retain:

优点:后端云盘需要手动清理,所以出现误删的可能性比较小;
缺点:没有实现数据卷全生命周期管理,常常会造成pvc、pv删除后,后端云盘闲置往清理,长此以往导致大量磁盘浪费。

阿里云容器服务遵循了K8S官方建议,对云盘数据卷StorageClass默认提供的是Delete配置,这样最大程度避免出现大量闲置磁盘,且提供云盘的全生命周期管理,但是需要您对PVC删除操作格外小心。

当然如果您不想使用Delete这种配置,可以自己定义StorageClass,使用Retain模式,例如:

kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
  name: alicloud-disk-ssd-retain
provisioner: alicloud/disk
parameters:
  type: cloud_ssd
reclaimPolicy: Retain

更新PV模板

通过上述Delete配置的StorageClass创建的PV如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  labels:
    failure-domain.beta.kubernetes.io/region: cn-zhangjiakou
    failure-domain.beta.kubernetes.io/zone: cn-zhangjiakou-a
  name: d-8vbidmq57w4df6k84zem
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 20Gi
  flexVolume:
    driver: alicloud/disk
    fsType: ext4
    options:
      VolumeId: d-8vbidmq57w4df6k84zem
  persistentVolumeReclaimPolicy: Delete
  storageClassName: alicloud-disk-efficiency

如果您已经创建了上面的pv并且在使用中,现在希望将pv的回收策略变成Retain模式,可以直接修改PV参数值:

执行edit命令,直接修改persistentVolumeReclaimPolicy的值为Retain,然后:wq 保存退出。
# kubectl edit pv d-8vbidmq57w4df6k84zem

...
  persistentVolumeReclaimPolicy: Retain
...  

此时删除PVC并不会把pv删除;

# kubectl get pv | grep d-8vbidmq57w4df6k84zem
d-8vbidmq57w4df6k84zem   20Gi       RWO            Retain           Released   default/datadir-zookeeper-default-zookeeper-2   alicloud-disk-efficiency            7h1m

反之,将Retain类型的PV变成Delete类型也是一个方法。

版权声明:本文中所有内容均属于阿里云开发者社区所有,任何媒体、网站或个人未经阿里云开发者社区协议授权不得转载、链接、转贴或以其他方式复制发布/发表。申请授权请邮件developerteam@list.alibaba-inc.com,已获得阿里云开发者社区协议授权的媒体、网站,在转载使用时必须注明"稿件来源:阿里云开发者社区,原文作者姓名",违者本社区将依法追究责任。 如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
上一篇:Kubernetes环境中使用NAS动态存储卷
阿里云容器服务 ACK
使用钉钉扫一扫加入圈子
+ 订阅

云端最佳容器应用运行环境,安全、稳定、极致弹性

官方博客
官网链接