如何跨多个可用区启用AWS EBS Volume?

che*_*yes 0 amazon-web-services terraform persistent-volumes amazon-eks

如何从多个可用区访问 AWS EBS 卷?

我的案例详细:

我有一个跨多个可用区的 VPC:

data "aws_availability_zones" "available" {}

module "vpc" {
    source = "terraform-aws-modules/vpc/aws"
    version = "3.10.0"

    name = "${local.project_slug}-main-vpc"
    cidr = "10.0.0.0/16"
    azs = data.aws_availability_zones.available.name
...
Run Code Online (Sandbox Code Playgroud)

在此集群中,我有一个 max_capacity 为 n 的托管节点组:

module "eks" {
    source  = "terraform-aws-modules/eks/aws"
    version = "17.22.0"

    cluster_name = "${local.project_slug}-main-eks"
    cluster_version = "1.19" # K8s version

    vpc_id = module.vpc.vpc_id
    subnets = module.vpc.public_subnets

    # managed nodes
    node_groups = {
      grey = {
        desired_capacity = 1
        min_capacity     = 1
        max_capacity     = 10
        instance_types = ["t3.medium"]
      }
    }
...

Run Code Online (Sandbox Code Playgroud)

但我只能将 AWS EBY 卷分配给单个可用区:

 resource "aws_ebs_volume" "api" {
     availability_zone = "eu-central-1b"
     size = 5 #GiBs
 }

Run Code Online (Sandbox Code Playgroud)

如果我的 EKS 托管节点组在另一个可用区域中配置了新节点,则无法安装该卷。

我该怎么做?这里有什么更好的做法?

Fer*_*min 5

如何从多个可用区访问 AWS EBS 卷?

简而言之,您不能,EBS 卷与可用区相关联(想象一下数据中心中的磁盘,该磁盘不能同时位于多个数据中心中)。

我该怎么做?这里有什么更好的做法?

这取决于“这个”是什么。如果需要一些可用的共享数据,那么您可以使用EFS或 S3 之类的东西。

如果是有状态集,您可以拥有多个节点组,每个节点组的范围仅限于一个可用区?