【发布时间】:2021-03-16 23:25:39
【问题描述】:
我一直在尝试在 us-east-1 区域内部署 EKS 集群,但我发现 us-east-1e 可用区之一不支持我的集群无法创建的设置。
请查看下面的错误,如果有办法在 terraform 部署中跳过 us-east-1e AZ,请告诉我。
计划:26 增加,0 改变,0 破坏。
此计划已保存到:development.tfplan
要准确执行这些操作,请运行以下命令来应用: terraform 应用“development.tfplan”
(base) _C0DL:deploy-eks-cluster-using-terraform-master snadella001$ 地形应用 “development.tfplan”data.aws_availability_zones.available_azs: 正在阅读... [id=2020-12-04 22:10:40.079079 +0000 UTC] data.aws_availability_zones.available_azs:0s 后读取完成 [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 { RespMetadata: { 状态码:400, 请求 ID:“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",有效区域:[ “我们-东-1a”, “我们-东-1b”, “我们-东-1c”, “us-east-1d”, “us-east-1f”] }
在 .terraform/modules/eks-cluster/cluster.tf 第 9 行,在资源中 "aws_eks_cluster" "this": 9: 资源 "aws_eks_cluster" "this" {
请找到下面列出的 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"]
}
【问题讨论】:
-
你的 terraform 代码在哪里?你是如何分配子网的?
-
对不起。更新了上面发布的问题中的代码。
-
@jordanm,如果您有机会检查代码,请告诉我
-
是包含 us-east-1e 的子网。
module.vpc.private_subnets包括 us-east-1e 区域中的子网。这就是你需要解决的问题。 -
@jordanm,谢谢!!添加了子网代码块。我尝试提供“us-east-1a”、“us-east-1b”、“us-east-1c”可用区,但没有奏效。不确定我是否在这里遗漏了一些非常基本的东西,但我们将不胜感激。
标签: amazon-web-services terraform terraform-provider-aws amazon-eks