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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 回收策略典型的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类型也是一个方法。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
22小时前
|
Kubernetes 负载均衡 网络协议
在k8S中,Servic类型有哪些?
在k8S中,Servic类型有哪些?
|
21小时前
|
存储 Kubernetes 网络协议
在K8S中,有哪几种控制器类型?
在K8S中,有哪几种控制器类型?
|
21小时前
|
存储 Kubernetes NoSQL
在K8S中,etcd是什么类型数据库?
在K8S中,etcd是什么类型数据库?
|
22小时前
|
存储 运维 Kubernetes
在k8S中,生产环境的pv回收策略该如何选择?
在k8S中,生产环境的pv回收策略该如何选择?
|
22小时前
|
存储 Kubernetes 容器
在k8S中,PV生命周期内的阶段有哪些?
在k8S中,PV生命周期内的阶段有哪些?
|
22小时前
|
存储 Kubernetes 调度
在k8S中,PV和PVC如何使用?
在k8S中,PV和PVC如何使用?
|
1天前
|
Prometheus Kubernetes 监控
在k8S中,DaemonSet类型的资源特性有哪些?
在k8S中,DaemonSet类型的资源特性有哪些?
|
1天前
|
Kubernetes 监控 调度
在K8S中,DaemonSet类型资源特性?
在K8S中,DaemonSet类型资源特性?
|
1天前
|
存储 Kubernetes 容器
在K8S中,PV生命周期状态有哪些?
在K8S中,PV生命周期状态有哪些?
|
1天前
|
存储 Kubernetes 调度
在K8S中,PV和PVC是如何关联?
在K8S中,PV和PVC是如何关联?

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多