このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? すべてのページの右側のペインにある GitHub リンクで、このページの編集を選択してください。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
アマゾン EKS の使用を開始する – AWS Management Console と AWS CLI
注記
このトピックではEKS 自動モードl を使用せずに開始する方法について説明します。管理されたノードグループ を使用してノードをデプロイします。
EKS 自動モードl はクラスターコンピューティング、ストレージ、ネットワーキングのルーチンタスクを自動化します。アマゾン EKS 自動モードl の使用を開始する方法について説明します。ノードをデプロイするにはEKS 自動モードが推奨されます。
このガイドではAWS Management Console と AWS CLI を使用して、アマゾン エラスティックKubernetesサービス (アマゾン EKS 使用開始するために必要なすべてのリソースを作成する方法を解説します。ここでは各リソースを手動で作成します。このチュートリアルの終わりにはアプリケーションのデプロイが可能な、実行状態の アマゾン EKS クラスターが完成します。
このガイドの手順に従うと、各リソースがどのように作成され、リソース間でどのようにやり取りするかを全面的に把握できます。大半のリソースを自動的に作成させたい場合にはクラスターとノードの作成に eksctl
CLI を使用します。詳細については「Amazon EKS – eksctl の使用を開始する」を参照してください。
前提条件
このチュートリアルを開始する前に、アマゾン EKS クラスターの作成と管理に必要な次のツールとリソースを、インストールおよび設定しておく必要があります。
-
AWS CLI – アマゾン EKS など AWS のサービスを操作するためのコマンドラインツールです。詳細についてはAWS コマンドラインインターフェイスユーザーガイドの「インストール」を参照してください。AWS CLI のインストール後は設定も行っておくことをお勧めします。詳細についてはAWS コマンドラインインターフェイスユーザーガイドの「aws configure を使用したクイック設定」を参照してください。なお、このページにある [update-kubeconfig] オプションを使用するにはAWS CLI v2 が必要です。
-
kubectl
- Kubernetes クラスターを操作するためのコマンドラインツール。詳細については「kubectl および eksctl のセットアップ」を参照してください。 -
必要な IAM アクセス許可 – 使用している IAM セキュリティプリンシパルにはアマゾン EKS の IAM ロール、サービスにリンクされたロール、AWS クラウドフォーメーション、VPC、その関連リソースを操作するための権限が必要になります。詳細については「IAM ユーザーガイド」の「アクション」および「サービスにリンクされたロールの使用」を参照してください。このガイドのすべてのステップは1 つのユーザーとして実行する必要があります。現在のユーザーを確認するには次のコマンドを実行してください:
aws sts get-caller-identity
このトピック内のステップはバッシュ シェル内で実行することが推奨されます。Bash シェルを使用していない場合、行継続文字や、変数の設定と使用に関する方法など、一部のスクリプトコマンドのためにシェルの調整が必要となります。さらに、シェルの引用規則とエスケープ規則は異なる場合があります。詳細については「AWS コマンドラインインターフェイスのユーザーガイド」の「AWS CLI での文字列への引用符の使用」を参照してください。
ステップ 1: アマゾン EKS クラスターを作成する
重要
可能な限りシンプルかつ迅速に使用を開始するため、このトピックではクラスターをデフォルトの設定で作成するステップについて説明します。本番で使用するクラスターを作成する前に、すべての設定内容に習熟した上で、要件を満たす設定でクラスターをデプロイすることをお勧めします。詳細については「アマゾン EKS クラスターを作成します。」を参照してください。一部の設定はクラスターの作成時にのみ有効にできます。
-
アマゾン EKS の要件を満たすように、パブリックサブネットとプライベートサブネットを持つ アマゾン VPC を作成します。
地域コード
はアマゾン EKS がサポートする任意の AWS リージョンに置き換えます。AWS リージョンの一覧についてはAWS の全般的なリファレンスガイドの「アマゾン EKS エンドポイントとクォータ」を参照してください。my-eks-vpc-stack
は任意の名前に置き換えることができます。aws cloudformation create-stack \ --region
region-code
\ --stack-name my-eks-vpc-stack \ --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yamlヒント
前のコマンドが作成したすべてのリソースの一覧についてはAWS コンソール のhttps://console.aws.amazon.com/cloudformation
開きます: my-eks-vpc-stack
スタックを選択し、[Resources] (リソース タブを選択してください。 -
クラスター IAM ロールを作成し、必要な アマゾン EKS IAM マネージドポリシーをそれにアタッチします。アマゾン EKS によって管理される Kubernetes クラスターはサービスで使用するリソースを管理するために、ユーザーに代わって他の AWS サービスを呼び出します。
-
次の内容を
eks-cluster-role-trust-policy.json
という名前のファイルにコピーします。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
ロールを作成します。
aws iam create-role \ --role-name myAmazonEKSClusterRole \ --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
-
このロールに、必要な アマゾン EKS 管理の IAM ポリシーをアタッチします。
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \ --role-name myAmazonEKSClusterRole
-
-
アマゾン EKS コンソール のhttps://console.aws.amazon.com/eks/home#/clusters
開きます: コンソールの右上に表示されている AWS リージョンが、クラスターを作成する AWS リージョンであることを確認します。異なる場合はAWS リージョン名の横にあるドロップダウンを展開し、使用する AWS リージョンを選択してください。
-
[クラスターを作成] を選択してください。このオプションが表示されない場合はまず左のナビゲーションペインの [クラスター] を選択してください。
-
[クラスターの設定] ページで、次の手順を実行してください:
-
カスタム設定を選択し、Use EKS Auto Modeを無効にします。(EKS 自動モードクラスターを使用する場合は代わりに「」を参照してください)AWS マネジメントコンソールを使用して EKS Auto Mode クラスターを作成する。
-
[名前] に、クラスターの名前 ( など)
を入力します
。この名前には英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前はクラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。 -
[クラスターサービス役割] で、「
マイアマゾンEKSクラスター役割
」を選択してください。 -
その他の設定はデフォルト値のままにし、[次へ] をクリックします。
-
-
[ネットワーキングを指定] ページで、以下の作業を行います:
-
前のステップで [VPC] ドロップダウンリストから作成した VPC の ID を選択してください。この ID は
vpc-00x0000x000x0x000
|my-eks-vpc-stack-VPC
のような値です。 -
その他の設定はデフォルト値のままにし、[次へ] をクリックします。
-
-
[オブザーバビリティの設定]ページで、[次へ] を選択してください。
-
[アドオンの選択] ページで、[次へ] を選択してください。
アドオンの詳細については「アマゾン EKS アドオン」を参照してください。
-
[選択したアドオンセッティングの設定] ページで、[次へ] を選択してください。
-
[確認して作成] ページで、[作成] をクリックします。
クラスターのプロビジョニングプロセスが完了するまで、数分の間、クラスター名の右側でステータスが [作成中] と表示されます。ステータスが [アクティブ] になるまで、次のステップに進まないでください。
注記
リクエストで指定したアベイラビリティーゾーンのいずれかに、アマゾン EKS クラスターの作成に十分な容量がない場合にはエラーが表示されることがあります。このエラー出力には新しいクラスターをサポートできるアベイラビリティーゾーンが表示されます。アカウント向けにサポートされているアベイラビリティーゾーンにある 2 つ以上のサブネットを使用して、クラスターを作成します。詳細については「容量不足」を参照してください。
ステップ 2: 自分のコンピュータでクラスターとの通信を設定する
このセクションではクラスター用の kubeconfig
ファイルを作成します。このファイルの設定により、kubectl
CLI からクラスターへの通信ができるようになります。
先に進む前に、ステップ 1 で必ずクラスターの作成を正常に完了してください。
-
クラスター用の
kubeconfig
ファイルを作成もしくは更新します。地域コード
をクラスターを作成した AWS リージョンに置き換えます。マイクラスター
の部分は自分のクラスター名に置き換えます。aws eks update-kubeconfig --region
region-code
--namemy-cluster
デフォルトでは
config
ファイルが~/.kube
に作成されるか、config
ファイルが既に~/.kube
に存在する場合にはその中に新しいクラスター設定が追加されます。 -
設定をテストします。
kubectl get svc
注記
認可またはリソースタイプのエラーが発生した場合はトラブルシューティングトピックの「許可されていないか、アクセスが拒否されました (kubectl)」を参照してください。
出力例は次のとおりです。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m
ステップ 3: ノードを作成する
重要
可能な限りシンプルかつ迅速に使用を開始するため、このトピックではノードをデフォルトの設定で作成するステップについて説明します。本番で使用するノードを作成する前に、すべての設定内容に習熟した上で、要件を満たす設定でノードをデプロイすることをお勧めします。詳細については「ノードを使用してコンピューティングリソースを管理する」を参照してください。一部の設定はノードの作成時にのみ有効にできます。
このステップではマネージド型ノードグループを使用してノードを作成するようにクラスターを設定し、前のステップで作成したサブネットとノード IAM ロールを指定します。これにより、Amazon EC2 インスタンスで Amazon リナックス アプリケーションを実行できます。
EKS でノードを設定するさまざまな方法については「ノードを使用してコンピューティングリソースを管理する」を参照してください。クラスターをデプロイした後に、他のノードタイプを追加できます。このガイドでは説明していませんが、Windows セルフマネージド型および Bottlerocket ノードを、クラスターに追加することもできます。
Amazon EC2 Linux マネージド型ノードグループを作成するには
-
ノードの IAM ロールを作成して、必要な アマゾン EKS IAM 管理ポリシーをアタッチします。アマゾン EKS ノード
kubelet
デーモンが、ユーザーに代わって AWS API への呼び出しを実行してください。ノードはIAM インスタンスプロファイルおよび関連ポリシーを通じて、これらの API コールのアクセス許可を受け取ります。-
次の内容を
node-role-trust-policy.json
という名前のファイルにコピーします。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
ノードの IAM ロールを作成します。
aws iam create-role \ --role-name myAmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-policy.json"
-
ロールに、必要なマネージド IAM ポリシーをアタッチします。
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name myAmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name myAmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name myAmazonEKSNodeRole
-
アマゾン EKS コンソール のhttps://console.aws.amazon.com/eks/home#/clusters
開きます: -
ステップ 1: アマゾン EKS クラスターを作成するで作成したクラスターの名前 (
マイクラスター
など 選択してください: -
[
マイクラスター
] ページで、次の操作を行います: -
[コンピューティング] タブを開きます。
-
[ノードグループを追加] をクリックします。
-
-
[ノードグループの設定] ページで以下を実行してください:
-
[名前] に、マネージド型ノードグループの一意の名前 (
マイノードグループ
など 入力してください。ノードグループ名は 63 文字以下である必要があります。先頭は文字または数字でなければなりませんが、残りの文字にはハイフンおよびアンダースコアを含めることもできます。 -
[ノード IAM ロール名] で、前のステップで作成した
マイアマゾンEKSNodeRole
ロールを選択してください。各ノードグループには独自の一意の IAM ロールを使用することをお勧めします。 -
[ 次へ] を選択してください。
-
-
[コンピューティングとスケーリングの設定] ページではデフォルトの値を受け入れ、[次へ] をクリックします。
-
[ネットワーキングの指定] ページではデフォルトの値を受け入れ、[次へ] をクリックします。
-
[確認と作成] ページで、マネージド型ノードグループの設定を確認し、[作成] を選択してください。
-
数分後、[ノードグループの設定] セクションにある [ステータス] の表示が、[作成中] から [アクティブ] に変わります。ステータスが [アクティブ] になるまで、次のステップに進まないでください。
ステップ 4: リソースを表示する
ノードと Kubernetes のワークロードを表示することができます。
-
左のナビゲーションペインで [クラスター] を選択してください。[クラスター] のリストで
マイクラスター
など、作成したクラスターの名前を選択してください。 -
[
マイクラスター
] ページで、次の項目を選択してください:-
[コンピューティング] タブ – クラスターにデプロイした [ノード] が一覧表示されます。ノードの名前を選択すると、そのノードに関するより詳細な情報が表示されます。
-
[リソース] タブ - アマゾン EKS クラスターにデフォルトでデプロイされたすべての Kubernetes リソースが表示されます。コンソールでリソースタイプを選択すると、その詳細を確認できます。
-
ステップ 5: リソースを削除する
このチュートリアルのために作成したクラスターとノードの使用が終了したら、作成したリソースを削除する必要があります。リソースを削除する前に、他の目的でこのクラスターを使用する場合は次のステップ を参照してください。
-
ここで作成した、いずれかのノードグループもしくは Fargate プロファイルを削除してください。
-
アマゾン EKS コンソール のhttps://console.aws.amazon.com/eks/home#/clusters
開きます: -
左のナビゲーションペインで [クラスター] を選択してください。クラスターのリストから
マイクラスター
を選択してください。 -
[コンピューティング] タブを開きます。
-
ノードグループを作成している場合はノードグループ「
マイノードグループ
」を選択した上で、[削除]を クリックしてください。マイノードグループ
と入力し、[削除] を選択してください。 -
ノード グループ プロファイルが削除されるまで続行しないでください。
-
-
クラスターを削除します。
-
左のナビゲーションペインで [クラスター] を選択してください。クラスターのリストから
マイクラスター
を選択してください。 -
[クラスターの削除] を選択してください。
-
マイクラスター
と入力し、[削除] を選択してください。クラスターが削除されるまで続行しないでください。
-
-
作成した VPC AWS クラウドFormation スタックを削除します。
-
クラウドフォーメーション コンソール のhttps://console.aws.amazon.com/cloudformation/
開きます: -
「
my-eks-vpc-stack
」スタックを選択した上で、[削除] クリックしてください。 -
[
my-eks-vpc-stack
の削除] 確認ダイアログボックスで、[スタックを削除] を選択してください。
-
-
作成した IAM ロールを削除します。
-
IAM コンソール のhttps://console.aws.amazon.com/iam/
開きます: -
左のナビゲーションペインで、[ロール] を選択してください。
-
リスト ([マイアマゾンEKSクラスター役割
]、および、
[アマゾンEKSFargatePodExecutionRole] または[マイアマゾンEKSNodeRole]
から、作成した各ロールを選択してください。[削除] を選択し、要求された確認テキストを入力した後で、[削除] をクリックします。
-
次のステップ
以下のトピックはクラスターの機能を拡張するのに役立ちます。
-
クラスターを作成した IAM プリンシパルは
kubectl
または AWS Management Console を使用して Kubernetes API サーバーを呼び出すことができる唯一のプリンシパルです。他の IAM プリンシパルがクラスターにアクセスできるようにする場合はそれらを追加する必要があります。詳細については「IAM ユーザーおよびロールに Kubernetes APIs へのアクセスを付与する」および「必要なアクセス許可」を参照してください。 -
サンプルアプリケーションをクラスターにデプロイします。
-
本番用にクラスターをデプロイする前に、クラスターとノードのすべての設定を理解しておくことをお勧めします。アマゾン EC2 ノードへの SSH アクセスの有効化など一部の設定はクラスターの作成時に行う必要があります。
-
クラスターのセキュリティを強化するにはサービスアカウントの IAM ロールを使用する アマゾン VPC コンテナネットワークインターフェイスプラグインの設定を行ってください。