【问题标题】:Force PersistentVolumeClaim and Deployment to land in same availability zone强制 PersistentVolumeClaim 和 Deployment 登陆同一个可用区
【发布时间】:2019-03-25 00:02:56
【问题描述】:

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

us-west-2a
us-west-2b
us-west-2c
us-west-2d

我的问题是我想创建一个具有引用 PersistentVolumeClaim 的卷挂载的 Deployment,并保证它们位于同一个 AZ,因为现在很幸运,无论 Deployment 和 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"
    }
  }
}
{
   "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"
                  }
               }]
         }
      }
   }
}

【问题讨论】:

  • "...因为现在很幸运,Deployment 和 PersistentVolumeClaim 是否最终都在同一个 AZ..." 这不是运气。见kubernetes.io/docs/setup/multiple-zones/#functionality
  • 我首先创建了 PersistentVolumeClaim,并且 Deployment 确实在同一个 AZ 中进行了一致的安排。

标签: amazon-web-services kubernetes persistent-volumes aws-ebs persistent-volume-claims


【解决方案1】:

您可以尝试为herehere 中提到的区域和AvailabilityZone 设置注释

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-14
    • 2014-11-25
    • 2022-11-08
    • 2020-09-09
    相关资源
    最近更新 更多