このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
このトピックでは、高度な設定オプションを使用して Amazon EKS Auto Mode クラスターを作成する詳細な手順について説明します。前提条件、ネットワーキングオプション、アドオン設定を取り上げています。このプロセスには、IAM ロールの設定、クラスター設定の構成、ネットワーキングパラメータの指定、アドオンの選択が含まれます。ユーザーは、AWS Management Consoleまたは AWS CLI のいずれかを使用してクラスターを作成でき、どちらの方法でもステップバイステップのガイダンスが付いています。
より複雑でないセットアッププロセスを求める場合は、クラスター作成手順の簡略化について以下を参照してください。
この高度な設定ガイドは、EKS Auto Mode クラスターのセットアップをより細かく制御する必要があり、Amazon EKS の概念と要件に精通しているユーザーを対象としています。高度な設定に進む前に、すべての前提条件を満たし、EKS Auto Mode クラスターのネットワーキングおよび IAM 要件を十分に理解してください。
EKS Auto Mode には、追加の IAM アクセス許可が必要です。詳細については、以下を参照してください。
注記
EKS Auto Mode を使用せずにクラスターを作成する場合は、「Amazon EKS クラスターを作成します。」を参照してください。
このトピックでは、高度な設定を取り上げています。EKS Auto Mode を使用して開始する場合は、「Amazon EKS 自動モードl クラスターを作成する」を参照してください。
前提条件
-
Amazon EKS の要件 を満たす既存の VPC とサブネット。本番用にクラスターをデプロイする前に、VPC とサブネットの要件を十分に理解しておくことをお勧めします。VPC とサブネットがない場合はAmazon EKS に用意されている AWS クラウドフォーメーション テンプレートを使用して作成できます。
-
デバイスまたは AWS クラウドシェル に、
kubectl
コマンドラインツールがインストールされていること。バージョンはご使用のクラスターの Kubernetes バージョンと同じか、1 つ前のマイナーバージョン以前、あるいはそれより新しいバージョンが使用できます。例えば、クラスターのバージョンが1.29
である場合、kubectl
のバージョン1.28
、1.29
、または1.30
が使用できます。kubectl
をインストールまたはアップグレードする方法については「kubectl および eksctl のセットアップ」を参照してください。 -
ご使用のデバイスまたは AWS クラウドシェル で、バージョン
2.12.3
以降、または AWS コマンドラインインターフェイス (AWS CLI のバージョン1.27.160
以降がインストールおよび設定されていること。現在のバージョンを確認するには「aws --version
」を参照してください。最新バージョンをインストールするには「AWS コマンドラインインターフェイスユーザーガイド」の「インストール」および「aws configure を使用したクイック設定」を参照してください。 -
EKS および IAM リソースを作成および変更するアクセス許可を持つ IAM プリンシパル。
クラスターの作成 - AWS コンソール
-
Amazon EKS コンソール
を開きます。 -
[クラスターを追加]、[作成] の順にクリックします。
-
[設定オプション] で [カスタム設定] を選択します。
-
このトピックでは、カスタム設定を取り上げています。クイック設定の詳細については、「AWS Management Console を使用して EKS Auto Mode クラスターを作成する」を参照してください。
-
-
[EKS Auto Mode を使用する] が有効になっていることを確認します。
-
このトピックでは、EKS Auto Mode でのクラスターの作成を取り上げています。EKS Auto Mode を使用せずにクラスターを作成する方法の詳細については、「Amazon EKS クラスターを作成します。」を参照してください。
-
-
[クラスターの設定] ページで、次のフィールドに入力します:
-
[名前] - クラスターの名前。この名前には英数字 (大文字と小文字が区別されます)、ハイフン、下線のみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前は、クラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。
-
[クラスター IAM ロール] – ユーザーに代わって AWS リソースを管理することを Kubernetes コントロールプレーンに許可するために作成した Amazon EKS クラスター IAM ロールを選択します。EKS Auto Mode 用のクラスター IAM ロールをまだ作成していない場合は、IAM コンソールで [推奨ロールを作成] ボタンを選択して、必要なアクセス許可を持つロールを作成します。
-
[Kubernetes バージョン] – クラスターで使用する Kubernetes のバージョン。以前のバージョンが必要でない限り、最新バージョンを選択することをお勧めします。
-
[アップグレードポリシー] – クラスターに対して設定する Kubernetes バージョンポリシー。クラスターを標準サポートバージョンでのみ実行したい場合は、[標準] を選択できます。バージョンの標準サポート終了時にクラスターの延長サポートに入りたい場合は、[延長] を選択できます。現在延長サポートを利用中の Kubernetes バージョンを選択した場合、オプションとして標準サポートを選択することはできません。
-
-
[クラスターを設定] ページの [Auto Mode コンピューティング] セクションで、次のフィールドに入力します。
-
ノードプール – ノードプールでビルドを使用するかどうかを決定します。詳細については「組み込み NodePool を有効または無効にする」を参照してください。
-
ノード IAM ロール – 組み込みノードプールのいずれかを有効にする場合は、ノード IAM ロールを選択する必要があります。EKS Auto Mode は、このロールを新しいノードに割り当てます。クラスターの作成後はこの値を変更することはできません。EKS Auto Mode 用のノード IAM ロールをまだ作成していない場合は、[推奨ロールを作成] ボタンを選択して、必要なアクセス許可を持つロールを作成します。このロールの詳細については、「EKS Auto Mode での ID とアクセスについての説明」を参照してください。
-
-
[クラスターの設定] ページの [クラスターアクセス] セクションで、次のフィールドに入力します。
-
[クラスター管理者アクセスをブートストラップ] – クラスター作成者は自動的に Kubernetes 管理者になります。これを無効にする場合は、[クラスター管理者アクセスを拒否] を選択します。
-
[クラスター認証モード] – EKS Auto Mode には、EKS アクセスエントリ、EKS API 認証モードが必要です。必要に応じて、[EKS API と ConfigMap] を選択して
ConfigMap
認証モードを有効にできます。
-
-
「クラスターの設定」ページの残りのフィールドに入力します。
-
[Secret encryption] (シークレット暗号化) – (オプション) KMS キーを使用して Kubernetes シークレットのシークレット暗号化を有効にするよう選択します。クラスターを作成した後で、これを有効にすることもできます。この機能を有効にする前に、既存のクラスターで {aws} KMS を使用して Kubernetes シークレットを暗号化する の情報をよく理解していることを確認してください。
-
[ARC ゾーンシフト] – EKS Auto Mode は ARC ゾーンシフトをサポートしていません。
-
[タグ] - (オプション) クラスターにタグを追加します。詳細については「タグを使用して Amazon EKS リソースを整理する」を参照してください。
このページを読み終えたら、[次へ] を選択してください。
-
-
[ネットワーキングの指定] ページで、次のフィールドの値を選択してください:
-
[VPC] – Amazon EKS VPC 要件を満たす既存の VPC を選択し、そこでクラスターを作成します。VPC を選択する前に、「VPC とサブネットの Amazon EKS ネットワーキング要件を表示する」の要件と考慮事項をすべて理解しておくことをお勧めします。クラスターの作成後は使用する VPC を変更できません。VPC が表示されていない場合はまず作成する必要があります。詳細については「Amazon EKS クラスターの Amazon VPC を作成する」を参照してください。
-
[サブネット] - デフォルトで、前のフィールドで指定した VPC 内の利用可能なすべてのサブネットがあらかじめ選択されています。少なくとも 2 つ選択する必要があります。
選択するサブネットは Amazon EKS サブネットの要件を満たす必要があります。サブネットを選択する前に、Amazon EKS VPC およびサブネットの要件と考慮事項をすべて理解しておくことをお勧めします。
[セキュリティグループ] - (オプション Amazon EKS が作成するネットワークインターフェイスに関連付ける 1 つまたは複数のセキュリティグループを指定します。
セキュリティグループを選択するかどうかにかかわらず、Amazon EKS はクラスターと VPC 間の通信を可能にするセキュリティグループを作成します。Amazon EKS はこのセキュリティグループおよびユーザーが選択したセキュリティグループを、作成するネットワークインターフェイスに関連付けます。Amazon EKS が作成するクラスターセキュリティグループの詳細については「クラスターの Amazon EKS セキュリティグループ要件を表示する」を参照してください。Amazon EKS が作成するクラスターセキュリティグループのルールを変更できます。
-
クラスターの IP アドレスファミリーの選択 – IPv4 と IPv6 のどちらかを選択できます。
デフォルトで、Kubernetes は
IPv4
アドレスを Pod とサービスに割り当てます。IPv6
ファミリーの使用を決定する前に、VPC の要件と考慮事項、サブネットの要件と考慮事項、クラスターの Amazon EKS セキュリティグループ要件を表示する、および クラスター、Pod、サービスに対する IPv6 アドレスの説明 のトピックの考慮事項と要件をすべて理解していることを確認します。IPv6
ファミリーを選択すると、Kubernetes がIPv6
サービスアドレスを割り当てる範囲をIPv4
ファミリーで指定できるようには指定できません。Kubernetes は、一意のローカルアドレス範囲 (fc00::/7
) からサービスにアドレスを割り当てます。 -
(オプション) [Kubernetes サービス IP アドレスの範囲を設定する] を選択し、[サービスの
IPv4
範囲] を指定します。独自の範囲を指定すると、Kubernetes サービスと VPC にピアリングまたは接続されたその他のネットワークとの間の競合を防ぐことができます。CIDR 表記で範囲を入力します。例:
10.2.0.0/16
。この CIDR ブロックでは以下の要件を満たす必要があります:
-
10.0.0.0/8
、172.16.0.0/12
、または192.168.0.0/16
のいずれかの範囲内にある。 -
最小サイズが
/24
、最大サイズが/12
。 -
Amazon EKS リソースの VPC の範囲と重複しない。
-
このオプションを指定できるのは
IPv4
アドレスファミリーを使用してクラスターを作成するときのみです。これを指定しない場合、Kubernetes は、10.100.0.0/16
または172.20.0.0/16
のいずれかの CIDR ブロックからサービス IP アドレスを割り当てます。-
[クラスターエンドポイントのアクセス] で、オプションを選択してください。クラスターを作成した後で、このオプションを変更できます。デフォルト以外のオプションを選択する前に、オプションとその意味を理解しておいてください。詳細については「クラスター API サーバーエンドポイントへのネットワークアクセスを制御する」を参照してください。
このページを読み終えたら、[次へ] を選択してください。
-
-
(オプション) [オブザーバビリティの設定] ページで、有効にする [メトリクス] と [コントロールプレーンのロギング] オプションを選択してください。デフォルトでは、それぞれのログタイプは無効化されています。
-
Prometheus メトリクスの詳細については、「ステップ 1: Prometheus メトリクスを有効にする」を参照してください。
-
[トラフィック設定] のオプションの詳細については「コントロールプレーンログを CloudWatch Logs に送信する」を参照してください。
-
このページを読み終えたら、[次へ] を選択してください。
-
-
[アドオンの選択] ページで、クラスターに追加するアドオンを選択してください。[Amazon EKS アドオン] と [AWS マーケットプレイス アドオン] は必要な数だけ選択できます。インストールする AWS マーケットプレイス アドオンがリストされていない場合はページ番号をクリックして追加のページ結果を表示するか、または検索ボックスにテキストを入力して使用可能な AWS マーケットプレイス アドオンを検索できます。[カテゴリ]、[ベンダー]、または [料金モデル] でフィルタリングして、検索結果からアドオンを選択することもできます。クラスターを作成する際に、「EKS Pod Identity が Pod に AWS サービスへのアクセス権を付与する仕組みを学ぶ」で詳述されているように、EKS Pod Identity をサポートするアドオンを表示、選択、インストールできます。
-
EKS Auto Mode は、特定のアドオンの機能を自動化します。EKS Auto Mode クラスターに EKS マネージドノードグループをデプロイする場合は、[追加の Amazon EKS アドオン] を選択し、オプションを確認します。CoreDNS や kube-proxy などのアドオンをインストールすることが必要になる場合があります。EKS は、このセクションのアドオンをセルフマネージドノードとノードグループにのみインストールします。
-
このページを読み終えたら、[次へ] を選択してください。
-
-
[選択したアドオン設定の構成] ページで、インストールするバージョンを選択し、[次へ] を選択してください。クラスターを作成した後はいつでも新しいバージョンに更新できます。
EKS Pod Identity をサポートするアドオンの場合、コンソールを使用して、アドオン専用に事前入力された名前、AWS マネージドポリシー、信頼ポリシーを使用してロールを自動的に生成できます。既存のロールを再利用したり、サポートされているアドオン用の新しいロールを作成したりできます。コンソールを使用して EKS Pod Identity をサポートするアドオンのロールを作成するためのステップについては「アドオンの作成 (AWS コンソール)」を参照してください。アドオンが EKS Pod Identity をサポートしていない場合、クラスターの作成後にウィザードを使用してサービスアカウント用の IAM ロール (IRSA 作成する手順を示すメッセージが表示されます。
クラスターの作成後に、各アドオンの設定を更新できます。アドオンの設定の詳細については「Amazon EKS アドオンを更新する」を参照してください。このページを読み終えたら、[次へ] を選択してください。
-
[確認と作成] ページで、前のページで入力または選択した情報を確認します。変更する必要がある場合は[編集] を選択してください。そのままでよければ、[作成] を選択してください。クラスターがプロビジョニングされている間、[ステータス] フィールドに [作成中] と表示されます。
注記
リクエストで指定したアベイラビリティーゾーンのいずれかに、Amazon EKS クラスターの作成に十分な容量がない場合にはエラーが表示されることがあります。このエラー出力には新しいクラスターをサポートできるアベイラビリティーゾーンが表示されます。アカウント向けにサポートされているアベイラビリティーゾーンにある 2 つ以上のサブネットを使用して、クラスターを作成します。詳細については「容量不足」を参照してください。
クラスターのプロビジョニングには数分かかります。
クラスターの作成 - AWS CLI
次の CLI の手順では、IAM リソースの作成とクラスターの作成について説明します。
EKS Auto Mode クラスター IAM ロールを作成する
ステップ 1: 信頼ポリシーを作成する
Amazon EKS サービスがロールを引き受けることを許可する信頼ポリシーを作成します。ポリシーを trust-policy.json
として保存します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
ステップ 2: IAM ロールを作成する
信頼ポリシーを使用して、クラスター IAM ロールを作成します。
aws iam create-role \ --role-name AmazonEKSAutoClusterRole \ --assume-role-policy-document file://trust-policy.json
ステップ 3: ロール ARN をメモする
以降のステップで使用する新しいロールの ARN を取得して保存します。
aws iam get-role --role-name AmazonEKSAutoClusterRole --query "Role.Arn" --output text
ステップ 4: 必要なポリシーをアタッチする
次の AWS マネージドポリシーをクラスター IAM ロールにアタッチして、必要なアクセス許可を付与します。
AmazonEKSClusterPolicy:
aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
AmazonEKSComputePolicy:
aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSComputePolicy
AmazonEKSBlockStoragePolicy:
aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSBlockStoragePolicy
AmazonEKSLoadBalancingPolicy:
aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSLoadBalancingPolicy
AmazonEKSNetworkingPolicy:
aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSNetworkingPolicy
EKS Auto Mode ノード IAM ロールを作成する
ステップ 1: 信頼ポリシーを作成する
Amazon EKS サービスがロールを引き受けることを許可する信頼ポリシーを作成します。ポリシーを node-trust-policy.json
として保存します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
ステップ 2: ノード IAM ロールを作成する
前のステップの node-trust-policy.json ファイルを使用して、ロールを引き受けることができるエンティティを定義します。次のコマンドを実行してノード IAM ロールを作成します。
aws iam create-role \ --role-name AmazonEKSAutoNodeRole \ --assume-role-policy-document file://node-trust-policy.json
ステップ 3: ロール ARN をメモする
ロールを作成したら、ノード IAM ロールの ARN を取得して保存します。以降のステップでこの ARN が必要になります。次のコマンドを使用して ARN を取得します。
aws iam get-role --role-name AmazonEKSAutoNodeRole --query "Role.Arn" --output text
ステップ 4: 必要なポリシーをアタッチする
次の AWS マネージドポリシーをノード IAM ロールにアタッチして、必要なアクセス許可を付与します。
AmazonEKSWorkerNodeMinimalPolicy:
aws iam attach-role-policy \ --role-name AmazonEKSAutoNodeRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodeMinimalPolicy
AmazonEC2ContainerRegistryPullOnly:
aws iam attach-role-policy \ --role-name AmazonEKSAutoNodeRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
クラスターを作成する
-
下記のコマンドを使用して、クラスターを作成します。コマンドを実行する前に、次の置き換えを行います:
-
地域コード
はクラスターを作成する AWS リージョンに置き換えます。 -
マイクラスター
の部分は自分のクラスター名に置き換えます。この名前には英数字 (大文字と小文字が区別されます)、ハイフン、下線のみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前はクラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。 -
1.30
を Amazon EKS がサポートする任意のバージョンに置き換えます。 -
111122223333
は、自分のアカウント ID に置き換えます。 -
クラスターロールとノードロールに異なる名前の IAM ロールを作成した場合は、ARN を置き換えます。
-
subnetIds
の値を独自の値に置き換えます。さらに ID を追加することもできます。少なくとも 2 つのサブネット ID を指定する必要があります。選択するサブネットは Amazon EKS サブネットの要件を満たす必要があります。サブネットを選択する前に、Amazon EKS VPC およびサブネットの要件と考慮事項をすべて理解しておくことをお勧めします。
-
セキュリティグループ ID を指定しない場合はコマンドから
,securityGroupIds=sg-<ExampleID1>
を削除します。1 つまたは複数のセキュリティグループ ID を指定する場合はsecurityGroupIds
の値を独自の値に置き換えます。さらに ID を追加することもできます。セキュリティグループを選択するかどうかにかかわらず、Amazon EKS はクラスターと VPC 間の通信を可能にするセキュリティグループを作成します。Amazon EKS はこのセキュリティグループおよびユーザーが選択したセキュリティグループを、作成するネットワークインターフェイスに関連付けます。Amazon EKS が作成するクラスターセキュリティグループの詳細については「クラスターの Amazon EKS セキュリティグループ要件を表示する」を参照してください。Amazon EKS が作成するクラスターセキュリティグループのルールを変更できます。
aws eks create-cluster \ --region region-code \ --name my-cluster \ --kubernetes-version 1.30 \ --role-arn arn:aws:iam::111122223333:role/AmazonEKSAutoClusterRole \ --resources-vpc-config '{"subnetIds": ["subnet-ExampleID1","subnet-ExampleID2"], "securityGroupIds": ["sg-ExampleID1"], "endpointPublicAccess": true, "endpointPrivateAccess": true}' \ --compute-config '{"enabled": true, "nodeRoleArn": "arn:aws:iam::111122223333:role/AmazonEKSAutoNodeRole", "nodePools": ["general-purpose", "system"]}' \ --kubernetes-network-config '{"elasticLoadBalancing": {"enabled": true}}' \ --storage-config '{"blockStorage": {"enabled": true}}' \ --access-config '{"authenticationMode": "API"}'
注記
リクエストで指定したアベイラビリティーゾーンのいずれかに、Amazon EKS クラスターの作成に十分な容量がない場合にはエラーが表示されることがあります。このエラー出力には新しいクラスターをサポートできるアベイラビリティーゾーンが表示されます。アカウント向けにサポートされているアベイラビリティーゾーンにある 2 つ以上のサブネットを使用して、クラスターを作成します。詳細については「容量不足」を参照してください。
必要に応じて前のコマンドに追加する必要があるオプションの設定を次に示します。これらのオプションは、クラスターの作成時にのみ有効にすることができ、作成後は有効にできません。
-
どの
IPv4
Classless Inter-domain Routing (CIDR) ブロックから Kubernetes がサービス IP アドレスを割り当てるかを指定する場合、--kubernetes-network-config serviceIpv4Cidr=<cidr-block>
を次のコマンドに追加することによって指定する必要があります。独自の範囲を指定すると、Kubernetes サービスと VPC にピアリングまたは接続されたその他のネットワークとの間の競合を防ぐことができます。CIDR 表記で範囲を入力します。例:
10.2.0.0/16
。この CIDR ブロックでは以下の要件を満たす必要があります:
-
10.0.0.0/8
、172.16.0.0/12
、または192.168.0.0/16
のいずれかの範囲内にある。 -
最小サイズが
/24
、最大サイズが/12
。 -
Amazon EKS リソースの VPC の範囲と重複しない。
このオプションを指定できるのは
IPv4
アドレスファミリーを使用してクラスターを作成するときのみです。これを指定しない場合、Kubernetes は、10.100.0.0/16
または172.20.0.0/16
のいずれかの CIDR ブロックからサービス IP アドレスを割り当てます。
-
-
クラスターを作成していて、そのクラスターで
IPv4
アドレスではなくIPv6
アドレスを Pod とサービスに割り当てるようにする場合は、次のコマンドに--kubernetes-network-config ipFamily=ipv6
を追加します。デフォルトで、Kubernetes は
IPv4
アドレスを Pod とサービスに割り当てます。IPv6
ファミリーの使用を決定する前に、VPC の要件と考慮事項、サブネットの要件と考慮事項、クラスターの Amazon EKS セキュリティグループ要件を表示する、および クラスター、Pod、サービスに対する IPv6 アドレスの説明 のトピックの考慮事項と要件をすべて理解していることを確認します。IPv6
ファミリーを選択すると、Kubernetes がIPv6
サービスアドレスを割り当てる範囲をIPv4
ファミリーで指定できるようには指定できません。Kubernetes は、一意のローカルアドレス範囲 (fc00::/7
) からサービスにアドレスを割り当てます。
-
-
クラスターがプロビジョニングされるまでに数分かかります。クラスターのステータスのクエリを実行するには次のコマンドを使用します。
aws eks describe-cluster --region region-code --name my-cluster --query "cluster.status"