如何解决 Amazon EKS 中的集群创建错误?

2 分钟阅读
0

我在使用 AWS CloudFormation 或 eksctl 预置 Amazon Elastic Kubernetes Service (Amazon EKS) 集群时遇到服务错误。

简短描述

请考虑以下问题排查方案:

  • 您会收到一条错误消息,指出您的目标可用区没有足够的容量来支持集群。完成在请在其他可用分区重新创建集群部分中的步骤。
  • 您会收到一条错误消息,指出资源创建失败。请在确认是否具有正确的 IAM 权限创建集群部分或监控您的 Amazon VPC 资源部分中完成相关步骤。
  • 您会收到一条错误消息,指出等待 Worker 节点时创建超时。完成确认您的 Worker 节点可以到达控制面板 API 端点部分中的步骤。

解决方法

在另一个可用区中重新创建集群

如果您在一个有限容量的可用区域中启动控制面板实例,那么您会收到类似如下的错误:

Cannot create cluster 'sample-cluster' because us-east-1d, the targeted availability zone, does not currently have sufficient capacity to support the cluster. Retry and choose from these availability zones: us-east-1a, us-east-1b, us-east-1c

要解决上述错误,请使用错误消息中建议的可用区,再次创建集群

如果您正在使用 CloudFormation 提供集群,那么在子网参数中添加与可用分区匹配的子网值。

-或者-

如果您使用的是 eksctl,则使用 --可用区标志添加另一个可用区的值。例如:

$ eksctl create cluster 'sample-cluster' --zones us-east-1a,us-east-1b,us-east-1c

**注意:**用您的集群名称替换 sample-cluster。将 us-east-1aus-east-1bus-east-1c 替换为您的可用区。

确认您具有创建集群的正确 IAM 权限

创建集群时,请验证您是否拥有正确的 AWS 身份和访问管理 (IAM) 权限。这其中包含 Amazon EKS 服务 IAM 角色的正确策略。

您可以使用 eksctl 为集群创建必备资源,如 IAM 角色和安全组。所需的最低权限取决于您正在启动的 eksctl 配置。有关详细信息,请查看 eksctl GitHub 社区中的故障排除解决方案

如果您的集群有 IAM 权限问题,那么您可以在 eksctl 中收到类似如下的错误:

API: iam:CreateRole User: arn:aws:iam::your-account-id:user/your-user-name is not authorized to perform: iam:CreateRole on resource: arn:aws:iam::your-account-id:role/eksctl-newtest22-cluster-ServiceRole-10NXBYLSN4ULP

要解决上述错误,请查看 eksctl 网站上运行 eksctl 用例的最低 IAM 策略。另请参阅 Amazon EKS 的身份和访问管理,以及如何使用 IAM policy 对访问被拒绝或未经授权的操作错误进行故障排除?

监控您的 Amazon VPC 资源

创建集群时,eksctl 默认会创建一个新的 Amazon Virtual Private Cloud (Amazon VPC)。如果不希望 eksctl 创建新的 Amazon VPC,则必须在配置文件中指定自定义的 Amazon VPC 和子网。

如果您的集群存在 Amazon VPC 限制问题,您可能会收到以下错误消息:

The maximum number of VPCs has been reached. (Service: AmazonEC2; Status Code: 400; Error Code: VpcLimitExceeded; Request ID: a12b34cd-567e-890-123f-ghi4j56k7lmn)

要解决上述错误,请监控您的资源。例如,检查您的 AWS 区域中的 Amazon VPC 数量或创建集群的每个区域的互联网网关。有关更多信息,请参阅 Amazon VPC 配额

对于您所在区域内的 Amazon VPC 资源数量限制问题,您可以考虑以下选项:

(方案 1)使用现有的 Amazon VPC 克服资源限制问题

创建一个配置文件,指定要在其中配置集群 Worker 节点的 Amazon VPC 和子网:

$ eksctl create cluster sample-cluster -f cluster.yaml

-或者-

(方案 2)请求增加服务配额以克服资源限制问题

为提供 eksctl 的集群的 CloudFormation 堆栈事件中的资源请求增加服务配额

确认您的 Worker 节点可以到达控制面板 API 端点

eksctl 部署集群时,它将等待已启动的 Worker 节点加入集群并达到就绪状态。如果您的 Worker 节点无法到达控制面板或具有无效的 IAM 角色,则可能会收到以下错误消息:

timed out (after 25m0s) waiting for at least 4 nodes to join the cluster and become ready in "eksfbots-ng1"

要解决上述错误,请让您的 Worker 节点加入集群,并确认您的 Worker 节点处于就绪状态


AWS 官方
AWS 官方已更新 2 年前