如何使用Fargate创建AWS EKS Kubernetes集群及解决部署回滚问题
报错原因解析
你碰到的回滚报错核心来自VPC子网配置的缺失:
- 报错本身指向eksctl在创建集群关联资源时,需要从当前集群的CloudFormation栈中获取名为
eksctl-<集群名>-cluster::SubnetsPublic的公网子网导出值,但你的配置里只声明了私有子网,完全没有定义公网子网的相关条目,导致eksctl找不到对应的导出参数,触发资源创建失败,进而走回滚流程,最终栈状态停留在ROLLBACK_COMPLETE。 - 哪怕你计划所有工作负载都跑在私有子网的Fargate上,只要你选择了复用自定义VPC的模式,就必须把VPC内所有子网的分类(公网/私有)完整告知eksctl,否则它会按照默认的资源生成逻辑去查找公网子网的配置,必然会触发导出值不存在的报错。
修正后的可参考Fargate基础集群配置
你可以按照下面的结构调整原有配置,避开上述报错:
- 补全VPC块的公网子网声明,如果你的全私网VPC本身没有公网子网,需要显式添加
nat: none字段告知eksctl跳过公网子网的依赖检查 - 升级EKS版本到当前eksctl支持的稳定版本,避免1.19这类已停止维护的旧版本带来的兼容问题
- 如果不需要EC2节点组,可直接移除nodeGroups配置块,搭建纯Fargate架构的轻量化集群
调整后的参考配置:
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: test-kb-cluster-w-fg-profile region: us-west-2 version: "1.27" vpc: # 填入你复用的现有VPC ID id: vpc-<你的VPC ID> # 若VPC无任何公网子网,打开下面的配置跳过公网依赖 # nat: none subnets: # 补全现有VPC内的公网子网条目 public: us-west-2a: { id: subnet-<对应可用区公网子网ID> } us-west-2b: { id: subnet-<对应可用区公网子网ID> } us-west-2c: { id: subnet-<对应可用区公网子网ID> } private: us-west-2a: { id: subnet-<对应可用区私有子网ID> } us-west-2b: { id: subnet-<对应可用区私有子网ID> } us-west-2c: { id: subnet-<对应可用区私有子网ID> } # 若不需要EC2节点组,可删除/注释下方nodeGroups块 # nodeGroups: # - name: test-eks-linux-nodes # instanceType: t2.micro # desiredCapacity: 1 fargateProfiles: - name: test-fp-default selectors: - namespace: default - namespace: kube-system
回滚后的操作注意事项
之前创建失败、停留在ROLLBACK_COMPLETE状态的CloudFormation栈会残留部分已创建的资源,不会自动完全清理,你需要先在CloudFormation控制台手动删除这个处于回滚完成状态的栈,再重新运行集群创建命令,否则会因为资源重名、权限关联残留出现新的报错。
内容的提问来源于stack exchange,提问作者user10664542
相关产品推荐
相关产品推荐

