Amazon EKS でクラスター作成エラーを解決する方法を教えてください。

最終更新日: 2020 年 2 月 12 日

AWS CloudFormation または eksctl を使用して Amazon Elastic Kubernetes Service (Amazon EKS) クラスターをプロビジョニングすると、サービスエラーが発生します。

簡単な説明

次のトラブルシューティングのオプションを検討してください。

  • ターゲットアベイラビリティーゾーンにクラスターをサポートするための十分な容量がないことを示すエラーメッセージが表示された場合は、別のアベイラビリティーゾーンでクラスターを再作成するセクションの手順を完了します。
  • リソースの作成が失敗したことを示すエラーメッセージが表示された場合は、クラスターを作成するための正しい IAM 権限があることを確認するセクション、または Amazon VPC リソースをモニタリングするセクションの手順を完了します。
  • ワーカーノードを待機して作成がタイムアウトしたことを示すエラーメッセージが表示された場合は、ワーカーノードがコントロールプレーン 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

このエラーを解決するには、エラーメッセージから推奨されるアベイラビリティーゾーンを使用してもう一度クラスターを作成します。

AWS CloudFormation を使用してクラスターをプロビジョニングする場合は、アベイラビリティーゾーンに一致するサブネットのサブネットパラメータの値を渡します。

-- または --

eksctl を使用している場合は、--zones フラグを使用して異なるアベイラビリティーゾーンの値を渡します。たとえば、前述のエラーが発生した場合は、次のコマンドを実行します。

$ 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 権限があることを確認する

クラスターを作成するときに、Amazon EKS サービスの IAM ロールの正しいポリシーを含めて、正しい AWS Identity and Access Management (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

ヒント: エラーメッセージを読みやすくするには、AWS CloudFormation コンソールでエラーを確認してください。

エラーを解決するには、Amazon EKS の IAM ガイドラインを確認するか、ユーザーまたはロールに関連付けられた IAM ポリシーをトラブルシューティングします。

Amazon VPC リソースをモニタリングする

デフォルトでは、クラスターの作成時に eksctl によって新しい Amazon Virtual Private Cloud (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 を使用してリソースの制約を克服する

クラスターのワーカーノードをプロビジョニングする VPC とサブネットを指定する設定ファイルを作成するには、次のコマンドを実行します。

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

-- または --

(オプション 2) リソースの制約を克服するためにサービスクォータの引き上げをリクエストする

eksctl によってプロビジョニングされたクラスターの AWS CloudFormation スタックイベントでボトルネックとなるリソースに対するサービスクォータの引き上げをリクエストします。

ワーカーノードがコントロールプレーン API エンドポイントに到達できることを確認する

eksctl は、クラスターをデプロイする時に、起動されたワーカーノードがクラスターに登録され、Ready ステータスになるまで待機します。ワーカーノードがコントロールプレーンに到達できないか、無効な IAM ロールを持つ場合、次のエラーが表示されることがあります。

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

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合