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

上次更新日期:2022 年 8 月 26 日

我在使用 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

监控您的 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"

这篇文章对您有帮助吗?


您是否需要账单或技术支持?