无法在同一AWS AZ中创建statefulset和PVC

时间:2019-01-10 11:16:23

标签: kubernetes kubernetes-pvc kubernetes-statefulset aws-eks

我正在尝试在AWS AZ中创建的集群(横跨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-1beu-west-1c中的PV。

使用K8 1.11。

还有其他可能的解决方法吗?

1 个答案:

答案 0 :(得分:2)

看着https://v1-11.docs.kubernetes.io/docs/concepts/storage/storage-classes/ allowedTopologies不存在。

因此,我在zones: eu-west-1a, eu-west-1b中使用了StorageClass,这似乎很有用。

provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
  zones: eu-west-1a, eu-west-1b