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 の ID とアクセス管理」と「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 のクォータを参照してください。

リージョン内の 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公式更新しました 1年前
コメントはありません

関連するコンテンツ