Amazon web services 强制PersistentVolumeClaim并部署到同一可用性区域

Amazon web services 强制PersistentVolumeClaim并部署到同一可用性区域,amazon-web-services,kubernetes,persistent-volumes,aws-ebs,persistent-volume-claims,Amazon Web Services,Kubernetes,Persistent Volumes,Aws Ebs,Persistent Volume Claims,我在AWS中有一个kubernetes集群,在以下AZ中有ec2工作节点,在每个AZ中有相应的PersistentVolume us-west-2a us-west-2b us-west-2c us-west-2d 我的问题是,我想创建一个具有卷装载的部署,该卷装载引用PersistentVolumeClaim,并保证它们位于同一个AZ,因为现在很幸运,部署和PersistentVolumeClaim是否都位于同一AZ。如果它们不在同一个AZ中,则部署无法找到卷装载 我通过在每个AZ中手动创建

我在AWS中有一个kubernetes集群,在以下AZ中有ec2工作节点,在每个AZ中有相应的PersistentVolume

us-west-2a
us-west-2b
us-west-2c
us-west-2d
我的问题是,我想创建一个具有卷装载的部署,该卷装载引用PersistentVolumeClaim,并保证它们位于同一个AZ,因为现在很幸运,部署和PersistentVolumeClaim是否都位于同一AZ。如果它们不在同一个AZ中,则部署无法找到卷装载

我通过在每个AZ中手动创建EBS卷并将ID复制到规范来创建4个PersistentVolume

{
  "apiVersion": "v1",
  "kind": "PersistentVolume",
  "metadata": {
    "name": "pv-2"
  },
  "spec": {
    "capacity": {
      "storage": "1Gi"
    },
    "accessModes": [
      "ReadWriteOnce"
    ],
    "persistentVolumeReclaimPolicy": "Retain",
    "awsElasticBlockStore": {
      "volumeID": "vol-053f78f0c16e5f20e",
      "fsType": "ext4"
    }
  }
}

您可以尝试为区域和AvailabilityZone设置注释,如和中所述“…因为现在很幸运部署和PersistentVolumeClaim是否都在同一个AZ中…”这不是运气。请看,我首先创建了PersistentVolumeClaim,部署确实在同一时间得到了一致的计划。
{
   "kind": "PersistentVolumeClaim",
   "apiVersion": "v1",
   "metadata": {
      "name": "mydata",
      "namespace": "staging"
   },
   "spec": {
      "accessModes": [
         "ReadWriteOnce"
      ],
      "resources": {
         "requests": {
            "storage": "10Mi"
         }
      }
   }
}
{
   "apiVersion": "extensions/v1beta1",
   "kind": "Deployment",
   "metadata": {
      "name": "myapp",
      "namespace": "default",
      "labels": {
         "app": "myapp"
      }
   },
   "spec": {
      "replicas": 1,
      "selector": {
         "matchLabels": {
            "app": "myapp"
         }
      },
      "template": {
         "metadata": {
            "labels": {
               "app": "myapp"
            }
         },
         "spec": {
            "containers": [
               {
                  "name": "hello",
                  "image": "centos:7",
                  "volumeMounts": [ {  
                        "name":"mydata",
                        "mountPath":"/etc/data/"
                     } ]
               }
            ],
            "volumes": [ {  
                  "name":"mydata",
                  "persistentVolumeClaim":{  
                     "claimName":"mydata"
                  }
               }]
         }
      }
   }
}