Autopilot のコンピューティング クラス


このページでは、特定のハードウェア要件を持つ Google Kubernetes Engine(GKE)Autopilot ワークロードを実行するために使用できるコンピューティング クラスについて説明します。手順については、特定のコンピューティング クラスで Autopilot Pod を実行するをご覧ください。

Autopilot のコンピューティング クラスの概要

デフォルトの場合、GKE Autopilot Pod は、ウェブサービスや中間強度のバッチジョブなどの汎用ワークロード用に最適化されたコンピューティング プラットフォームで実行されます。この汎用プラットフォームは、信頼性が高く、コストが最適化されたハードウェア構成を備えています。これにより、ほとんどのワークロードの要件に対応できます。

独自のハードウェア要件(ML や AI タスクの実行、リアルタイムの高トラフィック データベースの実行、特定の CPU プラットフォームとアーキテクチャの必要性)を持つワークロードがある場合、Autopilot ではコンピューティングクラスでそれに対応します。こうしたコンピューティング クラスは Compute Engine のマシンシリーズのキュレートされたサブセットであり、デフォルトの Autopilot コンピューティング クラスを越えた柔軟性を備えています。たとえば、Scale-Out コンピューティング クラスは、同時マルチ スレッディングをオフにし、スケールアウト用に最適化された VM を使用します。

各ワークロードの要件に基づいて、特定のコンピューティング クラスに基づくノードをリクエストできます。デフォルトの汎用コンピューティング クラスと同様、Autopilot は、実行中の Pod に基づいて、リクエストされたコンピューティング クラスのサイジングとリソース割り当てを管理します。Pod レベルでコンピューティング クラスをリクエストし、各 Pod のニーズに最適なものを選択することで、費用対効果を最適化できます。

特定の CPU アーキテクチャを選択する

ワークロードが特定の CPU プラットフォームやアーキテクチャ用に設計されている場合は、必要に応じて、Pod 仕様でそれらのプラットフォームやアーキテクチャを選択できます。たとえば、Arm アーキテクチャを使用するノードで Pod を実行する場合は、Scale-Out コンピューティング クラス内で arm64 を選択できます。

料金

GKE Autopilot Pod は、Pod がスケジュールされているノードに基づいて課金されます。特定のコンピューティング クラスの汎用ワークロードと Spot Pod の料金に関する情報と、確約利用割引については、Autopilot モードの料金をご覧ください。

汎用または専用のコンピューティング クラスでの Spot Pod は、確約利用割引の対象になりません。

コンピューティング クラス別の用途

次の表では、Autopilot がサポートする事前定義コンピューティング クラスの技術的な概要と、各プラットフォームで動作する Pod のユースケース例を示します。コンピューティング クラスをリクエストしない場合、Autopilot は、汎用コンピューティング プラットフォーム上に Pod を配置します。このプラットフォームは、ほとんどのワークロードを最適に実行するように設計されています。

これらのオプションが要件を満たさない場合は、GKE がクラスタのスケールアップ時に使うノード プロパティを指定する、独自のカスタム コンピューティング クラスを定義してデプロイできます。詳細については、カスタム コンピューティング クラスについてをご覧ください。

ワークロードの要件 コンピューティング クラス 説明 サンプル ユースケース
特定のハードウェアを必要としないワークロード 汎用

Pod 仕様でコンピューティング プラットフォームを明示的にリクエストしない場合、Autopilot は汎用コンピューティング プラットフォームを使用します。

仕様で汎用プラットフォームを明示的に選択することはできません。

E2 マシンシリーズを基盤とする。

  • ウェブサーバー
  • 中小規模のデータベース
  • 開発環境
GPU を必要とするワークロード Accelerator
  • Pod はコンピューティング リソースにいつでもアクセスできる
  • Pod のメモリや CPU の上限なし

互換性のある GPU タイプは次のとおりです。

  • nvidia-h100-80gb: NVIDIA H100(80 GB)(Accelerator コンピューティング クラスでのみ使用可能)
  • nvidia-a100-80gb: NVIDIA A100(80 GB)
  • nvidia-tesla-a100: NVIDIA A100(40 GB)
  • nvidia-l4: NVIDIA L4
  • nvidia-tesla-t4: NVIDIA T4

  • GPU 使用率の高い AI / ML のトレーニングと推論
CPU リクエストまたはメモリ リクエストが汎用コンピューティング クラスの最大数または特定の CPU プラットフォームよりも大きい Balanced
  • 使用可能な CPU: AMD EPYC Rome、AMD EPYC Milan、Intel Ice Lake、Intel Cascade Lake
  • 利用可能なアーキテクチャ: amd64
  • サポートされるリソース リクエストが汎用よりも大きい
  • Pod に最小 CPU プラットフォームを設定できる(「Intel Ice Lake 以上」など)。

N2 マシンシリーズ(Intel)または N2D マシンシリーズ(AMD)を基盤とする。

  • ウェブサーバー
  • 中規模から大規模のデータベース
  • キャッシュ
  • ストリーミングとメディア配信
  • Hyperdisk Throughput と Extreme ストレージ
他のコンピューティング クラスでサポートされていない特定のマシンシリーズの要件があるワークロード 特定のマシンシリーズ
  • 利用可能なアーキテクチャ: amd64、arm64
  • Pod はノード用に特定のマシンシリーズをリクエストできる
  • Pod のメモリや CPU の上限なし

詳細については、マシンシリーズを選択して Autopilot Pod のパフォーマンスを最適化するをご覧ください。

  • CPU 使用率の高い AI / ML のトレーニングと推論
  • HPC バッチ ワークロード
  • Hyperdisk Balanced、Throughput、Extreme ストレージ
AI / ML トレーニングやハイ パフォーマンス コンピューティング(HPC)など、CPU 使用率の高いワークロード Performance
  • 利用可能なアーキテクチャ: amd64、arm64
  • Pod はコンピューティング リソースにいつでもアクセスできる
  • Pod のメモリや CPU の上限なし
  • ノードあたり 1 つの Pod

Performance コンピューティング クラスで使用可能な Compute Engine マシンシリーズのリストについては、サポートされているマシンシリーズをご覧ください。

  • CPU 使用率の高い AI / ML のトレーニングと推論
  • HPC バッチ ワークロード
  • Hyperdisk Balanced、Throughput、Extreme ストレージ
コアあたりのシングル スレッド コンピューティングと水平スケーリング Scale-Out
  • 利用可能な CPU: Ampere Altra Arm または AMD EPYC Milan
  • Compute Engine のマシン ファミリー: T2A(Arm)、T2D(x86)
  • 利用可能なアーキテクチャ: arm64 または amd64
  • SMT オフ。1 つの vCPU は 1 つの物理コアに相当。
  • 最大 3.5 GHz のクロック周波数

Tau T2A マシンシリーズ(Arm)または Tau T2D マシンシリーズ(x86)を基盤とする。

  • ウェブサーバー
  • コンテナ化されたマイクロサービス
  • データログの処理
  • 大規模な Java アプリ
  • Hyperdisk Throughput ストレージ

Autopilot でコンピューティング クラスを選択する方法

詳細な手順については、Autopilot Pod のコンピューティング クラスを選択するをご覧ください。

Pod を特定のコンピューティング クラスに配置するように Autopilot に指示するには、nodeSelector またはノード アフィニティ ルールcloud.google.com/compute-class ラベルを使用します。次に例を示します。

nodeSelector

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-app
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: hello-app
      template:
        metadata:
          labels:
            app: hello-app
        spec:
          nodeSelector:
            cloud.google.com/compute-class: "COMPUTE_CLASS"
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            resources:
              requests:
                cpu: "2000m"
                memory: "2Gi"
    

COMPUTE_CLASS は、ユースケースに基づいてコンピューティング クラスの名前に置き換えます(Scale-Out など)。Accelerator を選択した場合は、互換性のある GPU も指定する必要があります。手順については、Autopilot で GPU ワークロードをデプロイするをご覧ください。Performance を選択した場合は、ノードセレクタで Compute Engine マシンシリーズも選択する必要があります。手順については、CPU 使用率の高いワークロードを最適なパフォーマンスで実行するをご覧ください。

nodeAffinity

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-app
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: hello-app
      template:
        metadata:
          labels:
            app: hello-app
        spec:
          terminationGracePeriodSeconds: 25
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            resources:
              requests:
                cpu: "2000m"
                memory: "2Gi"
                ephemeral-storage: "1Gi"
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: cloud.google.com/compute-class
                    operator: In
                    values:
                    - "COMPUTE_CLASS"
      

COMPUTE_CLASS は、ユースケースに基づいてコンピューティング クラスの名前に置き換えます(Scale-Out など)。Accelerator を選択した場合は、互換性のある GPU も指定する必要があります。手順については、Autopilot で GPU ワークロードをデプロイするをご覧ください。Performance を選択した場合は、ノードセレクタで Compute Engine マシンシリーズも選択する必要があります。手順については、CPU 使用率の高いワークロードを最適なパフォーマンスで実行するをご覧ください。

ワークロードをデプロイすると、Autopilot は次の処理を行います。

  • 指定された構成を基盤とするノードを自動的にプロビジョニングして Pod を実行します。
  • 新しいノードに自動的に taint を追加して、他の Pod がそうしたノードでスケジュールされないようにします。taint はコンピューティング クラスごとに一意です。CPU アーキテクチャも選択している場合、GKE はそのアーキテクチャに固有の別の taint を追加します。
  • デプロイされた Pod に、適用された taint に対応する toleration を自動的に追加します。これにより、GKE はこれらの Pod を新しいノードに配置できます。

たとえば、Pod の Scale-Out コンピューティング クラスをリクエストした場合は、次のようになります。

  1. Autopilot は、これらのノードに対して Scale-Out に固有の taint を追加します。
  2. Autopilot は、その taint の toleration を Scale-Out Pod に追加します。

Scale-Out をリクエストしていない Pod は認められません。その結果、GKE はこれらの Pod を Scale-Out ノードにスケジュールしません。

ワークロードの仕様でコンピューティング クラスを明示的にリクエストしない場合、Autopilot はデフォルトの汎用コンピューティング クラスを使用するノードで Pod をスケジューリングします。ほとんどのワークロードは、汎用コンピューティング クラスで問題なく実行できます。

CPU アーキテクチャをリクエストする方法

場合によっては、ワークロードが Arm などの特定のアーキテクチャ用に構築されていることがあります。バランスやスケールアウトなど、一部のコンピューティング クラスは複数の CPU アーキテクチャをサポートしています。次の例に示すように、ノードセレクタやノード アフィニティ ルールでラベルを指定することで、コンピューティング クラスのリクエストと同時に特定のアーキテクチャをリクエストできます。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-arm
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-arm
  template:
    metadata:
      labels:
        app: nginx-arm
    spec:
      nodeSelector:
        cloud.google.com/compute-class: COMPUTE_CLASS
        kubernetes.io/arch: ARCHITECTURE
      containers:
      - name: nginx-arm
        image: nginx
        resources:
          requests:
            cpu: 2000m
            memory: 2Gi

ARCHITECTURE は、必要な CPU アーキテクチャ(arm64amd64 など)に置き換えます。

アーキテクチャを明示的にリクエストしない場合、Autopilot は指定されたコンピューティング クラスのデフォルトのアーキテクチャを使用します。

Autopilot の Arm アーキテクチャ

Autopilot は、Arm CPU アーキテクチャを使用するノードのリクエストをサポートしています。Arm ノードは、同様の x86 ノードよりも費用効率に優れ、パフォーマンスも向上します。Arm ノードをリクエストする手順については、Arm アーキテクチャに Autopilot ワークロードをデプロイするをご覧ください。

デプロイメントで正しいイメージを使用していることを確認してください。Pod が Arm イメージを使用していて、Arm ノードをリクエストしない場合、Autopilot は x86 ノードで Pod をスケジューリングし、Pod がクラッシュします。同様に、x86 イメージが誤って使用されて Pod の Arm ノードがリクエストされた場合、Pod はクラッシュします。

コンピューティング クラスのワークロードに対する Autopilot の検証

Autopilot は、ワークロードのマニフェストを検証し、ノードセレクタやノード アフィニティ ルールのコンピューティング クラスとアーキテクチャ リクエストが正しくフォーマットされていることを確認します。次のルールが適用されます。

  • コンピューティング クラスは 1 つだけです。
  • サポートされていないコンピューティング クラスは使用できません。
  • GKE のバージョンは、コンピューティング クラスをサポートしている必要があります。
  • 選択したアーキテクチャは 1 つだけです。
  • コンピューティング クラスは、選択したアーキテクチャをサポートしている必要があります。

ワークロード マニフェストがこれらの検証のいずれかに失敗すると、Autopilot はワークロードを拒否します。

コンピューティング クラスを利用できるリージョン

次の表は、特定のコンピューティング クラスと CPU アーキテクチャが利用可能なリージョンを示しています。

コンピューティング クラスの利用可否
汎用 すべてのリージョン
Balanced すべてのリージョン
Performance サポートされているマシンシリーズを含むすべてのリージョン。
Scale-Out 対応する Compute Engine マシンシリーズを含むすべてのリージョン。特定のマシンシリーズの可用性を確認するには、利用可能なリージョンとゾーンのフィルタを使用します。

特定のリージョンでコンピューティング クラスが使用可能な場合、そのリージョンでは少なくとも 2 つのゾーンでハードウェアを使用できます。

デフォルト、最小、最大のリソース リクエスト

Autopilot ワークロードのコンピューティング クラスを選択する場合は、そのコンピューティング クラスの最小と最大を満たす数のリソース リクエストを指定してください。デフォルトのリクエスト数と、各コンピューティング クラスの最小リクエスト数と最大リクエスト数については、GKE Autopilot のリソース リクエストと上限をご覧ください。

次のステップ