このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
マネージド型ノードグループを備えたウォームプールを使用して、起動時間の長いアプリケーションのレイテンシーを低減する
アプリケーションの初期化または起動時間が長い場合、スケールアウトイベントによって遅延が発生する可能性があります。ポッドをスケジュールする前に、新しいノードが完全に起動してクラスターに参加する必要があります。このレイテンシーは、トラフィックの急増時や急激な規模拡大時に、アプリケーションの可用性に影響を与える可能性があります。ウォームプールは、起動プロセスがすでに完了している初期化済みの EC2 インスタンスのプールを維持することでこの問題を解決します。スケールアウトイベント中、インスタンスはウォームプールから直接クラスターに移動し、時間のかかる初期化手順がスキップされ、新しい容量が利用可能になるまでの時間が大幅に短縮されます。詳細については、Amazon EC2 Auto Scaling ユーザーガイド」の「ウォームプールを使用して起動時間が長いアプリケーションのレイテンシーを減らす」を参照してください。
Amazon EKS マネージド型ノードグループは、Amazon EC2 Auto Scaling ウォームプールをサポートしています。ウォームプールは、スケールアウトイベント中にクラスターにすばやく参加できるAuto Scaling グループとともに、事前に初期化された EC2 インスタンスを維持します。ウォームプールのインスタンスはすでに起動初期化プロセスを完了しており、Stopped、Running、または Hibernated 状態に保持できます。
Amazon EKS は、AWSServiceRoleForAmazonEKSNodegroup サービスにリンクされたロールを使用してノードグループのライフサイクル全体でウォームプールを管理し、ウォームプールリソースを作成、更新、削除します。
仕組み
ウォームプールを設定すると、Amazon EKS はノードグループのAuto Scaling グループにアタッチされた EC2 自動スケーリングウォームプールを作成します。インスタンスはウォームプールで起動し、起動の初期化プロセスを完了し、必要に応じて設定された状態 (Running、Stopped、または Hibernated) を維持します。スケールアウトイベント中、インスタンスはウォームプールからAuto Scaling グループに移動し、Amazon EKS 初期化プロセスを完了してクラスターに参加し、ポッドスケジューリングに使用できるようになります。インスタンスの再利用が有効になっている場合、インスタンスはスケールインイベント中にウォームプールに戻ることができます。
重要
ウォームプールは、必ず create-nodegroup または update-nodegroup-config を使用して Amazon EKS API を介して設定します。EC2 自動スケーリング API を使用してウォームプール設定を手動で変更しないでください。リソースの Amazon EKS 管理と競合する可能性があります。
考慮事項
重要
ウォームプールを設定する前に、Amazon EC2 Auto Scaling ユーザーガイド」の「Amazon EC2 Auto Scaling のウォームプール」の前提条件と制限を確認してください。すべてのインスタンスタイプ、AMI、または設定がサポートされているわけではありません。
-
IAM アクセス許可 –
AWSServiceRoleForAmazonEKSNodegroupサービスにリンクされたロール (最初のマネージドノードグループで自動的に作成されます) には、必要なウォームプール管理アクセス許可が含まれています。 -
AMI の制限 — ウォームプールはカスタム AMI をサポートしていません。Amazon EKS 最適化 AMI を使用する必要があります。
-
Bottlerocket の制限 – Bottlerocket AMI を使用している場合、
Hibernatedプールの状態はサポートされていません。StoppedまたはRunningプールの状態のみを使用します。さらに、reuseOnScaleIn機能は Bottlerocket AMI ではサポートされていません。 -
休止のサポート –
Hibernatedプールの状態は、特定のインスタンスタイプでのみサポートされます。サポートされているインスタンスタイプについては、Amazon EC2 ユーザーガイド の ハイバネーションの前提条件 を参照してください。 -
コストへの影響 – 必要のないときにウォームプールを作成すると、不要なコストが発生する可能性があります。
-
キャパシティプランニング – コストと可用性のバランスを取るために、スケーリングパターンに基づいてウォームプールの規模を決定します。予想されるピーク容量の 10~20% から開始します。
-
VPC ネットワーク – Auto Scaling グループインスタンスとウォームプールインスタンスの両方に十分な IP アドレスを確保します。
ウォームプールを設定
新しいマネージド型ノードグループを作成するときにウォームプールを設定したり、既存のマネージド型ノードグループを更新してウォームプールのサポートを追加したりできます。
設定パラメータ
-
enabled – (ブール値) マネージド型ノードグループにウォームプールをアタッチするインテントを示します。ウォームプールのサポートを有効にするために必要です。
-
maxGroupPreparedCapacity – (整数) ウォームプールとAuto Scaling グループの合計最大合計インスタンス数。
-
minSize – (整数) ウォームプールに維持するインスタンスの最小数。デフォルト:
0。 -
poolState – (文字列) ウォームプールインスタンスの状態。デフォルト:
Stopped。 -
reuseOnScaleIn – (ブール値) インスタンスがスケールインイベント中に終了する代わりにウォームプールに戻るかどうか。デフォルト:
false。Bottlerocket AMI ではサポートされていません。
AWS CLI の使用
マネージド型ノードグループを作成するときにウォームプールを設定することも、既存のノードグループに追加することもできます。
ウォームプールを持つノードグループを作成
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
設定の更新
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
その他のリソース
-
詳細については、Amazon EC2 Auto Scaling ユーザーガイド の Warm pools for Amazon EC2 Auto Scaling を参照してください。