因容量不足无法在us-east-1e区域创建Amazon EKS集群
解决Terraform创建EKS集群时的可用区容量不足问题
问题分析
你遇到的错误是因为当前配置自动拉取了默认VPC下所有公网子网,其中包含了AWS提示容量不足的us-east-1e可用区。EKS集群创建时会尝试在指定子网内部署控制平面资源,当目标AZ资源耗尽时就会触发该错误。若你之前尝试指定其他AZ但未正确过滤子网,Terraform依然会包含问题AZ的子网,导致错误重复出现。
解决方案
1. 过滤可用区,仅保留AWS推荐的AZ
修改aws_subnets数据源,添加可用区过滤规则,只选择us-east-1a、us-east-1b、us-east-1c、us-east-1d这几个可用区的子网,确保EKS集群和节点组仅使用这些AZ的资源。
修改后的子网数据源配置如下:
#get public subnets for cluster data "aws_subnets" "public" { filter { name = "vpc-id" values = [data.aws_vpc.default.id] } # 过滤出AWS推荐的可用区子网 filter { name = "availability-zone" values = ["us-east-1a", "us-east-1b", "us-east-1c", "us-east-1d"] } }
2. 验证子网配置
执行terraform plan查看输出的子网ID列表,确认其中没有属于us-east-1e的子网,确保过滤规则生效。
3. 重新部署集群
运行以下命令完成集群部署:
terraform init terraform plan terraform apply
额外注意事项
- EKS集群要求至少使用2个不同的可用区以保证高可用,请勿仅选择单个AZ。
- 如果默认VPC在推荐AZ下没有足够的公网子网,可手动创建指定AZ的子网,并在EKS配置中直接指定子网ID,示例如下:
resource "aws_eks_cluster" "example" { name = "eks_cloud1120" role_arn = aws_iam_role.example.arn vpc_config { # 手动填入推荐AZ的子网ID subnet_ids = ["subnet-xxxxxx", "subnet-yyyyyy", "subnet-zzzzzz"] } depends_on = [ aws_iam_role_policy_attachment.example-AmazonEKSClusterPolicy, ] }
内容的提问来源于stack exchange,提问作者Nirmal Naveen
相关产品推荐
相关产品推荐

