Amazon EKS クラスターの API サーバーエンドポイントの問題をトラブルシューティングする方法を教えてください。

最終更新日: 2020 年 1 月 27 日

Amazon Elastic Kubernetes Service (Amazon EKS) クラスターでエンドポイントアクセス設定をパブリックからプライベートに変更しました。これで、クラスターが「失敗」状態でスタックするか、kubectl コマンドを実行できません。

簡単な説明

Kubernetes API サーバーエンドポイントに問題がある場合は、以下のいずれかのセクションの手順を完了してください。

  • クラスターが「失敗」状態のままスタックし、エンドポイントアクセス設定をパブリックからプライベートに変更できません。
  • エンドポイントアクセスをパブリックからプライベートに変更した後、クラスターで kubectl コマンドを実行できません。

注意: Kubernetes API サーバーエンドポイントへのアクセスを設定するには、Amazon EKS で API サーバーへのパブリックおよびプライベートアクセスを設定する方法を教えてくださいを参照してください。

解決方法

クラスターが「失敗」状態のままスタックし、エンドポイントアクセス設定をパブリックからプライベートに変更できません。

AWS Identity and Access Management (IAM) 権限の問題により、クラスターが「失敗」状態になっている可能性があります。

1.    ユーザーの IAM ロールに、AssociateVPCWithHostedZone アクションを実行する権限が付与されていることを確認します。

注意: アクションがブロックされていない場合は、API 呼び出しをブロックし、クラスターが失敗する原因である AWS Organizations ポリシー がユーザーのアカウントにあるかどうかを確認します。

2.    IAM ユーザーの権限が、暗黙的に (許可ポリシーステートメントに含まれない) または明示的に (拒否ポリシーステートメントに含まれる)、アカウントより上のどのレベルでもブロックされていないことを確認します。

注意: アカウント管理者が */* 権限を持つ AdministratorAccess IAM ポリシーを IAM ユーザーにアタッチしても、権限はブロックされます。IAM エンティティの権限は、Organizations ポリシーからの権限によって上書きされます。

エンドポイントアクセスをパブリックからプライベートに変更した後、クラスターで kubectl コマンドを実行できません。

1.    踏み台ホストまたは接続されたネットワーク (ピア接続 VPC、AWS Direct Connect、VPN など) を使用して Amazon EKS API エンドポイントにアクセスしていることを確認します。

注意: プライベートアクセスモードでは、クラスターの VPC 内からのみ Amazon EKS API エンドポイントにアクセスできます。

2.    セキュリティグループまたはネットワークアクセスコントロールリストが API 呼び出しをブロックしているかどうかを確認します。

ピア接続 VPC 経由でクラスターにアクセスする場合は、セキュリティグループで、 ピア接続 VPC からポート 443 でのコントロールプレーンのセキュリティグループへのアクセスが許可されていることを確認します。また、ピア接続された VPC の両方でポート 53 が開いていることを確認します (DNS 解決に使用)。