View a markdown version of this page

マネージド型ノードグループを備えたウォームプールを使用して、起動時間の長いアプリケーションのレイテンシーを低減する - Amazon EKS

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

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

マネージド型ノードグループを備えたウォームプールを使用して、起動時間の長いアプリケーションのレイテンシーを低減する

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

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

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

仕組み

ウォームプールを設定すると、Amazon EKS はノードグループのAuto Scaling グループにアタッチされた EC2 自動スケーリングウォームプールを作成します。インスタンスはウォームプールで起動し、起動の初期化プロセスを完了し、必要に応じて設定された状態 (RunningStopped、または 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

その他のリソース