创建EKS的aws-ebs-csi-driver插件时Terraform报错,求代码修改方案
问题解决:EKS AWS EBS CSI插件CREATE_FAILED错误
错误原因
这个错误的核心是集群中已存在手动部署的EBS CSI驱动资源(比如ebs-csi-node DaemonSet),其spec.selector字段和AWS官方EKS插件期望的配置不一致。由于Kubernetes中DaemonSet的spec.selector是不可变字段,即使设置了resolve_conflicts_on_create = "OVERWRITE",Terraform也无法覆盖修改这个字段,导致插件创建失败。
修改步骤与代码调整
1. 清理集群中现有冲突资源
先通过kubectl删除旧的EBS CSI相关资源:
kubectl delete daemonset ebs-csi-node -n kube-system kubectl delete deployment ebs-csi-controller -n kube-system kubectl delete serviceaccount ebs-csi-controller-sa -n kube-system
确保所有旧的EBS CSI驱动组件都被清理干净。
2. 调整Terraform代码
保留核心配置的基础上,补充更新时的冲突处理策略,避免后续更新出现类似问题:
resource "aws_eks_addon" "ebs_csi_addon" { cluster_name = var.eks_cluster_name addon_name = "aws-ebs-csi-driver" resolve_conflicts_on_create = "OVERWRITE" resolve_conflicts_on_update = "OVERWRITE" service_account_role_arn = module.ebs_csi_eks_role.iam_role_arn depends_on = [aws_eks_cluster.eks-cluster, aws_eks_node_group.eks-ng] }
3. 重新执行Terraform操作
清理完成后,重新初始化并应用:
terraform init terraform apply
额外说明
如果之前是通过Helm或者手动YAML部署的EBS CSI驱动,一定要完全清理所有相关资源(包括CRDs、RBAC规则等),否则官方插件仍会因为资源冲突无法正常创建。
内容的提问来源于stack exchange,提问作者Dinesh Kumar
相关产品推荐
相关产品推荐

