Невозможно повторно использовать существующий постоянный том (GlusterFS) - PullRequest
2 голосов
/ 14 апреля 2020

Описание : Невозможно привязать новый PV C к существующему PV, который уже содержит данные из предыдущего запуска (и был динамически создан с использованием класса хранения кластера).

  • Установил релиз руля, который создал PV C и динамически сгенерированный PV из класса GlusterStorage.
  • Однако по какой-то причине нам нужно отключить релиз (helm del) и переустановить его (helm install). Однако я хочу использовать существующий PV вместо создания нового.

Я попробовал несколько вещей: - Следуя инструкциям здесь: https://github.com/kubernetes/kubernetes/issues/48609. Однако это не сработало для решения GlusterFS для хранения, поскольку после того, как я попробовал необходимые шаги, он пожаловался: GlusterFS-Dynami c -service. Однако они создаются в пространстве имен pod, и поскольку пространство имен удаляется как часть helm del, оно также удаляет эти конечные точки и sv c.

Я просмотрел другие страницы, связанные с отсутствующей конечной точкой GlusterFS: https://github.com/openshift/origin/issues/6331, но это не относится к текущей версии класса Storage. Когда я добавил endpoint: "heketi-storage-endpoints" в параметры класса Storage, я получил следующую ошибку при создании PV C:

Failed to provision volume with StorageClass "glusterfs-storage": invalid option "endpoint" for volume plugin kubernetes.io/glusterfs

Эта опция была удалена в 2016 году - см. https://github.com/gluster/gluster-kubernetes/issues/87.

Есть ли возможность использовать существующий PV из нового PV C?

1 Ответ

1 голос
/ 14 апреля 2020

Я хотел бы предложить вам другой подход. Вы можете включить

. Вы можете использовать эту аннотацию на PV C, она пропустит удаление ресурса при удалении.

helm.sh/resource-policy: "keep"

Здесь является примером:

{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: {{ template "bitcoind.fullname" . }}
  annotations:
    "helm.sh/resource-policy": keep
  labels:
    app: {{ template "bitcoind.name" . }}
    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
    release: "{{ .Release.Name }}"
    heritage: "{{ .Release.Service }}"
spec:
  accessModes:
    - {{ .Values.persistence.accessMode | quote }}
  resources:
    requests:
      storage: {{ .Values.persistence.size | quote }}
{{- if .Values.persistence.storageClass }}
{{- if (eq "-" .Values.persistence.storageClass) }}
  storageClassName: ""
{{- else }}
  storageClassName: "{{ .Values.persistence.storageClass }}"
{{- end }}
{{- end }}
{{- end }} 

Вы также можете установить его как настраиваемые параметры как здесь , где они реализованы возможность установить значение true или false при установке диаграммы управления.

persistence.annotations."helm.sh/resource-policy"

Вы также можете включить настраиваемые параметры, чтобы задать имя pv c, которое вы хотите использовать здесь как .

В этом примере вы можете установить persistence.existingClaim=mysql-pvc, например, во время установки графика.

Итак, смешивая все, вы можете получить что-то, что должно выглядеть так, когда вы запускаете установку helm:

helm install --namespace myapp --set existingClaim=mysql-pvc stable/myapp
...