【问题标题】:How to move a PersistentVolume from one zone to another zone?如何将 PersistentVolume 从一个区域移动到另一个区域?
【发布时间】:2021-02-16 14:33:33
【问题描述】:

我有一个 k8s 集群,机器位于两个不同的区域。最初,我有一个带有 PersistentVolumeClaim 的 StatefulSet,Pod 和 PersistentVolume 位于 #1 区域。现在我想让 pod 运行一个 zone #2,所以我必须将 PersistentVolume 也移动到 zone #2。

我该怎么做?我知道在 same 区域的不同节点中,事情非常简单 - pod 会自动带来 PersistentVolume。但是我不知道跨区域该怎么做。

非常感谢您的任何建议!

【问题讨论】:

    标签: kubernetes persistent-volumes kubernetes-pvc persistent-volume-claims


    【解决方案1】:

    这是GKE 上的示例,但是其他云提供商应该有类似的选项,但区域名称不同。

    您可以通过Regional Persistent Disks 指定StorageClass 来完成。取决于您可以使用的需求:

    • 动态配置

    要启用区域永久性磁盘的动态配置,请使用replication-type 参数创建StorageClass,并在allowedTopologies 中指定zone 约束。

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: regionalpd-storageclass
    provisioner: pd.csi.storage.gke.io
    parameters:
      type: pd-standard
      replication-type: regional-pd
    volumeBindingMode: WaitForFirstConsumer
    allowedTopologies:
    - matchLabelExpressions:
      - key: topology.gke.io/zone
        values:
        - europe-west1-b
        - europe-west1-c
    

    以上示例描述了一个名为 regionpd-storageclass 的 StorageClass,它使用标准永久性磁盘并将数据复制到 europe-west1-b 和 europe-west1-c 区域

    • 手动配置
    gcloud compute disks create \
     gce-disk-1 \
       --size 500Gi \
       --region europe-west1 \
       --replica-zones europe-west1-b,europe-west1-c
    

    如果您想在特定区域创建Persistent Volume,您可以在storageClass 中指定它,如下例所示:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: PV-us-central-1a
    provisioner: kubernetes.io/gce-pd
    parameters:
      type: pd-standard
      zone: us-central1-a
    

    要在PersistentVolumePersistentVolumeClaim 中使用特定的StorageClass,您必须使用storageClassName

    下面是volumeClaimTemplatesstorageClassName 的示例

      `volumeClaimTemplates`:
      - metadata:
          name: www
        spec:
          accessModes: [ "ReadWriteOnce" ]
          storageClassName: "my-storage-class"
          resources:
            requests:
              storage: 1Gi
    

    关于将PV移动到不同的区域,您可以使用Volume Snapshots或使用Velero等第三方软件。您可以使用Volume Snapshots 在线找到许多migrating PV 教程,例如Migrating Kubernetes PersistentVolumes across Regions and AZs on AWS

    其他文档

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-22
      • 2018-02-18
      • 1970-01-01
      • 2020-10-20
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多