容量バッファを使用すると、クラスタ内の予備容量を事前に管理できるため、Google Kubernetes Engine(GKE)ワークロードの Pod 起動レイテンシを短縮できます。予備容量を事前に予約することで、必要に応じてノードに容量を確保し、スケーリング イベント中に新しい Pod のスケジュール設定にかかる時間を短縮できます。
このドキュメントでは、容量バッファの仕組みについて説明します。容量バッファを有効にして使用する方法については、容量バッファを構成するをご覧ください。
容量バッファを使用する場面
起動レイテンシの影響を受けやすく、迅速なスケーリングが必要なアプリケーションには、容量バッファを使用します。トラフィックが急増した場合、容量バッファは事前プロビジョニングされた容量を提供します。
容量バッファには次の利点があります。
- スケーリング レイテンシを最小限に抑える: 容量バッファを使用すると、重要なワークロードが事前プロビジョニングされたノードにすぐに配置されます。容量バッファは、VM の起動とイメージの pull に関連する遅延を解消し、トラフィックの急増時に厳格なサービスレベル目標(SLO)を維持するのに役立ちます。
- 費用対効果の高いオーバー プロビジョニング: 容量バッファを使用すると、固定サイズのセーフティ ネットを維持できます。大規模なワークロードの場合、このアプローチは、クラスタの拡大に伴ってアイドル容量が直線的に増加する他のオーバー プロビジョニング方法(HorizontalPodAutoscaler(HPA)の使用率目標を下げるなど)よりも費用対効果が高くなります。
- ワークロードの要件を満たす: 容量バッファのサイズを完全に制御できます。オプションには、カスタム DaemonSet やデータの組み込み、イメージのプリロードとワークロードの事前起動の制御などがあります。
AI 推論、販売イベント中の小売アプリケーション、プレーヤー アクティビティのピーク時のゲームサーバーなど、迅速なスケールアップが必要なレイテンシの影響を受けやすいワークロードには、容量バッファをおすすめします。
起動レイテンシが特に重要でないワークロード(バッチ処理ジョブなど)には、容量バッファはおすすめしません。このようなワークロードでは、リソースのオーバー プロビジョニングはメリットがありません。
容量バッファの仕組み
Kubernetes CapacityBuffer カスタム リソースを使用して予備容量のバッファを定義し、容量バッファを実装します。GKE クラスタ オートスケーラーは、CapacityBuffer リソースをモニタリングし、保留中の需要として処理して、予備容量が使用可能であることを確認します。クラスタにバッファで定義されたリソース リクエストを満たすのに十分な容量がない場合、クラスタ オートスケーラーは追加のノードをプロビジョニングします。
優先度の高いワークロードがスケールアップすると、GKE はバッファ内の使用可能な容量にワークロードをすぐにスケジューリングします。この即時スケジューリングは、バッファに予約されているレプリカ数またはリソース量に適用され、ノード プロビジョニングに関連する一般的な遅延を回避します。ワークロードがバッファ単位を使用すると、クラスタ オートスケーラーはバッファを補充するために新しいノードをプロビジョニングします。
アクティブ バッファは、予約された容量内に収まるワークロードの低レイテンシ スケーリング用に実行中の VM を提供します。ノードはすでに準備ができているため、スケールアップ イベント中の初期バッファ消費のレイテンシを最小限に抑えることができます。
CapacityBuffer CRD
容量バッファを構成するには、CapacityBuffer CustomResourceDefinition(CRD)を作成します。さまざまな条件を満たすように容量バッファを構成できます。
- 固定レプリカ: バッファ Pod の固定数を指定します。この構成は、既知のサイズのバッファを作成する最も簡単な方法です。
- 割合ベース: バッファサイズを、Deployment などの既存のスケーラブル ワークロードの割合として定義します。参照ワークロードのスケーリング中にバッファサイズが動的に調整されます。
- リソース上限: バッファが予約する CPU とメモリの合計量を定義します。コントローラは、参照される Pod テンプレートのリソース リクエストに基づいて、作成するバッファ Pod の数を計算します。
詳細については、CapacityBuffer CRD リファレンス ドキュメントをご覧ください。
要件と制限事項
容量バッファには、次の要件と制限事項があります。
- 容量バッファは、バージョン 1.35.2-gke.1842000 以降を実行している GKE クラスタで使用できます。
- 容量バッファは、ノードベースの課金モデルを使用するワークロードのみをサポートします。容量バッファは、Pod ベースの課金モデルを使用するワークロードをサポートしていません。
- クラスタでノード自動プロビジョニングを有効にすることをおすすめします。ノード自動プロビジョニングにより、クラスタ オートスケーラーは CapacityBuffer のリソース リクエストに基づいて新しいノードプールを作成できます。ノード自動プロビジョニングを有効にしない場合、クラスタ オートスケーラーは既存のノードプールのみをスケールアップします。
次のステップ
- 容量バッファを実装する方法については、容量バッファを構成するをご覧ください。