Autopilot Pod のコンピューティング クラスを選択する


このドキュメントでは、Google Kubernetes Engine(GKE)Autopilot クラスタで固有のハードウェア要件を持つワークロードを実行するために、特定のコンピューティング クラスを選択する方法について説明します。このドキュメントをお読みになる前に、GKE Autopilot のコンピューティング クラスのコンセプトを理解している必要があります。

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

Autopilot は、特定のハードウェア要件を持つワークロードを実行するように設計されたコンピューティング クラスを提供します。これらのコンピューティング クラスは、機械学習や AI タスクなどのワークロードや、高トラフィックのリアルタイム データベースの実行に適しています。

コンピューティング クラスは Compute Engine マシンシリーズのサブセットであり、デフォルトの Autopilot 汎用コンピューティング クラスよりも柔軟性があります。たとえば、Scale-Out クラスでは同時マルチスレッドがオフになるため、各 vCPU が 1 つの物理コアになります。

個々の Pod のニーズに基づいて、通常の Autopilot Pod または Spot Pod を構成して、これらのコンピューティング クラスに基づくノードをリクエストできます。また、特定の CPU アーキテクチャ(Arm など)を、そのアーキテクチャをサポートするコンピューティング クラスでリクエストすることもできます。

始める前に

始める前に、次の作業が完了していることを確認してください。

  • Google Kubernetes Engine API を有効にする。
  • Google Kubernetes Engine API の有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、gcloud components update を実行して最新のバージョンを取得する。

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 使用率の高いワークロードを最適なパフォーマンスで実行するをご覧ください。

Spot Pod に対して特定のコンピューティング クラスをリクエストすることもできます。

リソース リクエストを指定する

コンピューティング クラスを選択する場合は、選択したクラスの最小のリソース リクエストと最大のリソース リクエストに基づいて、Pod のリソース リクエストを指定してください。実際のリクエストが最小値未満の場合、Autopilot によりリクエストが自動的にスケールアップされます。ただし、リクエストが最大値を超えると、Autopilot による Pod のデプロイは行われず、エラー メッセージが表示されます。

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

一部のコンピューティング クラスは複数の CPU アーキテクチャをサポートしています。たとえば、Scale-Out クラスは Arm と x86 の両方のアーキテクチャをサポートしています。特定のアーキテクチャをリクエストしない場合、Autopilot では、指定したコンピューティング クラスのデフォルト アーキテクチャを持つノードがプロビジョニングされます。Pod で別のアーキテクチャを使用する必要がある場合は、ノードセレクタまたはノード アフィニティ ルールで、使用するコンピューティング クラスのリクエストとともにそのアーキテクチャをリクエストします。リクエストするコンピューティング クラスは、指定する CPU アーキテクチャをサポートしている必要があります。

手順については、Arm アーキテクチャで Autopilot Pod をデプロイするをご覧ください。

次のステップ