gpt4 book ai didi

kubernetes - 无法重用现有的持久卷 (GlusterFS)

转载 作者:行者123 更新时间:2023-12-02 11:36:35 25 4
gpt4 key购买 nike

说明 :
无法将新 PVC 绑定(bind)到已包含上一次运行的数据的现有 PV(并且是使用 gluster 存储类动态创建的)。

  • 安装了一个 helm release,它创建了 PVC 并从 GlusterStorage 类动态生成了 PV。
  • 但是由于某种原因,我们需要关闭版本( helm del )并重新安装它( helm install )。但是,想要使用现有的 PV 而不是创建一个新的。

  • 我尝试了几件事:
    - 按照此处的说明: https://github.com/kubernetes/kubernetes/issues/48609 .但是,这对 GlusterFS 存储解决方案不起作用,因为在我尝试了所需的步骤后,它提示:
      Type     Reason            Age                From                              Message
    ---- ------ ---- ---- -------
    Warning FailedScheduling <unknown> default-scheduler error while running "VolumeBinding" filter plugin for pod "opensync-wifi-controller-opensync-mqtt-broker-fbbd69676-bmqqm": pod has unbound immediate PersistentVolumeClaims
    Warning FailedScheduling <unknown> default-scheduler error while running "VolumeBinding" filter plugin for pod "opensync-wifi-controller-opensync-mqtt-broker-fbbd69676-bmqqm": pod has unbound immediate PersistentVolumeClaims
    Normal Scheduled <unknown> default-scheduler Successfully assigned connectus/opensync-wifi-controller-opensync-mqtt-broker-fbbd69676-bmqqm to rahulk8node1-virtualbox
    Warning FailedMount 31s (x7 over 62s) kubelet, rahulk8node1-virtualbox MountVolume.NewMounter initialization failed for volume "pvc-dc52b290-ae86-4cb3-aad0-f2c806a23114" : endpoints "glusterfs-dynamic-dc52b290-ae86-4cb3-aad0-f2c806a23114" not found
    Warning FailedMount 30s (x7 over 62s) kubelet, rahulk8node1-virtualbox MountVolume.NewMounter initialization failed for volume "pvc-735baedf-323b-47bc-9383-952e6bc5ce3e" : endpoints "glusterfs-dynamic-735baedf-323b-47bc-9383-952e6bc5ce3e" not found

    显然,除了 PV,我们还需要持久化 gluster-dynamic-endpoints 和 gluster-dynamic-service。但是,这些是在 pod 命名空间中创建的,因为命名空间作为 helm del 的一部分被删除了。 ,它还会删除这些端点和 svc。

    我查看了与缺少 GlusterFS 端点相关的其他页面: https://github.com/openshift/origin/issues/6331但这不适用于当前版本的 Storage 类。当我添加 endpoint: "heketi-storage-endpoints"到 Storage 类参数,创建 PVC 时出现以下错误:
    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 .

    无论如何,是否可以使用新 PVC 中的现有 PV?

    最佳答案

    我想提出一种不同的方法。
    您可以在 PVC 上使用此注解,它会在删除时跳过删除资源。

    helm.sh/resource-policy: "keep"
    Here是一个例子:
    {{- 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 }}
    也可以使用参数见 here ,在您安装 helm chart 时,他们实现了一个标记选项(真或假)。
    persistence.annotations."helm.sh/resource-policy"
    您还可以包含一个可配置的参数来设置您想要重用的 pvc 的名称,如 here 所示。 .
    在本例中,您可以设置 persistence.existingClaim=mysql-pvc在您的图表安装期间。
    因此,当你运行 helm install 时,混合所有你可以拥有的东西应该是这样的:
    helm install --namespace myapp --set existingClaim=mysql-pvc stable/myapp

    关于kubernetes - 无法重用现有的持久卷 (GlusterFS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61198972/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com