【问题标题】:Managing volume rollbacks in K8s using persistent volumes使用持久卷管理 K8s 中的卷回滚
【发布时间】:2021-08-03 17:31:55
【问题描述】:
我有一个由 helm chart 管理的 kubernetes 部署,我计划对其进行升级。该应用程序附加了 2 个持久卷,它们是 AWS 中的 EBS 卷。如果部署出错并需要回滚,我可能还需要回滚 EBS 卷。在 K8s 中如何管理它?我可以从我预先部署的快照中轻松地在 AWS 中手动创建卷,但是要使用它进行部署,我需要编辑 pv yaml 文件以指向我的新卷 ID?或者我是否需要使用卷 ID 和新 PVC 创建一个新 PV,然后编辑我的部署以使用该声明名称?
【问题讨论】:
标签:
amazon-web-services
kubernetes
amazon-ebs
persistent-volumes
【解决方案1】:
首先你需要用reclaimPolicy定义一个存储类:Delete
https://kubernetes.io/docs/concepts/storage/storage-classes/
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
reclaimPolicy: Delete
allowVolumeExpansion: true
mountOptions:
- debug
volumeBindingMode: Immediate
然后,在您的 helm 图表中,您需要使用该存储类。因此,当您删除 helm chart 时,持久化声明将被删除,并且由于使用的存储类的 ReclaimPolicy=Delete,相应的持久化卷也将被删除。
不过要小心。删除 PV 后,您将无法恢复该卷的数据。没有“回收站”。