

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

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

# マネージド型ノードグループを備えたウォームプールを使用して、起動時間の長いアプリケーションのレイテンシーを低減する
<a name="warm-pools-managed-node-groups"></a>

アプリケーションの初期化または起動時間が長い場合、スケールアウトイベントによって遅延が発生する可能性があります。ポッドをスケジュールする前に、新しいノードが完全に起動してクラスターに参加する必要があります。このレイテンシーは、トラフィックの急増時や急激な規模拡大時に、アプリケーションの可用性に影響を与える可能性があります。ウォームプールは、起動プロセスがすでに完了している初期化済みの EC2 インスタンスのプールを維持することでこの問題を解決します。スケールアウトイベント中、インスタンスはウォームプールから直接クラスターに移動し、時間のかかる初期化手順がスキップされ、新しい容量が利用可能になるまでの時間が大幅に短縮されます。詳細については、*Amazon EC2 Auto Scaling ユーザーガイド*」の「[ウォームプールを使用して起動時間が長いアプリケーションのレイテンシーを減らす](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-warm-pools.html)」を参照してください。

Amazon EKS マネージド型ノードグループは、Amazon EC2 Auto Scaling ウォームプールをサポートしています。ウォームプールは、スケールアウトイベント中にクラスターにすばやく参加できるAuto Scaling グループとともに、事前に初期化された EC2 インスタンスを維持します。ウォームプールのインスタンスはすでに起動初期化プロセスを完了しており、`Stopped`、`Running`、または `Hibernated` 状態に保持できます。

Amazon EKS は、`AWSServiceRoleForAmazonEKSNodegroup` サービスにリンクされたロールを使用してノードグループのライフサイクル全体でウォームプールを管理し、ウォームプールリソースを作成、更新、削除します。

## 仕組み
<a name="warm-pools-how-it-works"></a>

ウォームプールを設定すると、Amazon EKS はノードグループのAuto Scaling グループにアタッチされた EC2 自動スケーリングウォームプールを作成します。インスタンスはウォームプールで起動し、起動の初期化プロセスを完了し、必要に応じて設定された状態 (`Running`、`Stopped`、または `Hibernated`) を維持します。スケールアウトイベント中、インスタンスはウォームプールからAuto Scaling グループに移動し、Amazon EKS 初期化プロセスを完了してクラスターに参加し、ポッドスケジューリングに使用できるようになります。インスタンスの再利用が有効になっている場合、インスタンスはスケールインイベント中にウォームプールに戻ることができます。

**重要**  
ウォームプールは、必ず `create-nodegroup` または `update-nodegroup-config` を使用して Amazon EKS API を介して設定します。EC2 自動スケーリング API を使用してウォームプール設定を手動で変更しないでください。リソースの Amazon EKS 管理と競合する可能性があります。

## 考慮事項
<a name="warm-pools-considerations"></a>

**重要**  
ウォームプールを設定する前に、[Amazon EC2 Auto Scaling ユーザーガイド](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-warm-pools.html)」の「*Amazon EC2 Auto Scaling のウォームプール*」の前提条件と制限を確認してください。すべてのインスタンスタイプ、AMI、または設定がサポートされているわけではありません。
+  **IAM アクセス許可** – `AWSServiceRoleForAmazonEKSNodegroup` サービスにリンクされたロール (最初のマネージドノードグループで自動的に作成されます) には、必要なウォームプール管理アクセス許可が含まれています。
+  **AMI の制限** — ウォームプールはカスタム AMI をサポートしていません。Amazon EKS 最適化 AMI を使用する必要があります。
+  **Bottlerocket の制限** – Bottlerocket AMI を使用している場合、`Hibernated` プールの状態はサポートされていません。`Stopped` または `Running` プールの状態のみを使用します。さらに、`reuseOnScaleIn` 機能は Bottlerocket AMI ではサポートされていません。
+  **休止のサポート** – `Hibernated` プールの状態は、特定のインスタンスタイプでのみサポートされます。サポートされているインスタンスタイプについては、*Amazon EC2 ユーザーガイド* の [ハイバネーションの前提条件](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html) を参照してください。
+  **コストへの影響** – 必要のないときにウォームプールを作成すると、不要なコストが発生する可能性があります。
+  **キャパシティプランニング** – コストと可用性のバランスを取るために、スケーリングパターンに基づいてウォームプールの規模を決定します。予想されるピーク容量の 10～20% から開始します。
+  **VPC ネットワーク** – Auto Scaling グループインスタンスとウォームプールインスタンスの両方に十分な IP アドレスを確保します。

## ウォームプールを設定
<a name="warm-pools-configuration"></a>

新しいマネージド型ノードグループを作成するときにウォームプールを設定したり、既存のマネージド型ノードグループを更新してウォームプールのサポートを追加したりできます。

### 設定パラメータ
<a name="warm-pools-parameters"></a>
+  **enabled** – (ブール値) マネージド型ノードグループにウォームプールをアタッチするインテントを示します。ウォームプールのサポートを有効にするために必要です。
+  **maxGroupPreparedCapacity** – (整数) ウォームプールとAuto Scaling グループの合計最大合計インスタンス数。
+  **minSize** – (整数) ウォームプールに維持するインスタンスの最小数。デフォルト: `0`。
+  **poolState** – (文字列) ウォームプールインスタンスの状態。デフォルト: `Stopped`。
+  **reuseOnScaleIn** – (ブール値) インスタンスがスケールインイベント中に終了する代わりにウォームプールに戻るかどうか。デフォルト: `false`。Bottlerocket AMI ではサポートされていません。

### AWS CLI の使用
<a name="warm-pools-create-cli"></a>

マネージド型ノードグループを作成するときにウォームプールを設定することも、既存のノードグループに追加することもできます。

 **ウォームプールを持つノードグループを作成** 

```
aws eks create-nodegroup \
  --cluster-name my-cluster \
  --nodegroup-name my-nodegroup \
  --node-role arn:aws:iam::111122223333:role/AmazonEKSNodeRole \
  --subnets subnet-12345678 subnet-87654321 \
  --region us-east-1 \
  --scaling-config minSize=2,maxSize=10,desiredSize=3 \
  --warm-pool-config enabled=true,maxGroupPreparedCapacity=8,minSize=2,poolState=Stopped,reuseOnScaleIn=true
```

 **既存のノードグループにウォームプールを追加** 

```
aws eks update-nodegroup-config \
  --cluster-name my-cluster \
  --nodegroup-name my-nodegroup \
  --region us-east-1 \
  --warm-pool-config enabled=true,maxGroupPreparedCapacity=8,minSize=2,poolState=Stopped,reuseOnScaleIn=true
```

## 設定の更新
<a name="warm-pools-update"></a>

`update-nodegroup-config` を使用して、いつでもウォームプールの設定を更新します。既存のウォームプールインスタンスはすぐには影響を受けません。新しい設定は、更新後にウォームプールに入るインスタンスに適用されます。

```
aws eks update-nodegroup-config \
  --cluster-name my-cluster \
  --nodegroup-name my-nodegroup \
  --region us-east-1 \
  --warm-pool-config enabled=true,maxGroupPreparedCapacity=10,minSize=3,poolState=Running,reuseOnScaleIn=true
```

ノードグループにアタッチされたウォームプールを無効にするには、`enabled=false` を設定します。

```
aws eks update-nodegroup-config \
  --cluster-name my-cluster \
  --nodegroup-name my-nodegroup \
  --region us-east-1 \
  --warm-pool-config enabled=false
```

## その他のリソース
<a name="warm-pools-additional-resources"></a>
+  詳細については、*Amazon EC2 Auto Scaling ユーザーガイド* の [Warm pools for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-warm-pools.html) を参照してください。
+  [マネージド型ノードグループを使用してノードライフサイクルを簡素化](managed-node-groups.md) 