このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
EC2 インスタンスストアを設定した AWS Outposts に Amazon EKS ローカルクラスターをデプロイする
このトピックでは、EC2 インスタンスストアを設定した AWS Outposts にローカルの Amazon EKS クラスターをデプロイする手順について説明します。
注記
Outpost が EC2 インスタンスストアではなく Amazon EBS で設定されている場合、このトピックで説明されているアーキテクチャは Outpost に使用できません。EBS を設定した Outposts は、既存のローカルクラスターの実装を引き続き使用します。詳細については、「AWS Outposts で Amazon EKS クラスターをデプロイする」を参照してください。
更新されたローカルクラスターアーキテクチャを使用して EBS-backed Outpost にローカルクラスターを作成する場合は、AWS アカウントチームにお問い合わせください。
重要
-
ローカルクラスターは Outpost ラックのみをサポートします。単一のローカルクラスターは、単一の論理 Outpost を構成する複数の物理 Outpost ラックにわたって実行できます。単一のローカルクラスターを複数の論理 Outposts にわたって実行することはできません。
-
Kubernetes コントロールプレーンは、Outposts の AWS マネージドサービスアカウントで実行されます。コントロールプレーンインスタンスにアクセスして、Amazon EC2 コンソールに表示したり、そのインスタンスでワークロードを実行したりすることはできません。
-
コントロールプレーンは、外部の etcd トポロジ
にある 6 つの EC2 インスタンス (3 つの etcd+ 3 つの API サーバー) で実行されます。キャパシティ要件については、「EC2 インスタンスストアを設定した AWS Outposts にある Amazon EKS ローカルクラスターのインスタンスタイプとプレイスメントを選択する」を参照してください。 -
Amazon VPC CNI plugin for Kubernetes、kube-proxy、CoreDNS はローカルクラスターに自動的にインストールされます。検証済みアドオンの詳細なリストについては、「EC2 インスタンスストアを設定した AWS Outposts にあるローカルクラスターの Amazon EKS アドオン」を参照してください。
-
Amazon EKS は、定期的に
etcdをバックアップします。etcdがクォーラムを失った場合、Amazon EKS は最新のスナップショットからクラスターの状態を回復します。
前提条件
-
EC2 インスタンスストアを設定した Outposts ラックが存在し、コントロールプレーンインスタンスに十分な仮想化容量が確保されていること。「EC2 インスタンスストアを設定した AWS Outposts にある Amazon EKS ローカルクラスターのインスタンスタイプとプレイスメントを選択する」を参照してください。
-
VPC とサブネットが「EC2 インスタンスストアを設定した AWS Outposts に Amazon EKS ローカルクラスターの VPC とサブネットを作成する」で説明されている要件を満たしていること。
-
コンピュータまたは AWS CloudShell に、
kubectlコマンドラインツールがインストールされていること。バージョンはご使用のクラスターの Kubernetes バージョンと同じか、1 つ前のマイナーバージョン以前、あるいはそれより新しいバージョンが使用できます。kubectlをインストールまたはアップグレードする方法については、kubectl および eksctl のセットアップ を参照してください。 -
ご使用のデバイスまたは AWS CloudShell で、AWS CLI のバージョン
2.35.3以降がインストールおよび設定されていること。現在のバージョンを確認するには、aws --versionを参照してください。インストールまたはアップグレードするには、「AWS CLI のインストール」を参照してください。 -
Amazon EKS クラスターを作成および記述するアクセス許可を持つ IAM プリンシパル (ユーザーまたはロール)。詳細については、「Outpost にローカル Kubernetes クラスターを作成する」および「すべてのクラスターの一覧表示または説明」を参照してください。
-
クラスターの IAM ロールに AmazonEKSClusterPolicy と AmazonEAmazonEKSServicePolicy という AWS マネージドポリシーがアタッチされていること。ロールの信頼ポリシーでは、
eks.amazonaws.comサービスプリンシパルがロールを引き受けることを許可する必要があります。
注記
ローカルクラスターを作成すると、クラスターを作成する IAM プリンシパルが、system:masters アクセス許可を持つ管理者として Kubernetes RBAC 承認テーブルに恒久的に追加されます。このプリンシパルは絶対に削除しないでください。
ローカルクラスターを作成する
ローカルクラスターを作成するには、AWS マネジメントコンソール、AWS CLI、Amazon EKS API、または AWS CloudFormation を使用します。
ローカルクラスターを作成する場合は、以下の点に注意してください。
-
Outposts のホームであるアベイラビリティーゾーンにサブネットを渡す必要があります。複数のアベイラビリティーゾーンにサブネットを渡すと、リクエストは失敗します。
-
endpointPrivateAccessをtrueに設定する必要がある。必要に応じて、endpointPublicAccessを有効にすることもできます。 -
outpostArns、controlPlaneInstanceType、etcdInstanceTypeといったoutpostConfigの値を渡す必要があります。必要に応じて、配置の設定を指定できます。「EC2 インスタンスストアを設定した AWS Outposts にある Amazon EKS ローカルクラスターのインスタンスタイプとプレイスメントを選択する」を参照してください。
AWS CLI
aws eks create-cluster \ --name my-cluster \ --role-arn arn:aws:iam::111122223333:role/myEKSClusterRole \ --kubernetes-version 1.36 \ --resources-vpc-config subnetIds=subnet-ExampleID1,endpointPrivateAccess=true,endpointPublicAccess=true \ --logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}' \ --access-config authenticationMode=API_AND_CONFIG_MAP,bootstrapClusterCreatorAdminPermissions=true \ --outpost-config outpostArns=arn:aws:outposts:region-code:111122223333:outpost/op-uniqueid,controlPlaneInstanceType=m5.large,controlPlanePlacement={spreadLevel=host},etcdInstanceType=m5.large,etcdPlacement={spreadLevel=host}
AWS マネジメントコンソール
-
Amazon EKS コンソール
を開きます。 -
[クラスターを作成] を選択します。
-
Kubernetes コントロールプレーンの場所に対して、AWS Outposts を選択します。
-
次を設定します。
-
[名前] - クラスターの名前。
-
[Kubernetes バージョン] - 使用するバージョン。
-
[クラスターサービスロール] - AmazonEKSClusterPolicy および AmazonEKSServicePolicy を備えた IAM ロール。
-
[Outpost ID] - デプロイ先のロジカル Outposts。
-
[コントロールプレーンインスタンスタイプ] - Kubernetes API サーバー、スケジューラ、コントローラーマネージャーのインスタンスタイプ。
-
[etcd インスタンスタイプ] -
etcdのインスタンスタイプ。 -
[スプレッドレベル] - コントロールプレーンと
etcdの配置に対してはhostまたはrack。
-
-
ネットワークの設定: VPC、サブネット、セキュリティグループ。プライベートエンドポイントアクセスを有効にします。
-
オブザーバビリティ、つまりコントロールプレーンのログ記録を設定します。
-
確認して作成します。
CreateCluster API
{ "name": "my-cluster", "roleArn": "arn:aws:iam::111122223333:role/myEKSClusterRole", "version": "1.36", "resourcesVpcConfig": { "subnetIds": ["subnet-ExampleID1"], "endpointPublicAccess": true, "endpointPrivateAccess": true }, "logging": { "clusterLogging": [{ "types": ["api", "audit", "authenticator", "controllerManager", "scheduler"], "enabled": true }] }, "accessConfig": { "authenticationMode": "API_AND_CONFIG_MAP", "bootstrapClusterCreatorAdminPermissions": true }, "outpostConfig": { "outpostArns": ["arn:aws:outposts:region-code:111122223333:outpost/op-uniqueid"], "controlPlaneInstanceType": "m5.large", "controlPlanePlacement": { "spreadLevel": "host" }, "etcdInstanceType": "m5.large", "etcdPlacement": { "spreadLevel": "host" } } }
EC2 インスタンスストアを設定した Outposts にローカルクラスターを作成するときには、controlPlaneInstanceType パラメータと etcdInstanceType パラメータが必要です。controlPlanePlacement および etcdPlacement パラメータはオプションです。指定しないと、配置のスプレッド戦略が適用されません。
注記
outpostConfig は、作成専用のプロパティです。コントロールプレーンインスタンスタイプ、etcd インスタンスタイプ、配置、または Outposts を変更するには、新しいクラスターを作成する必要があります。
クラスターに接続する
クラスターと通信するように kubectl を設定します。
aws eks update-kubeconfig --region region-code --name my-cluster
注記
2.35.3 より前の AWS CLI バージョンを使用してクラスターを作成した場合は、exec 引数で --cluster-id ではなく --cluster-name を指定するように kubeconfig を更新する必要があります。
クラスターの Kubernetes API サーバーエンドポイントは、Amazon Route 53 でホストされます。エンドポイントは、Amazon EKS がサブネットに作成するクロスアカウントの Elastic Network Interface (ENI) のプライベート IP アドレスに解決されます。こうした ENI には、クラスターのライフサイクルを通じて変更されない固定のプライベート IP アドレスがあります。
クラスターを作成すると、Amazon EKS は指定したサブネットに 3 つの Elastic Network Interface を作成します。これらのネットワークインターフェイスは、クラスターと VPC 間の通信を可能にします。各ネットワークインターフェイスの説明には、テキスト Amazon EKS が書き込まれます。cluster-name
ワーカーノードをデプロイする
ローカルクラスターにワーカーノードをデプロイするには、セルフマネージドノードグループを使用します。
-
ワーカーノードの AWS CloudFormation テンプレートをデプロイするか、Outposts に EC2 インスタンスを個別に作成します。
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2025-11-24/amazon-eks-outpost-nodegroup.yaml -
クラスターにノードインスタンスロールアクセスを付与します。ノードの IAM ロールに対してアクセスエントリを作成します。
aws eks create-access-entry \ --cluster-name my-cluster \ --principal-arn arn:aws:iam::111122223333:role/myNodeRole \ --type EC2_LINUXあるいは、認証に
aws-authConfigMap を使用している場合は、ConfigMap にノードインスタンスロールを追加します。「IAM ユーザーおよびロールに Kubernetes API へのアクセスを付与する」を参照してください。 -
ノードが
Ready状態であることを確認します。kubectl get nodes
内部リソース
ローカルクラスターを作成すると、Amazon EKS は kube-system 名前空間に coredns、kube-proxy、aws-node (VPC CNI) の各アドオンのセルフマネージドバージョンを自動的にインストールします。必要に応じて、Amazon EKS アドオン API を使用して、こうしたアドオンのマネージドバージョンをインストールできます。詳細については、「EC2 インスタンスストアを設定した AWS Outposts にあるローカルクラスターの Amazon EKS アドオン」を参照してください。
Amazon EKS はこのほか、クラスターと VPC 間の通信用にクロスアカウントの Elastic Network Interface (ENI) もサブネットに作成します。こうしたネットワークインターフェイスは削除しないでください。クロスアカウントの ENI が削除された場合や、その IP アドレスが変更された場合は、静的 IP ベースのアクセスを使用するノードと管理者をすべて手動で更新する必要があります。