用于 Pvc 和 StorageClass 故障转移的 GKE 区域磁盘
GKE Regional Disk for Pvc and StorageClass failover
我有一个 pod 需要永久磁盘。我在 us-central1-a 上有 1 个 pod 运行ning,如果该区域出现故障,我想迁移到另一个区域而不丢失数据到另一个区域 (us-central1-*)。
是否可以将 pod 迁移到另一个区域(我知道磁盘存在的地方)并为新区域中的 pod 使用区域磁盘?
方法一
使用下面的 StorageClass
我的 pod 总是无法声明任何这些并且我的 pod 永远不会启动。我了解到这个配置了所有区域的区域磁盘将使该磁盘在区域出现故障时可用于所有区域。我不明白为什么我不能申请这些。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: regionalpd-storageclass
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-standard
replication-type: regional-pd
volumeBindingMode: WaitForFirstConsumer
allowedTopologies:
- matchLabelExpressions:
- key: topology.kubernetes.io/zone
values:
- us-central1-a
- us-central1-b
- us-central1-c
- us-central1-f
错误:我的 PVC 状态总是待处理
Normal NotTriggerScaleUp 106s cluster-autoscaler pod didn't trigger scale-up (it wouldn't fit if a new node is added):
Warning FailedScheduling 62s (x2 over 108s) default-scheduler 0/8 nodes are available: 8 node(s) didn't find available persistent volumes to bind.
尝试 2
此存储配置将允许我 运行 我的 pod 在 2/4 个区域中,其中 1 个区域是初始区域,1 个是随机区域。当我故意减少并移出我的初始 pods 区域时,我将收到以下错误,除非我足够幸运选择了其他随机配置的区域。此功能是故意的,因为 Google 假设 2 区域故障的可能性非常低吗?如果确实失败了,我是否必须在另一个区域中提供另一个磁盘以防万一?
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: regionalpd-storageclass
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-standard
replication-type: regional-pd
volumeBindingMode: WaitForFirstConsumer
错误:
Normal NotTriggerScaleUp 4m49s cluster-autoscaler pod didn't trigger scale-up (it wouldn't fit if a new node is added):
Warning FailedScheduling 103s (x13 over 4m51s) default-scheduler 0/4 nodes are available: 2 node(s) had volume node affinity conflict, 2 node(s) were unschedulable.
Warning FailedScheduling 43s (x2 over 43s) default-scheduler 0/3 nodes are available: 1 node(s) were unschedulable, 2 node(s) had volume node affinity conflict.
Warning FailedScheduling 18s (x3 over 41s) default-scheduler 0/2 nodes are available: 2 node(s) had volume node affinity conflict.
我的 PVC
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: my-pvc
namespace: mynamespace
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 200Gi
storageClassName: regionalpd-storageclass
我的 Pod 音量
数量:
- name: console-persistent-volume
persistentVolumeClaim:
claimName: my-pvc
Google 云上的区域永久性磁盘仅在 两个区域 中可用,因此您必须将 StorageClass
更改为仅两个区域。
参见 Using Kubernetes Engine to Deploy Apps with Regional Persistent Disks 上的示例 StorageClass
以及有关 GKE: Provisioning regional persistent disks
的更多详细信息
我有一个 pod 需要永久磁盘。我在 us-central1-a 上有 1 个 pod 运行ning,如果该区域出现故障,我想迁移到另一个区域而不丢失数据到另一个区域 (us-central1-*)。
是否可以将 pod 迁移到另一个区域(我知道磁盘存在的地方)并为新区域中的 pod 使用区域磁盘?
方法一
使用下面的 StorageClass
我的 pod 总是无法声明任何这些并且我的 pod 永远不会启动。我了解到这个配置了所有区域的区域磁盘将使该磁盘在区域出现故障时可用于所有区域。我不明白为什么我不能申请这些。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: regionalpd-storageclass
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-standard
replication-type: regional-pd
volumeBindingMode: WaitForFirstConsumer
allowedTopologies:
- matchLabelExpressions:
- key: topology.kubernetes.io/zone
values:
- us-central1-a
- us-central1-b
- us-central1-c
- us-central1-f
错误:我的 PVC 状态总是待处理
Normal NotTriggerScaleUp 106s cluster-autoscaler pod didn't trigger scale-up (it wouldn't fit if a new node is added):
Warning FailedScheduling 62s (x2 over 108s) default-scheduler 0/8 nodes are available: 8 node(s) didn't find available persistent volumes to bind.
尝试 2
此存储配置将允许我 运行 我的 pod 在 2/4 个区域中,其中 1 个区域是初始区域,1 个是随机区域。当我故意减少并移出我的初始 pods 区域时,我将收到以下错误,除非我足够幸运选择了其他随机配置的区域。此功能是故意的,因为 Google 假设 2 区域故障的可能性非常低吗?如果确实失败了,我是否必须在另一个区域中提供另一个磁盘以防万一?
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: regionalpd-storageclass
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-standard
replication-type: regional-pd
volumeBindingMode: WaitForFirstConsumer
错误:
Normal NotTriggerScaleUp 4m49s cluster-autoscaler pod didn't trigger scale-up (it wouldn't fit if a new node is added):
Warning FailedScheduling 103s (x13 over 4m51s) default-scheduler 0/4 nodes are available: 2 node(s) had volume node affinity conflict, 2 node(s) were unschedulable.
Warning FailedScheduling 43s (x2 over 43s) default-scheduler 0/3 nodes are available: 1 node(s) were unschedulable, 2 node(s) had volume node affinity conflict.
Warning FailedScheduling 18s (x3 over 41s) default-scheduler 0/2 nodes are available: 2 node(s) had volume node affinity conflict.
我的 PVC
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: my-pvc
namespace: mynamespace
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 200Gi
storageClassName: regionalpd-storageclass
我的 Pod 音量
数量:
- name: console-persistent-volume
persistentVolumeClaim:
claimName: my-pvc
Google 云上的区域永久性磁盘仅在 两个区域 中可用,因此您必须将 StorageClass
更改为仅两个区域。
参见 Using Kubernetes Engine to Deploy Apps with Regional Persistent Disks 上的示例 StorageClass 以及有关 GKE: Provisioning regional persistent disks
的更多详细信息