3

在我的 Mongo Helm 图表中,我使用 PVC 作为持久性卷。我正在使用图表来安装 Mongo。当我删除图表时,我的 PV 被删除。所以,我找到了一些东西来修补它。

kubectl patch pv <your-pv-name> -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'

在此之后,我的 PV 没有被删除,只是处于已发布状态

pvc-fc29a491-499a-11e9-a426-42010a800ff9   8Gi        RWO            Retain           Released      default/myapp-mongodb           standard                 3d

如何将此 PV 绑定到我的新 helm chart 安装,以便即使在删除我的 Helm Chart 之后我的数据也应该保持持久性?

4

3 回答 3

1

Helm 仍未解决问题。

处理它的“黑客”,你可以在这里找到:

https://groups.google.com/forum/#!topic/kubernetes-sig-apps/sLL2pCJ5Ab8

于 2019-03-22T13:27:44.963 回答
0

现有的 PV 将无法绑定到新的 PVC。但是,您的 PV ( pvc-fc29a491-499a-11e9-a426-42010a800ff9) 引用的磁盘可以绑定到您的 PVC。新PV的配置将略微取决于您使用的云提供商/裸机主机。我按照这个来到下面显示的示例。此示例展示了如何使用 Google Cloud GCE 永久磁盘执行此操作。这里的顺序很重要;确保在创建 PVC 之前创建 PV(引用现有永久磁盘)。

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: myPV
spec:
  capacity:
    storage: 8Gi
  accessModes:
    - ReadWriteOnce
  gcePersistentDisk:
    pdName: myPdDiskName
    fsType: ext4
  storageClassName: standard
  claimRef:
    name: myPvcName
    namespace: myNameSpace

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myPvcName
  namespace: myNameSpace
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi
于 2021-08-24T18:28:07.257 回答
0

我找到了一种解决方法。我创建了一个独立于 helm 图表的 PVC,并仅在我的 deployment.yaml 文件中使用它。
如果存在现有声明,请使用现有声明,否则创建新声明。

 {{- if .Values.persistence.enabled }}
      {{- if .Values.persistence.existingClaim }}
        persistentVolumeClaim:
          claimName: {{ .Values.persistence.existingClaim }}
      {{- else}}
        persistentVolumeClaim:
          claimName: {{ (include "mongodb.fullname" .) }}
      {{- end}}  
于 2019-03-26T06:50:55.953 回答