使用持久卷管理 K8s 中的卷回滚

Managing volume rollbacks in K8s using persistent volumes

我有一个 kubernetes 部署,由我计划升级的 helm chart 管理。该应用程序附加了 2 个持久卷,它们是 AWS 中的 EBS 卷。如果部署出错并需要回滚,我可能还需要回滚 EBS 卷。在 K8s 中如何管理它?我可以轻松地在 AWS 中从我的预部署快照中手动创建卷,但是为了部署使用它,我需要编辑 pv yaml 文件以指向我的新卷 ID 吗?或者我是否需要使用卷 ID 和新 PVC 创建新的 PV,然后编辑我的部署以使用该声明名称?

首先你需要定义一个存储 class with 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 chart 中,您需要使用该存储 class。因此,当您删除 helm chart 时,持久声明将被删除,并且由于使用的存储 class 的 ReclaimPolicy=Delete,相应的持久卷也将被删除。

不过要小心。删除 PV 后,您将无法恢复该卷的数据。没有“回收站”。