无法在同一个 AWS AZ 中创建 statefulset 和 PVC
Unable to create statefulset and PVC in the same AWS AZ
我正在尝试在 AWS AZ 中创建的集群中启动两个 Cassandra statefulset 实例和各自的 PVC(跨越 3 个区域,eu-west-1a,eu -west-1b & eu-west-1c)。
我创建了一个包含以下 2 个节点的节点组,如图所示,这些节点附加在区域 eu-west-1a 和 eu-west-1b 中
ip-192-168-47-86.eu-west-1.compute.internal - failure-domain.beta.kubernetes.io/zone=eu-west-1a,node-type=database-only
ip-192-168-3-191.eu-west-1.compute.internal - failure-domain.beta.kubernetes.io/zone=eu-west-1b,node-type=database-only
当我启动 Cassandra 实例(使用 Helm)时,只有一个实例启动。另一个实例显示错误,
0/4 nodes are available: 2 node(s) didn't match node selector, 2 node(s) had no available volume zone.
这些实例的 PVC 是有界的,
kubectl get pvc -n storage -o wide
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
cassandra-data-cc-cassandra-0 Bound pvc-81e30224-14c5-11e9-aa4e-06d38251f8aa 10Gi RWO gp2 4m
cassandra-data-cc-cassandra-1 Bound pvc-abd30868-14c5-11e9-aa4e-06d38251f8aa 10Gi RWO gp2 3m
但是,PV 显示它们位于区域 eu-west-1b & eu-west-1c
kubectl get pv -n storage --show-labels
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE LABELS
pvc-81e30224-14c5-11e9-aa4e-06d38251f8aa 10Gi RWO Delete Bound storage/cassandra-data-cc-cassandra-0 gp2 7m failure-domain.beta.kubernetes.io/region=eu-west-1,failure-domain.beta.kubernetes.io/zone=eu-west-1b
pvc-abd30868-14c5-11e9-aa4e-06d38251f8aa 10Gi RWO Delete Bound storage/cassandra-data-cc-cassandra-1 gp2 6m failure-domain.beta.kubernetes.io/region=eu-west-1,failure-domain.beta.kubernetes.io/zone=eu-west-1c
我已经尝试将以下拓扑添加到 StorageClass
但没有成功,
allowedTopologies:
- matchLabelExpressions:
- key: failure-domain.beta.kubernetes.io/zone
values:
- eu-west-1a
- eu-west-1b
但尽管如此,我仍然可以看到 eu-west-1b
和 eu-west-1c
区域中的 PV。
使用 K8 1.11.
任何其他可能的修复?
正在查看 https://v1-11.docs.kubernetes.io/docs/concepts/storage/storage-classes/ allowedTopologies
不存在。
所以我在 StorageClass
中使用了 zones: eu-west-1a, eu-west-1b
,这似乎有效。
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
zones: eu-west-1a, eu-west-1b
我正在尝试在 AWS AZ 中创建的集群中启动两个 Cassandra statefulset 实例和各自的 PVC(跨越 3 个区域,eu-west-1a,eu -west-1b & eu-west-1c)。
我创建了一个包含以下 2 个节点的节点组,如图所示,这些节点附加在区域 eu-west-1a 和 eu-west-1b 中
ip-192-168-47-86.eu-west-1.compute.internal - failure-domain.beta.kubernetes.io/zone=eu-west-1a,node-type=database-only
ip-192-168-3-191.eu-west-1.compute.internal - failure-domain.beta.kubernetes.io/zone=eu-west-1b,node-type=database-only
当我启动 Cassandra 实例(使用 Helm)时,只有一个实例启动。另一个实例显示错误,
0/4 nodes are available: 2 node(s) didn't match node selector, 2 node(s) had no available volume zone.
这些实例的 PVC 是有界的,
kubectl get pvc -n storage -o wide
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
cassandra-data-cc-cassandra-0 Bound pvc-81e30224-14c5-11e9-aa4e-06d38251f8aa 10Gi RWO gp2 4m
cassandra-data-cc-cassandra-1 Bound pvc-abd30868-14c5-11e9-aa4e-06d38251f8aa 10Gi RWO gp2 3m
但是,PV 显示它们位于区域 eu-west-1b & eu-west-1c
kubectl get pv -n storage --show-labels
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE LABELS
pvc-81e30224-14c5-11e9-aa4e-06d38251f8aa 10Gi RWO Delete Bound storage/cassandra-data-cc-cassandra-0 gp2 7m failure-domain.beta.kubernetes.io/region=eu-west-1,failure-domain.beta.kubernetes.io/zone=eu-west-1b
pvc-abd30868-14c5-11e9-aa4e-06d38251f8aa 10Gi RWO Delete Bound storage/cassandra-data-cc-cassandra-1 gp2 6m failure-domain.beta.kubernetes.io/region=eu-west-1,failure-domain.beta.kubernetes.io/zone=eu-west-1c
我已经尝试将以下拓扑添加到 StorageClass
但没有成功,
allowedTopologies:
- matchLabelExpressions:
- key: failure-domain.beta.kubernetes.io/zone
values:
- eu-west-1a
- eu-west-1b
但尽管如此,我仍然可以看到 eu-west-1b
和 eu-west-1c
区域中的 PV。
使用 K8 1.11.
任何其他可能的修复?
正在查看 https://v1-11.docs.kubernetes.io/docs/concepts/storage/storage-classes/ allowedTopologies
不存在。
所以我在 StorageClass
中使用了 zones: eu-west-1a, eu-west-1b
,这似乎有效。
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
zones: eu-west-1a, eu-west-1b