このドキュメントでは、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
を実行して最新のバージョンを取得する。
- GKE バージョン 1.24.1-gke.1400 以降を実行している GKE 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 使用率の高いワークロードを最適なパフォーマンスで実行するをご覧ください。
Spot Pod に対して特定のコンピューティング クラスをリクエストすることもできます。
リソース リクエストを指定する
コンピューティング クラスを選択する場合は、選択したクラスの最小のリソース リクエストと最大のリソース リクエストに基づいて、Pod のリソース リクエストを指定してください。実際のリクエストが最小値未満の場合、Autopilot によりリクエストが自動的にスケールアップされます。ただし、リクエストが最大値を超えると、Autopilot による Pod のデプロイは行われず、エラー メッセージが表示されます。
CPU アーキテクチャを選択する
一部のコンピューティング クラスは複数の CPU アーキテクチャをサポートしています。たとえば、Scale-Out
クラスは Arm と x86 の両方のアーキテクチャをサポートしています。特定のアーキテクチャをリクエストしない場合、Autopilot では、指定したコンピューティング クラスのデフォルト アーキテクチャを持つノードがプロビジョニングされます。Pod で別のアーキテクチャを使用する必要がある場合は、ノードセレクタまたはノード アフィニティ ルールで、使用するコンピューティング クラスのリクエストとともにそのアーキテクチャをリクエストします。リクエストするコンピューティング クラスは、指定する CPU アーキテクチャをサポートしている必要があります。
手順については、Arm アーキテクチャで Autopilot Pod をデプロイするをご覧ください。
次のステップ
- Autopilot クラスタ アーキテクチャの詳細を確認する。
- Pod のライフサイクルを理解する。
- 利用可能な Autopilot コンピューティング クラスを理解する。
- 各プラットフォームのデフォルト、最小、最大の各リソース リクエストについて読む。