このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
kubeconfig ファイルを作成して kubectl を EKS クラスターに接続する
ヒント
今後開催予定の Amazon EKS ワークショップに登録
このトピックでは、クラスター用の kubeconfig ファイルを作成します (または既存のファイルを更新します)。
kubectl コマンドラインツールは、kubeconfig ファイルの設定情報を使用して、クラスターの API サーバーと通信します。詳細については、Kubernetes ドキュメントの「kubeconfig ファイルを使用してクラスターアクセスを組織する
Amazon EKS はクラスター認証に kubectl で aws eks get-token コマンドを使用します。デフォルトでは、AWS CLI は次のコマンドで返されるものと同じ認証情報を使用します。
aws sts get-caller-identity
-
既存の Amazon EKS クラスター。デプロイするには、Amazon EKS の使用を開始する を参照してください。
-
デバイスまたは AWS CloudShell に、
kubectlコマンドラインツールがインストールされていること。バージョンはご使用のクラスターの Kubernetes バージョンと同じか、1 つ前のマイナーバージョン以前、あるいはそれより新しいバージョンが使用できます。例えば、クラスターのバージョンが1.29である場合、kubectlのバージョン1.28、1.29、または1.30が使用できます。kubectlをインストールまたはアップグレードする方法については、kubectl および eksctl のセットアップ を参照してください。 -
ご使用のデバイスまたは AWS CloudShell で、バージョン
2.12.3以降、または AWS コマンドラインインターフェイス (AWS CLI) のバージョン1.27.160以降がインストールおよび設定されていること。現在のバージョンを確認するには、aws --version | cut -d / -f2 | cut -d ' ' -f1を参照してください。yum、apt-get、macOS 用の Homebrew などのパッケージマネージャーは、多くの場合 AWS CLI の最新バージョンより数バージョン古くなっています。最新バージョンをインストールするには、「 AWS コマンドラインインターフェイスユーザーガイド」の「インストール」および「aws configure を使用したクイック設定」を参照してください。AWS クラウドシェル にインストールされている AWS CLI バージョンも最新バージョンより数バージョン遅れることがあります。更新するには、「AWS CloudShell ユーザーガイド」の「ホームディレクトリへの AWS CLI のインストール」を参照してください。 -
指定したクラスターに対して
eks:DescribeClusterAPI アクションを使用するアクセス許可を持つ IAM ユーザーまたはロール。詳細については、Amazon EKS でのアイデンティティベースのポリシーの例 を参照してください。独自の OpenID Connect プロバイダーの ID を使用してクラスターにアクセスする場合は、Kubernetes ドキュメントの「kubectl の使用」を参照して、 kube configファイルを作成または更新してください。
EKS コンソールを使用して接続する (CloudShell)
AWS CloudShell を使用して、ローカルセットアップなしで AWS マネジメントコンソール からクラスターに直接接続できます。
-
https://console.aws.amazon.com/eks/home#/clusters
で Amazon EKS コンソールを開きます。 -
接続するクラスターの名前を選択します。
-
クラスターの詳細ページで、右上のアクションバーから [接続] を選択します。
-
AWS CloudShell は、クラスター用に事前設定された
kubectlで開きます。
接続したら、kubectl コマンドをすぐに実行できます。
kubectl get nodes kubectl get pods -A
CloudShell セッションには、kubectl、AWS CLI、および標準の CloudShell ユーティリティが含まれます。この機能は、パブリック API サーバーエンドポイントとプライベート API サーバーエンドポイントの両方を持つクラスターをサポートします。プライベートエンドポイントを持つクラスターの場合、CloudShell は自動的に VPC 環境を起動してクラスターのプライベート API サーバーに到達し、環境の名前を入力するように求めます。
AWS CLI を使用して kubeconfig ファイルを作成する
-
ご使用のデバイスまたは AWS CloudShell で、バージョン
2.12.3以降、または AWS コマンドラインインターフェイス (AWS CLI) のバージョン1.27.160以降がインストールおよび設定されていること。現在のバージョンを確認するには、aws --version | cut -d / -f2 | cut -d ' ' -f1を参照してください。yum、apt-get、macOS 用の Homebrew などのパッケージマネージャーは、多くの場合 AWS CLI の最新バージョンより数バージョン古くなっています。最新バージョンをインストールするには、「 AWS コマンドラインインターフェイスユーザーガイド」の「インストール」および「aws configure を使用したクイック設定」を参照してください。AWS クラウドシェル にインストールされている AWS CLI バージョンも最新バージョンより数バージョン遅れることがあります。更新するには、「AWS CloudShell ユーザーガイド」の「ホームディレクトリへの AWS CLI のインストール」を参照してください。 -
指定したクラスターに対して
eks:DescribeClusterAPI アクションを使用するアクセス許可。詳細については、Amazon EKS でのアイデンティティベースのポリシーの例 を参照してください。-
クラスター用の
kubeconfigファイルを作成もしくは更新します。region-codeはクラスターがある AWS リージョンに、my-clusterはクラスターの名前に置き換えます。aws eks update-kubeconfig --region region-code --name my-clusterデフォルトでは、最終的な設定ファイルは、ホームディレクトリのデフォルト
kubeconfigパス (.kube) に作成されるか、その場所で既存configファイルとマージされます。別のパスは--kubeconfigオプションを使用して指定できます。kubectlコマンドを発行する場合、認証に使用する--role-arnオプションで IAM ロール ARN を指定できます。それ以外の場合は、デフォルトの AWS CLI または SDK の認証情報チェーンの中の IAM プリンシパルが使用されます。デフォルトの AWS CLI または SDK の ID を表示するには、aws sts get-caller-identityコマンドを実行します。使用可能なすべてのオプションについては、
aws eks update-kubeconfig helpコマンドを実行するか、「AWS CLI コマンドリファレンス」の「update-kubeconfig」を参照してください。 -
設定をテストします。
kubectl get svc出力例は次のとおりです。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m認可またはリソースタイプのエラーが発生した場合は、トラブルシューティングトピックの 許可されていないか、アクセスが拒否されました (kubectl) を参照してください。
-