使用eksctl创建仅公有节点EKS集群时节点创建后立即终止求助
问题分析与解决办法
常见原因及修复方案
1. 公有子网路由表缺少互联网访问路由
公有子网必须关联包含指向Internet Gateway(IGW)的路由表,否则节点实例无法访问EKS控制平面、ECR、S3等必要服务,初始化失败后会被自动终止。
- 修复:检查每个指定公有子网的关联路由表,确认存在目标为
0.0.0.0/0、下一跳为你的IGW ID的路由规则。
2. 节点IAM角色缺少核心权限
你的配置仅启用了附加策略,但节点组的基础IAM角色可能缺失EKS节点必需的核心权限,导致无法完成节点注册、镜像拉取等操作。
- 修复:
- 找到eksctl自动创建的节点实例角色(命名格式通常为
eksctl-eks-test-nodegroup-eks-test-workers-NodeInstanceRole-xxxx) - 确保该角色附加了
AmazonEKSWorkerNodePolicy、AmazonEC2ContainerRegistryReadOnly、AmazonEKS_CNI_Policy这三个核心托管策略 - 也可以直接在配置文件的
iam字段中添加eksworker: true,让eksctl自动注入核心权限:iam: withAddonPolicies: externalDNS: true certManager: true albIngress: true eksworker: true
- 找到eksctl自动创建的节点实例角色(命名格式通常为
3. 安全组/网络ACL限制了节点与控制平面的通信
EKS节点需要与控制平面建立双向TCP 443端口通信,若安全组或网络ACL阻断该流量,节点无法完成注册流程。
- 修复:
- 检查节点组使用的安全组(eksctl自动创建,命名类似
eksctl-eks-test-cluster/NodeSecurityGroup-xxxx),确保允许出站443流量到任意地址,同时允许来自集群控制平面安全组(命名类似eksctl-eks-test-cluster/ClusterSecurityGroup-xxxx)的入站流量 - 检查子网的网络ACL,确保允许TCP 443端口的双向流量(SSH 22端口可按需开放)
- 检查节点组使用的安全组(eksctl自动创建,命名类似
4. 节点无权限访问EKS引导脚本存储桶
节点启动时需要从AWS S3获取EKS引导脚本,若节点IAM角色无S3访问权限或网络无法连通S3,会导致初始化失败。
- 修复:确保节点IAM角色拥有
AmazonS3ReadOnlyAccess权限(或更精细的、针对EKS相关S3资源的访问权限),同时确认公有子网的路由配置能正常访问S3。
5. 指定的EC2密钥对不存在
配置中指定的ec2_key密钥对若未在us-east-2区域创建,可能影响节点初始化流程(虽不直接触发终止,但可能导致启动异常)。
- 修复:在
us-east-2区域创建名为ec2_key的EC2密钥对,或修改配置文件中的密钥对名称。
日志排查方式
若上述方案未解决问题,可通过以下方式获取精准错误信息:
- 查看EC2实例系统日志:在EC2控制台找到被终止的实例,查看「系统日志」标签,里面会记录节点启动时的具体错误(如权限不足、网络连接失败等)
- 执行
kubectl get events -A(若能正常连接集群)或eksctl get cluster eks-test,查看集群相关事件记录
内容的提问来源于stack exchange,提问作者TrongBang
相关产品推荐
相关产品推荐

