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

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

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

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

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

要件

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

  • Autopilot クラスタを使用する。
  • Rapid リリース チャンネルの任意のバージョンを使用します。
  • 次の互換性のあるコンピューティング リソースのいずれかを使用します。互換性のあるブートディスクの最大サイズは 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 モードのセクションをご覧ください。

次のステップ