Amazon web services Terraform AWS EKS群集部署错误

Amazon web services Terraform AWS EKS群集部署错误,amazon-web-services,terraform,terraform-provider-aws,amazon-eks,Amazon Web Services,Terraform,Terraform Provider Aws,Amazon Eks,我一直在尝试在us-east-1区域内部署EKS群集,我发现其中一个可用区us-east-1e不支持设置,因此我的群集无法创建 请查看下面的错误,并告诉我是否有办法在terraform部署中跳过us-east-1e AZ 计划:添加26个,更改0个,销毁0个 此计划已保存到:development.tfplan 要准确执行这些操作,请运行以下命令以应用: terraform apply development.tfplan base_C0DL:使用terraform master snadell

我一直在尝试在us-east-1区域内部署EKS群集,我发现其中一个可用区us-east-1e不支持设置,因此我的群集无法创建

请查看下面的错误,并告诉我是否有办法在terraform部署中跳过us-east-1e AZ

计划:添加26个,更改0个,销毁0个

此计划已保存到:development.tfplan

要准确执行这些操作,请运行以下命令以应用: terraform apply development.tfplan

base_C0DL:使用terraform master snadella001部署eks集群$ 地形应用 development.tfplandata.aws\u可用性\u分区。可用性\u azs: 阅读[id=2020-12-04 22:10:40.079079+0000 UTC] data.aws\u availability\u zones.availability\u azs:0秒后读取完成 [id=2020-12-04 22:10:47.208548+0000 UTC] module.eks cluster.aws_eks_cluster.this[0]:正在创建

错误:创建EKS群集EKS ha时出错: UnsupportedAvailabilityZoneException:无法创建群集“eks hia” 因为目标可用性区域us-east-1e当前不可用 有足够的容量支持群集。重试并从中选择 这些可用区:us-east-1a、us-east-1b、us-east-1c、, us-east-1d,us-east-1f{resp元数据:{ 状态代码:400, RequestID:0f2ddbd1-107f-490e-b45f-6985e1c7f1f8},群集名称:eks ha,消息:无法创建群集“eks hia” 因为目标可用性区域us-east-1e当前不可用 有足够的容量支持群集。请重试并从中选择 这些可用区:us-east-1a、us-east-1b、us-east-1c、, us-east-1d、us-east-1f、ValidZones:[ 美国东-1a, us-east-1b, 美国-东方-1c, us-east-1d, us-east-1f]}

在参考资料中的.terraform/modules/eks cluster/cluster.tf第9行 aws_eks_群集此:9:资源aws_eks_群集此{

请查找下面列出的EKS群集:

# create EKS cluster
module "eks-cluster" {
  source           = "terraform-aws-modules/eks/aws"
  version          = "12.1.0"
  cluster_name     = var.cluster_name
  cluster_version  = "1.17"
  write_kubeconfig = false
  availability-zones  = ["us-east-1a", "us-east-1b", "us-east-1c"]## tried but does not work
  
  subnets = module.vpc.private_subnets
  vpc_id  = module.vpc.vpc_id

  worker_groups_launch_template = local.worker_groups_launch_template

  # map developer & admin ARNs as kubernetes Users
  map_users = concat(local.admin_user_map_users, local.developer_user_map_users)
}

# get EKS cluster info to configure Kubernetes and Helm providers
data "aws_eks_cluster" "cluster" {
  name = module.eks-cluster.cluster_id
}
data "aws_eks_cluster_auth" "cluster" {
  name = module.eks-cluster.cluster_id
}

#################
# Private subnet
#################
resource "aws_subnet" "private" {
  count = var.create_vpc && length(var.private_subnets) > 0 ? length(var.private_subnets) : 0

  vpc_id                          = local.vpc_id
  cidr_block                      = var.private_subnets[count.index]
  # availability_zone  = ["us-east-1a", "us-east-1b", "us-east-1c"]
  availability_zone               = length(regexall("^[a-z]{2}-", element(var.azs, count.index))) > 0 ? element(var.azs, count.index) : null
  availability_zone_id            = length(regexall("^[a-z]{2}-", element(var.azs, count.index))) == 0 ? element(var.azs, count.index) : null
  assign_ipv6_address_on_creation = var.private_subnet_assign_ipv6_address_on_creation == null ? var.assign_ipv6_address_on_creation : var.private_subnet_assign_ipv6_address_on_creation

  ipv6_cidr_block = var.enable_ipv6 && length(var.private_subnet_ipv6_prefixes) > 0 ? cidrsubnet(aws_vpc.this[0].ipv6_cidr_block, 8, var.private_subnet_ipv6_prefixes[count.index]) : null

  tags = merge(
    {
      "Name" = format(
        "%s-${var.private_subnet_suffix}-%s",
        var.name,
        element(var.azs, count.index),
      )
    },
    var.tags,
    var.private_subnet_tags,
  )
}

variable "azs" {
  description = "A list of availability zones names or ids in the region"
  type        = list(string)
  default     = []
  #default     = ["us-east-1a", "us-east-1b","us-east-1c","us-east-1d"]
}

您的地形代码在哪里?您如何分配子网?抱歉。更新了上面问题中的代码。@jordanm,如果您有机会检查代码,请告诉我是子网包括us-east-1e.module.vpc.private_子网包括us-east-1e区域中的子网。这就是您需要修复的。@jordanm,谢谢!!添加了子网代码块。我尝试提供us-east-1a、us-east-1b、us-east-1c AZs,但没有成功。不确定我是否遗漏了一些非常基本的内容,但非常感谢您的帮助。
module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "2.44.0"

  name = "${var.name_prefix}-vpc"
  cidr = var.main_network_block
  # azs  = data.aws_availability_zones.available_azs.names
  azs  = ["us-east-1a", "us-east-1b", "us-east-1c"]

  private_subnets = [
    # this loop will create a one-line list as ["10.0.0.0/20", "10.0.16.0/20", "10.0.32.0/20", ...]
    # with a length depending on how many Zones are available
    for zone_id in data.aws_availability_zones.available_azs.zone_ids :
    cidrsubnet(var.main_network_block, var.subnet_prefix_extension, tonumber(substr(zone_id, length(zone_id) - 1, 1)) - 1)
  ]