You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用eksctl YAML创建EKS私有集群失败及aws sts命令挂起求助

问题根源分析

从报错信息dial tcp 10.0.13.173:443: i/o timeout和aws sts get-caller-identity挂起的现象来看,运行eksctl的EC2实例所在私有子网未配置访问AWS服务的网络路径,导致无法调用AWS API(如EC2、STS、CloudFormation等),进而EKS集群创建失败。

另外,你的YAML配置中privateCluster.enabled: true会默认关闭控制平面的公网访问,但你需求是控制平面同时支持公网和私网访问,这部分配置也存在偏差。


解决方案

1. 修复私有子网的网络访问能力

私有子网内的实例要访问AWS服务,有两种可选方案:

方案A:配置NAT网关(支持访问公网+AWS公共服务)

  • 在VPC的公有子网中创建NAT网关,并分配弹性IP
  • 更新私有子网的路由表,添加目标为0.0.0.0/0的路由,指向该NAT网关
  • 确保NAT网关所在公有子网有指向Internet网关(IGW)的路由规则

方案B:配置VPC终端节点(仅访问AWS内部服务,无需公网)

如果仅需调用AWS API,无需访问公网,可创建对应服务的VPC终端节点:

  • 为EC2、STS、CloudFormation、EKS等服务创建Interface/Gateway类型的终端节点
  • 将私有子网的路由表更新为指向这些终端节点
  • 确保EC2实例的安全组允许访问终端节点的443端口

2. 修正EKS集群的YAML配置

要实现控制平面同时支持公网和私网访问,需调整privateCluster配置,替换原有的privateCluster.enabled: true为以下内容:

privateCluster:
  enabled: true
  endpointPublicAccess: true
  endpointPrivateAccess: true

完整修正后的配置文件:

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: mydatta-fulleks
  region: us-east-1
  version: "1.25"

privateCluster:
  enabled: true
  endpointPublicAccess: true
  endpointPrivateAccess: true

vpc:
  id: vpc-0d31c6395248b8433
  subnets:
    private:
      us-east-1a:
        id: subnet-00cb7da5daec56f72
      us-east-1b:
        id: subnet-03ba080c3fd9e6d38

managedNodeGroups:
- name: mydatta-eks-ng1
  privateNetworking: true
  instanceType: t3.small
  desiredCapacity: 1
  labels:
    action: mydatta

3. 验证网络连通性

在EC2实例上先确认网络正常:

  • 执行curl -v https://ec2.us-east-1.amazonaws.com,若收到正常XML响应,说明网络路径有效
  • 再执行aws sts get-caller-identity,确认能返回身份信息,无挂起情况

4. 重新创建EKS集群

先清理之前失败的资源:

eksctl delete cluster --region=us-east-1 --name=mydatta-fulleks

再用修正后的配置文件重新创建集群:

eksctl create cluster -f your-cluster-config.yaml

内容的提问来源于stack exchange,提问作者kishore ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:15:07