高速起動ノードによるワークロードの起動の高速化について

このページでは、高速起動ノードを使用して Google Kubernetes Engine(GKE)クラスタでワークロードをより迅速にデプロイしてスケーリングする方法について説明します。高速起動ノードは、ワークロードが互換性のある構成を使用している場合、Autopilot モードがベスト エフォート ベースでの GKE で使用されます。

GKE の高速起動ノードでは、互換性のあるマシン ファミリーの起動時間が大幅に短縮されます。起動時間が加速すると、次のようなメリットがあります。

  • コールド スタートの高速化
  • 自動スケーリングの高速化
  • Pod のスケジューリングのロングテール レイテンシを改善
  • インフラストラクチャの費用対効果の向上

高速起動ノードを使用すると、GKE によりハードウェア リソースが事前に初期化され起動時間が加速します。事前に初期化されたリソースはベスト エフォートで利用できます。サージ リクエストは部分的にしか処理されない場合があります。高速起動ノードを使用しない場合、リソースはオンデマンドで初期化され、ノードは通常の起動時間で提供されます。

要件

高速起動ノードでは、追加の構成は必要ありません。ワークロードで互換性のある構成を使用している場合、GKE は高速起動ノードを自動的に使用します。高速起動ノードを使用するには、次の要件をすべて満たす必要があります。

コンピューティング リソース リリース チャンネルとバージョンのサポート 対応のブートディスクのタイプとサイズ
Autopilot コンテナ最適化コンピューティング プラットフォーム
  • Rapid チャンネル
  • 1.33.0-gke.1696000 以降
最大 100 GiB の pd-balanced ディスク
G2 マシンシリーズ
  • Rapid チャンネルと Regular チャンネル
  • 1.31 以降
最大 500 GiB の pd-balanced ディスク

制限事項

次の機能は、GKE の高速起動ノードと互換性がありません。これらの機能を使用した場合、GKE は一般的な起動時間でノードをプロビジョニングします。

Autopilot GPU ワークロード

Autopilot モードで互換性のある GPU をリクエストすると、Autopilot GPU ワークロードは高速起動ノードを使用できるため、GKE Standard モードでの同様のリクエストよりもノードの起動時間が最大 4 倍、Pod のスケジューリング時間が最大 2 倍短縮されます。

次のようなユースケースが例として挙げられます。ただし、要件セクションの条件を満たす Pod は、高速起動ノードと互換性があります。

ComputeClass

次の例に示すように、ComputeClass で互換性のあるアクセラレータのタイプと数をリクエストします。

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: ACCELERATOR_COMPUTE_CLASS_NAME
spec:
  priorities:
  - gpu:
      type: ACCELERATOR_TYPE
      count: ACCELERATOR_COUNT
  nodePoolAutoCreation:
    enabled: true

次の例のように、Pod でこの ComputeClass を選択すると、GKE は高速起動ノードを使用します。

apiVersion: v1
kind: Pod
metadata:
  name: POD_NAME
spec:
  nodeSelector:
    # Select a ComputeClass that requests compatible GPUs
    cloud.google.com/compute-class: ACCELERATOR_COMPUTE_CLASS_NAME
  containers:
  - name: my-container
    image: gcr.io/google_containers/pause
    resources:
      limits:
        nvidia.com/gpu: ACCELERATOR_COUNT

次の値を置き換えます。

  • ACCELERATOR_COMPUTE_CLASS_NAME: アクセラレータをリクエストする ComputeClass の名前。
  • ACCELERATOR_TYPE: アクセラレータのタイプ。
  • ACCELERATOR_COUNT: Pod に必要なアクセラレータの数。この値は、ComputeClass の spec.priorities.gpu.count フィールドの値以下にする必要があります。
  • POD_NAME: Pod の名前。

ComputeClass の詳細については、カスタム コンピューティング クラスについてをご覧ください。

Pod の仕様

次の例のように、Pod の仕様で互換性のあるアクセラレータのタイプと数を選択します。

apiVersion: v1
kind: Pod
metadata:
  name: POD_NAME
spec:
  nodeSelector:
    cloud.google.com/gke-accelerator: ACCELERATOR_NAME
  containers:
  - name: my-container
    image: gcr.io/google_containers/pause
    resources:
      limits:
        nvidia.com/gpu: ACCELERATOR_COUNT

次の値を置き換えます。

  • POD_NAME: Pod の名前。
  • ACCELERATOR_NAME: Pod で必要なアクセラレータの名前。
  • ACCELERATOR_COUNT: Pod に必要なアクセラレータの数。

料金

高速起動ノードは、GKE Autopilot で追加料金なしで利用できます。GKE Autopilot の料金の詳細については、Google Kubernetes Engine の料金の Autopilot モードのセクションをご覧ください。

次のステップ