amazon-eks - 使用 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:等待成功资源状态失败
请帮我解决这个问题
解决方案
默认情况下,创建新集群会创建一个新 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```
推荐阅读
- java - 将 PHP 发送的 JSON 字符串中的欧元符号转换为 Java 字符串 (utf-8)
- angular - 如何防止“MatListOption”被选中/取消选中?
- angular - 已经加载的角度缓存图像?
- groovy - 规范化阶段在 Groovy 编译器设计中做了什么?
- java - 如何在此杀死 reverseTimer
- javascript - {key:""} 和 {key:""} 的区别,json 文件?
- java - Java:如何从数据库创建动态 JSON 树?
- fortran - 尽管输入正常,如何调试坏整数的错误
- node.js - AWS.HttpRequest 错误 - 无法获取本地颁发者证书
- python-3.x - Quandl EIA 天然气数据