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

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

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
存储 运维 Kubernetes
批处理及有状态等应用类型在 K8S 上应该如何配置?
批处理及有状态等应用类型在 K8S 上应该如何配置?
|
5月前
|
Kubernetes Cloud Native 应用服务中间件
【云原生】使用k8s创建nginx服务—通过yaml文件svc类型暴露
【云原生】使用k8s创建nginx服务—通过yaml文件svc类型暴露
103 0
|
7月前
|
存储 Kubernetes 开发工具
Kubernetes (K8s) 的几种卷类型
Kubernetes (K8s) 提供了以下几种卷类型: 1. 空白卷(emptyDir):这是一个临时的卷,它在 Pod 生命周期内存在,但在 Pod 关闭或重新启动后会被清空。 2. 主机路径卷(hostPath):将节点上的目录或文件挂载到 Pod 中,可以使用节点上的文件系统或文件。 3. 持久卷(Persistent Volume,PV):PV 是独立于 Pod 的一种资源,它可以由管理员手动创建并供 Pod 使用。PV 存储在集群中,并可以被多个 Pod 共享。 4. 持久卷声明(Persistent Volume Claim,PVC):PVC 是对 PV 的请求,它描述了所需的存
264 0
|
5月前
|
Kubernetes Cloud Native 应用服务中间件
【云原生】使用k8s创建nginx服务—通过ingress类型暴露
【云原生】使用k8s创建nginx服务—通过ingress类型暴露
|
24天前
|
存储 运维 Kubernetes
K8S基于NFS来动态创建PV【亲测可用】
K8S基于NFS来动态创建PV【亲测可用】
44 2
|
7月前
|
存储 Kubernetes 数据安全/隐私保护
kubernetes 中pv的回收策略
在Kubernetes中,持久卷(Persistent Volume,PV)的回收策略可以通过`persistentVolumeReclaimPolicy`字段来定义。这个字段有以下几个可选值:1. `Retain`:保留持久卷,不进行自动回收。当持久卷使用完成后,需要手动进行清理和释放。2. `Delete`:删除持久卷,当持久卷不再被使用时,Kubernetes会自动删除并释放它。3. `Recycle`:回收持久卷,当持久卷不再被使用时,Kubernetes会自动进行回收操作。这种回收策略主要适用于一些旧的存储后端,它会尝试清空持久卷中的数据,但不会保证数据安全。需要注意的是,`Recy
269 0
|
3月前
|
存储 Kubernetes Docker
k8s持久化储存:pv,pvc和nfs等相关技术
k8s持久化储存:pv,pvc和nfs等相关技术
|
3月前
|
存储 Kubernetes Cloud Native
云原生|kubernetes|持久化存储pv,pvc和StorageClass的学习
云原生|kubernetes|持久化存储pv,pvc和StorageClass的学习
91 0
|
3月前
|
存储 Kubernetes 安全
k8s学习-持久化存储(Volumes、hostPath、emptyDir、PV、PVC)详解与实战
k8s学习-持久化存储(Volumes、hostPath、emptyDir、PV、PVC)详解与实战
56 0
|
3月前
|
Kubernetes 应用服务中间件 网络安全
Kubernetes证书类型和适用场景
Kubernetes证书类型和适用场景
93 0

相关产品

  • 容器服务Kubernetes版