使用Terraform升级EKS集群时遇Kubernetes版本不支持错误
尝试通过Terraform将EKS集群从Kubernetes 1.19升级至1.20版本时,执行terraform apply出现以下错误:
module.eks.aws_eks_cluster.this[0]: Creating...
Error: error creating EKS Cluster (produsw): InvalidParameterException: unsupported Kubernetes version
{
RespMetadata: {
StatusCode: 400,
RequestID: "35df498d-77cf-4412-9bf8-ff7daa54de66"
},
ClusterName: "produsw2",
Message_: "unsupported Kubernetes version"
}
on .terraform/modules/eks/cluster.tf line 9, in resource "aws_eks_cluster" "this":
9: resource "aws_eks_cluster" "this" {
已确认EKS支持1.20版本,但问题仍存在,以下是针对性解决步骤:
检查Terraform AWS Provider版本兼容性
EKS的Kubernetes版本支持和Terraform AWS Provider版本强绑定,旧版本Provider可能无法识别1.20。查看配置文件或.terraform.lock.hcl中的Provider版本,确保使用v3.22.0及以上版本:provider "aws" { region = "你的目标区域" version = ">= 3.22.0" }执行
terraform init -upgrade完成Provider升级。确认目标区域的EKS版本支持
部分AWS区域可能延迟推送新Kubernetes版本支持,通过AWS CLI验证目标区域是否真的支持1.20:aws eks describe-addon-versions --kubernetes-version 1.20 --region 你的目标区域若返回空结果,说明该区域暂不支持1.20,需更换支持的区域或等待区域更新。
更新EKS Terraform模块版本
若使用第三方EKS模块(如terraform-aws-modules/eks/aws),旧版本模块可能未适配1.20。将模块版本更新到v17.0.0及以上:module "eks" { source = "terraform-aws-modules/eks/aws" version = ">= 17.0.0" # 其他集群配置... }执行
terraform get -update更新模块。验证配置中的版本号准确性
确保集群资源配置里的kubernetes_version字段准确设置为"1.20",无拼写错误:resource "aws_eks_cluster" "this" { name = "produsw2" version = "1.20" # 其他配置... }清理Terraform状态缓存
若状态缓存存在异常,可能导致版本识别错误,执行以下命令重置后重新初始化:rm -rf .terraform/ terraform init
内容的提问来源于stack exchange,提问作者Bhagavat Bhise

