このページでは、特定のハードウェア要件を持つ Google Kubernetes Engine(GKE)Autopilot ワークロードを実行するために使用できるコンピューティング クラスについて説明します。手順については、特定のコンピューティング クラスで Autopilot Pod を実行するをご覧ください。
Autopilot のコンピューティング クラスの概要
デフォルトの場合、GKE Autopilot Pod は、ウェブサービスや中間強度のバッチジョブなどの汎用ワークロード用に最適化されたコンピューティング プラットフォームで実行されます。この汎用プラットフォームは、信頼性が高く、コストが最適化されたハードウェア構成を備えています。これにより、ほとんどのワークロードの要件に対応できます。
独自のハードウェア要件(機械学習や 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 |
互換性のある GPU タイプは次のとおりです。
|
|
CPU リクエストまたはメモリ リクエストが汎用コンピューティング クラスの最大数または特定の CPU プラットフォームよりも大きい | Balanced |
N2 マシンシリーズ(Intel)または N2D マシンシリーズ(AMD)に基づく。 |
|
他のコンピューティング クラスでサポートされていない特定のマシンシリーズの要件があるワークロード | 特定のマシンシリーズ |
詳細については、マシンシリーズを選択して Autopilot Pod のパフォーマンスを最適化するをご覧ください。 |
|
AI / ML トレーニングやハイ パフォーマンス コンピューティング(HPC)など、CPU 使用率の高いワークロード | Performance |
Performance コンピューティング クラスで使用可能な Compute Engine マシンシリーズのリストについては、サポートされているマシンシリーズをご覧ください。 |
|
コアあたりのシングル スレッド コンピューティングと水平スケーリング | Scale-Out |
Tau T2A マシンシリーズ(Arm)または Tau T2D マシンシリーズ(x86)に基づく。 |
|
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
コンピューティング クラスをリクエストした場合は、次のようになります。
- Autopilot は、これらのノードに対して
Scale-Out
に固有の taint を追加します。 - 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 アーキテクチャ(arm64
や amd64
など)に置き換えます。
アーキテクチャを明示的にリクエストしない場合、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 のリソース リクエストと上限をご覧ください。