mongodb 保留持久卷并将PV用于新Helm安装

kokeuurv  于 2022-11-03  发布在  Go
关注(0)|答案(3)|浏览(208)

在我的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绑定到新的舵图安装,以便在删除舵图后数据仍保持不变?

bwleehnv

bwleehnv1#

Helm仍然没有解决这个问题。

处理它的“黑客”,你可以在这里找到:
https://groups.google.com/forum/#!topic/kubernetes-sig-apps/sLL2pCJ5Ab8

e3bfsja2

e3bfsja22#

我找到了一个解决办法。我已经创建了一个独立于 Helm 图表的PVC,只是在我的deployment.yaml文件中使用它。
如果存在现有索赔,则仅使用现有索赔,否则创建新索赔。

{{- if .Values.persistence.enabled }}
      {{- if .Values.persistence.existingClaim }}
        persistentVolumeClaim:
          claimName: {{ .Values.persistence.existingClaim }}
      {{- else}}
        persistentVolumeClaim:
          claimName: {{ (include "mongodb.fullname" .) }}
      {{- end}}
vsmadaxz

vsmadaxz3#

现有的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

相关问题