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

所要時間2分
0

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

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

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

または、

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 アクセス許可があることを確認する

クラスターを作成するときは、適切な AWS Identity and Access Management (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 の Identity and Access Management」と「IAM ポリシーで、アクセス拒否エラーまたは不正操作のエラーをトラブルシューティングする方法を教えてください。」も参照してください。

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 quotas」を参照してください。

リージョン内の Amazon VPC リソースの数に対するリソース制約に関連する問題については、次のいずれかのオプションを検討してください。

(オプション 1) 既存の Amazon VPC を使用してリソース制約を克服する

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

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

または、

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

eksctl がプロビジョニングしたクラスターの 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"

このエラーを解決するには、ワーカーノードをクラスターに参加させワーカーノードが Ready ステータスであることを確認します。


AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ