

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# EC2 インスタンスストアを設定した AWS Outposts に Amazon EKS ローカルクラスターをデプロイする
<a name="eks-outposts-instance-store-local-cluster-create"></a>

このトピックでは、EC2 インスタンスストアを設定した AWS Outposts にローカルの Amazon EKS クラスターをデプロイする手順について説明します。

**注記**  
Outpost が EC2 インスタンスストアではなく Amazon EBS で設定されている場合、このトピックで説明されているアーキテクチャは Outpost に使用できません。EBS を設定した Outposts は、既存のローカルクラスターの実装を引き続き使用します。詳細については、「[AWS Outposts で Amazon EKS クラスターをデプロイする](eks-outposts-local-cluster-create.md)」を参照してください。  
更新されたローカルクラスターアーキテクチャを使用して EBS-backed Outpost にローカルクラスターを作成する場合は、AWS アカウントチームにお問い合わせください。

**重要**  
ローカルクラスターは Outpost ラックのみをサポートします。単一のローカルクラスターは、単一の論理 Outpost を構成する複数の物理 Outpost ラックにわたって実行できます。単一のローカルクラスターを複数の論理 Outposts にわたって実行することはできません。
Kubernetes コントロールプレーンは、Outposts の AWS マネージドサービスアカウントで実行されます。コントロールプレーンインスタンスにアクセスして、Amazon EC2 コンソールに表示したり、そのインスタンスでワークロードを実行したりすることはできません。
コントロールプレーンは、[外部の etcd トポロジ](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/#external-etcd-topology)にある 6 つの EC2 インスタンス (3 つの `etcd` \+ 3 つの API サーバー) で実行されます。キャパシティ要件については、「[EC2 インスタンスストアを設定した AWS Outposts にある Amazon EKS ローカルクラスターのインスタンスタイプとプレイスメントを選択する](eks-outposts-instance-store-capacity-considerations.md)」を参照してください。
[Amazon VPC CNI plugin for Kubernetes](managing-vpc-cni.md)、[kube-proxy](managing-kube-proxy.md)、[CoreDNS](managing-coredns.md) はローカルクラスターに自動的にインストールされます。検証済みアドオンの詳細なリストについては、「[EC2 インスタンスストアを設定した AWS Outposts にあるローカルクラスターの Amazon EKS アドオン](eks-outposts-instance-store-local-cluster-addons.md)」を参照してください。
Amazon EKS は、定期的に `etcd` をバックアップします。`etcd` がクォーラムを失った場合、Amazon EKS は最新のスナップショットからクラスターの状態を回復します。

 **前提条件** 
+ EC2 インスタンスストアを設定した Outposts ラックが存在し、コントロールプレーンインスタンスに十分な仮想化容量が確保されていること。「[EC2 インスタンスストアを設定した AWS Outposts にある Amazon EKS ローカルクラスターのインスタンスタイプとプレイスメントを選択する](eks-outposts-instance-store-capacity-considerations.md)」を参照してください。
+ VPC とサブネットが「[EC2 インスタンスストアを設定した AWS Outposts に Amazon EKS ローカルクラスターの VPC とサブネットを作成する](eks-outposts-instance-store-vpc-subnet-requirements.md)」で説明されている要件を満たしていること。
+ コンピュータまたは AWS CloudShell に、`kubectl` コマンドラインツールがインストールされていること。バージョンはご使用のクラスターの Kubernetes バージョンと同じか、1 つ前のマイナーバージョン以前、あるいはそれより新しいバージョンが使用できます。`kubectl` をインストールまたはアップグレードする方法については、[`kubectl` および `eksctl` のセットアップ](install-kubectl.md) を参照してください。
+ ご使用のデバイスまたは AWS CloudShell で、AWS CLI のバージョン `2.35.3` 以降がインストールおよび設定されていること。現在のバージョンを確認するには、`aws --version` を参照してください。インストールまたはアップグレードするには、「[AWS CLI のインストール](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。
+ Amazon EKS クラスターを作成および記述するアクセス許可を持つ IAM プリンシパル (ユーザーまたはロール)。詳細については、「[Outpost にローカル Kubernetes クラスターを作成する](security-iam-id-based-policy-examples.md#policy-create-local-cluster)」および「[すべてのクラスターの一覧表示または説明](security-iam-id-based-policy-examples.md#policy-example2)」を参照してください。
+ クラスターの IAM ロールに [AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html) と AmazonE[AmazonEKSServicePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServicePolicy.html) という AWS マネージドポリシーがアタッチされていること。ロールの信頼ポリシーでは、`eks.amazonaws.com` サービスプリンシパルがロールを引き受けることを許可する必要があります。

**注記**  
ローカルクラスターを作成すると、クラスターを作成する [IAM プリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)が、`system:masters` アクセス許可を持つ管理者として Kubernetes RBAC 承認テーブルに恒久的に追加されます。このプリンシパルは絶対に削除しないでください。

## ローカルクラスターを作成する
<a name="eks-outposts-instance-store-local-cluster-create-cluster"></a>

ローカルクラスターを作成するには、AWS マネジメントコンソール、AWS CLI、Amazon EKS API、または AWS CloudFormation を使用します。

ローカルクラスターを作成する場合は、以下の点に注意してください。
+ Outposts のホームであるアベイラビリティーゾーンにサブネットを渡す必要があります。複数のアベイラビリティーゾーンにサブネットを渡すと、リクエストは失敗します。
+ `endpointPrivateAccess` を `true` に設定する必要がある。必要に応じて、`endpointPublicAccess` を有効にすることもできます。
+ `outpostArns`、`controlPlaneInstanceType`、`etcdInstanceType` といった `outpostConfig` の値を渡す必要があります。必要に応じて、配置の設定を指定できます。「[EC2 インスタンスストアを設定した AWS Outposts にある Amazon EKS ローカルクラスターのインスタンスタイプとプレイスメントを選択する](eks-outposts-instance-store-capacity-considerations.md)」を参照してください。

### AWS CLI
<a name="awscli_is_create_cluster_outpost"></a>

```
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 マネジメントコンソール
<a name="console_is_create_cluster_outpost"></a>

1. [Amazon EKS コンソール](https://console.aws.amazon.com/eks/home#/clusters) を開きます。

1. **[クラスターを作成]** を選択します。

1. **Kubernetes コントロールプレーンの場所**に対して、**AWS Outposts** を選択します。

1. 次を設定します。
   +  **[名前]** - クラスターの名前。
   +  **[Kubernetes バージョン]** - 使用するバージョン。
   +  **[クラスターサービスロール]** - [AmazonEKSClusterPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSClusterPolicy.html) および [AmazonEKSServicePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSServicePolicy.html) を備えた IAM ロール。
   +  **[Outpost ID]** - デプロイ先のロジカル Outposts。
   +  **[コントロールプレーンインスタンスタイプ]** - Kubernetes API サーバー、スケジューラ、コントローラーマネージャーのインスタンスタイプ。
   +  **[etcd インスタンスタイプ]** - `etcd` のインスタンスタイプ。
   +  **[スプレッドレベル]** - コントロールプレーンと `etcd` の配置に対しては `host` または `rack`。

1. ネットワークの設定: VPC、サブネット、セキュリティグループ。プライベートエンドポイントアクセスを有効にします。

1. オブザーバビリティ、つまりコントロールプレーンのログ記録を設定します。

1. 確認して作成します。

### `CreateCluster` API
<a name="api_is_create_cluster_outpost"></a>

```
{
    "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 を変更するには、新しいクラスターを作成する必要があります。

## クラスターに接続する
<a name="eks-outposts-instance-store-local-cluster-create-connect"></a>

クラスターと通信するように `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}} ` が書き込まれます。

## ワーカーノードをデプロイする
<a name="eks-outposts-instance-store-local-cluster-create-nodes"></a>

ローカルクラスターにワーカーノードをデプロイするには、[セルフマネージドノードグループ](launch-workers.md)を使用します。

1. ワーカーノードの AWS CloudFormation テンプレートをデプロイするか、Outposts に EC2 インスタンスを個別に作成します。

   ```
   curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2025-11-24/amazon-eks-outpost-nodegroup.yaml
   ```

1. クラスターにノードインスタンスロールアクセスを付与します。ノードの IAM ロールに対して[アクセスエントリ](access-entries.md)を作成します。

   ```
   aws eks create-access-entry \
     --cluster-name my-cluster \
     --principal-arn arn:aws:iam::111122223333:role/myNodeRole \
     --type EC2_LINUX
   ```

   あるいは、認証に `aws-auth` ConfigMap を使用している場合は、ConfigMap にノードインスタンスロールを追加します。「[IAM ユーザーおよびロールに Kubernetes API へのアクセスを付与する](grant-k8s-access.md)」を参照してください。

1. ノードが `Ready` 状態であることを確認します。

   ```
   kubectl get nodes
   ```

## 内部リソース
<a name="eks-outposts-instance-store-local-cluster-create-internal-resources"></a>

ローカルクラスターを作成すると、Amazon EKS は `kube-system` 名前空間に `coredns`、`kube-proxy`、`aws-node` (VPC CNI) の各アドオンのセルフマネージドバージョンを自動的にインストールします。必要に応じて、Amazon EKS アドオン API を使用して、こうしたアドオンのマネージドバージョンをインストールできます。詳細については、「[EC2 インスタンスストアを設定した AWS Outposts にあるローカルクラスターの Amazon EKS アドオン](eks-outposts-instance-store-local-cluster-addons.md)」を参照してください。

Amazon EKS はこのほか、クラスターと VPC 間の通信用にクロスアカウントの Elastic Network Interface (ENI) もサブネットに作成します。こうしたネットワークインターフェイスは削除しないでください。クロスアカウントの ENI が削除された場合や、その IP アドレスが変更された場合は、静的 IP ベースのアクセスを使用するノードと管理者をすべて手動で更新する必要があります。