首页 > 解决方案 > 使用 eksctl 创建 aws EKS Kubernetes 集群时出错

问题描述

我尝试在代码下方运行并使用 eksctl 创建 aws eks kubernetes 集群,

eksctl create cluster \

--version 1.14
--region us-west-2
--node-type t3.medium
--nodes 3
--nodes-min 1
--nodes-max 4
--name my-demo
--kubeconfig=$HOME/kubeconfigs /demo-cluster-config.yaml

结果我得到了以下错误,

[ℹ] eksctl 版本 0.35.0

[ℹ] 使用区域 us-west-2

[ℹ] 将可用区设置为 [us-west-2b us-west-2a us-west-2c]

[ℹ] us-west-2b 的子网 - public:192.168.0.0/19 private:192.168.96.0/19

[ℹ] us-west-2a 的子网 - public:192.168.32.0/19 private:192.168.128.0/19

[ℹ] us-west-2c 的子网 - public:192.168.64.0/19 private:192.168.160.0/19

[ℹ] 节点组“ng-6c4aa136”将使用“ami-0f9f033f2355ab1f8”[AmazonLinux2/1.18]

[ℹ] 使用 Kubernetes 1.18 版本

[ℹ] 在 "us-west-2" 区域中创建 EKS 集群 "my-demo" 和非托管节点

[ℹ] 将为集群本身和初始节点组创建 2 个单独的 CloudFormation 堆栈

[ℹ] 如果您遇到任何问题,请检查 CloudFormation 控制台或尝试 'eksctl utils describe-stacks --region=us-west-2 --cluster=my-demo'

[ℹ] “us-west-2”中的集群“my-demo”不会启用 CloudWatch 日志记录

[ℹ] 您可以使用 'eksctl utils update-cluster-logging --enable-types={SPECIFY-YOUR-LOG-TYPES-HERE (eg all)} --region=us-west-2 --cluster= 启用它我的演示'

[ℹ] Kubernetes API 端点访问将在“us-west-2”中为集群“my-demo”使用默认的 {publicAccess=true, privateAccess=false}

[ℹ] 2个顺序任务:{创建集群控制平面“my-demo”,3个顺序子任务:{无任务,创建插件,创建节点组“ng-6c4aa136”}}

[ℹ] 构建集群堆栈“eksctl-my-demo-cluster”

[ℹ] 部署堆栈“eksctl-my-demo-cluster”

[✖] 等待 CloudFormation 堆栈“eksctl-my-demo-cluster”时出现意外状态“ROLLBACK_IN_PROGRESS”

[ℹ] 获取堆栈事件以尝试排除故障的根本原因

[✖] AWS::IAM::Role/ServiceRole: CREATE_FAILED – “资源创建已取消”

[✖] AWS::EC2::InternetGateway/InternetGateway: CREATE_FAILED –“已达到 Internet 网关的最大数量。(服务:AmazonEC2;状态代码:400;错误代码:InternetGatewayLimitExceeded;请求 ID:e53b2d09-6d4a-4eef-b8ed-b52c1104bb89;代理:null)"

[✖] AWS::EC2::VPC/VPC: CREATE_FAILED –“已达到最大 VPC 数量。(服务:AmazonEC2;状态代码:400;错误代码:VpcLimitExceeded;请求 ID:e1dca3e9-6134-41d9-92a3-4bf44c0c375f;代理:null)"

[✖] AWS::EC2::EIP/NATIP: CREATE_FAILED – “已达到最大地址数。(服务:AmazonEC2;状态代码:400;错误代码:AddressLimitExceeded;请求 ID:50f1e75a-404f-40ff-820a-13a18a3d2f3f;代理:null)"

[!] 发生 1 个错误且集群未正确创建,您可能希望检查 CloudFormation 控制台

[ℹ] 清理资源,运行 'eksctl delete cluster --region=us-west-2 --name=my-demo'

[✖] 等待 CloudFormation 堆栈“eksctl-my-demo-cluster”:ResourceNotReady:等待成功资源状态失败

请帮我解决这个问题

标签: amazon-ekskubernetes-clustereksctl

解决方案


默认情况下,创建新集群会创建一个新 VPC。由于每个区域都有 VPC配额,因此尝试创建新 VPC 可能会超出配额限制并导致集群创建失败。有几个解决方案:

1.请求增加配额

  • 使用以下命令检查您当前的配额(确保使用正确的区域):

    aws service-quotas get-service-quota --service-code vpc --quota-code L-F678F1CE --region us-east-1

  • 响应应如下所示(在本例中配额为5):

       "Quota": {
           "ServiceCode": "vpc",
           "ServiceName": "Amazon Virtual Private Cloud (Amazon VPC)",
           "QuotaArn": "arn:aws:servicequotas:us-east-1:570398916848:vpc/L-F678F1CE",
           "QuotaCode": "L-F678F1CE",
           "QuotaName": "VPCs per Region",
           "Value": 5.0,
           "Unit": "None",
           "Adjustable": true,
           "GlobalQuota": false
       }
   }
  • 使用以下方式请求增加配额(在这种情况下,请求是针对10):

    aws service-quotas request-service-quota-increase --service-code vpc --quota-code L-F678F1CE --region us-east-1 --desired-value 10

  • 请求获得批准后,您可以创建集群

2. 在现有 VPC 上创建集群

  • 您需要从您的 VPC 中列出至少 2 个子网(至少 2 个公共子网或 2 个私有子网)

  • 例如对于公共子网使用--vpc-public-subnets

  • 在您的情况下,命令应该如下所示(我已经升级了 k8s 版本)

     eksctl create cluster \
     --version 1.21 \
     --region us-west-2 \
     --node-type t3.medium \
     --nodes 3 \
     --nodes-min 1 \
     --nodes-max 4 \
     --name my-demo \
     --kubeconfig=$HOME/kubeconfigs/demo-cluster-config.yaml \
     --vpc-public-subnets=subnet-0153e560b3129a696,subnet-0cc9c5aebe75083fd```
    
    

推荐阅读