如何将 PersistentVolume 从一个区域移动到另一个区域?
How to move a PersistentVolume from one zone to another zone?
我有一个 k8s 集群,机器位于两个不同的区域。最初,我有一个带有 PersistentVolumeClaim 的 StatefulSet,并且 Pod 和 PersistentVolume 位于区域 #1。现在我希望 pod 到 运行 一个区域 #2,所以我也必须将 PersistentVolume 移动到区域 #2。
我该怎么做?我知道在 same 区域的不同节点中,事情非常简单——pod 将自动带来 PersistentVolume。但是不知道跨区怎么办。
非常感谢任何建议!
这是 GKE
上的示例,但是其他云提供商应该有类似的选项,但区域名称不同。
您可以通过 Regional Persistent Disks with specified StorageClass 完成。根据您的需要,您可以使用:
- 动态配置
To enable dynamic provisioning of regional persistent disks, create a StorageClass
with the replication-type
parameter, and specify zone
constraints in allowedTopologies
.
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
以上示例描述了一个名为 regionalpd-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
要在 PersistentVolume
或 PersistentVolumeClaim
中使用特定的 StorageClass
,您必须使用 storageClassName
.
下面是 volumeClaimTemplates
和 storageClassName
的例子
`volumeClaimTemplates`:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "my-storage-class"
resources:
requests:
storage: 1Gi
关于将PV移动到不同的区域,你可以使用Volume Snapshots or use 3rd party software like Velero. You can find many migrating PV
tutorials online using Volume Snapshots
like Migrating Kubernetes PersistentVolumes across Regions and AZs on AWS。
其他文档
我有一个 k8s 集群,机器位于两个不同的区域。最初,我有一个带有 PersistentVolumeClaim 的 StatefulSet,并且 Pod 和 PersistentVolume 位于区域 #1。现在我希望 pod 到 运行 一个区域 #2,所以我也必须将 PersistentVolume 移动到区域 #2。
我该怎么做?我知道在 same 区域的不同节点中,事情非常简单——pod 将自动带来 PersistentVolume。但是不知道跨区怎么办。
非常感谢任何建议!
这是 GKE
上的示例,但是其他云提供商应该有类似的选项,但区域名称不同。
您可以通过 Regional Persistent Disks with specified StorageClass 完成。根据您的需要,您可以使用:
- 动态配置
To enable dynamic provisioning of regional persistent disks, create a
StorageClass
with thereplication-type
parameter, and specifyzone
constraints inallowedTopologies
.
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
以上示例描述了一个名为 regionalpd-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
要在 PersistentVolume
或 PersistentVolumeClaim
中使用特定的 StorageClass
,您必须使用 storageClassName
.
下面是 volumeClaimTemplates
和 storageClassName
`volumeClaimTemplates`:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "my-storage-class"
resources:
requests:
storage: 1Gi
关于将PV移动到不同的区域,你可以使用Volume Snapshots or use 3rd party software like Velero. You can find many migrating PV
tutorials online using Volume Snapshots
like Migrating Kubernetes PersistentVolumes across Regions and AZs on AWS。
其他文档