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 をデプロイするをご覧ください。

次のステップ