Google Kubernetes Engine(GKE)Autopilot クラスタで Balanced
と Scale-Out
ComputeClasses を使用すると、追加のコンピューティング容量や特殊な CPU 構成を必要とするワークロードを実行できます。このページは、デフォルトの Autopilot クラスタ構成よりも柔軟なコンピューティング オプションを必要とするクラスタ管理者を対象としています。
Balanced と Scale-Out の ComputeClass の概要
デフォルトでは、GKE Autopilot クラスタの Pod はコンテナ最適化コンピューティング プラットフォームで実行されます。このプラットフォームは、ウェブサーバーや中程度のバッチジョブなどの汎用ワークロードに最適です。コンテナ最適化コンピューティング プラットフォームは、信頼性が高く、スケーラブルで、コストが最適化されたハードウェア構成を備えています。この構成は、ほとんどのワークロードの要件に対応できます。
独自のハードウェア要件(ML や AI タスクの実行、リアルタイムの高トラフィック データベースの実行、特定の CPU プラットフォームとアーキテクチャの必要性など)を持つワークロードがある場合は、ComputeClasses を使用してそのハードウェアをプロビジョニングできます。
Autopilot クラスタでのみ、GKE は次の厳選された ComputeClass を提供します。これにより、デフォルトのコンテナ最適化コンピューティング プラットフォームよりも柔軟性を必要とする Pod を実行できます。
Balanced
: コンテナ最適化コンピューティング プラットフォームよりも高い最大 CPU 容量とメモリ容量を提供します。Scale-Out
: 同時マルチスレッディング(SMT)を無効にし、スケールアウト用に最適化します。
これらの ComputeClass は、Autopilot クラスタでのみ使用できます。デフォルトのコンテナ最適化コンピューティング プラットフォームと同様に、Autopilot は実行中の Pod に基づいてノードのサイジングとリソース割り当てを管理します。
柔軟性を高めるカスタム ComputeClass
Autopilot クラスタの Balanced または Scale-Out ComputeClass がワークロードの要件を満たしていない場合は、独自の ComputeClass を構成できます。GKE でクラスタ内の新しいノードの構成に使用される一連のノード属性を使用して、ComputeClass Kubernetes カスタム リソースをクラスタにデプロイします。たとえば、これらのカスタム ComputeClass を使用すると、GKE Autopilot クラスタまたは GKE Standard クラスタの Balanced
または Scale-Out
ComputeClass と同じハードウェアにワークロードをデプロイできます。詳細については、GKE Standard での Autopilot モードのワークロードについてをご覧ください。
料金
Balanced
または Scale-Out
ComputeClass を使用する Pod は、次の SKU に基づいて課金されます。
詳細については、GKE の料金をご覧ください。
Balanced と Scale-Out の技術的な詳細
このセクションでは、Balanced
クラスと Scale-Out
クラスのマシンタイプとユースケースについて説明します。Pod で ComputeClass をリクエストしない場合、Autopilot はデフォルトでコンテナ最適化コンピューティング プラットフォームに Pod を配置します。コンテナ最適化コンピューティング プラットフォームを使用する Autopilot ノードのノード マシン シリーズとして ek
が表示されることがあります。EK マシンは、Autopilot 専用の E2 マシンタイプです。
次の表に、Balanced
と Scale-Out
の ComputeClass の技術的な概要を示します。
バランス型とスケールアウト型の ComputeClass | ||
---|---|---|
Balanced |
コンテナ用に最適化されたコンピューティング プラットフォームの上限よりも多くの CPU 容量とメモリ容量を提供します。追加の CPU プラットフォームと、Pod の最小 CPU プラットフォーム(Intel Ice Lake 以降など)を設定する機能を提供します。
|
|
Scale-Out |
コアあたりのシングル スレッド コンピューティングと水平スケーリングを提供します。
|
ワークロードでの ComputeClass の選択
GKE ワークロードで ComputeClass を使用するには、cloud.google.com/compute-class
ラベルのノードセレクタを使用して、ワークロード マニフェストで ComputeClass を選択します。
次の Deployment マニフェストの例では、ComputeClass を選択しています。
COMPUTE_CLASS
は、ComputeClass の名前(Balanced
や Scale-Out
など)に置き換えます。ワークロードで選択できる ComputeClass は 1 つだけです。
ワークロードをデプロイすると、GKE は次の処理を行います。
- 指定された構成を基盤とするノードを自動的にプロビジョニングして Pod を実行します。
- 新しいノードにノードラベルと taint を自動的に追加して、他の Pod がそうしたノードでスケジュールされないようにします。taint は ComputeClass ごとに一意です。CPU アーキテクチャも選択している場合、GKE はそのアーキテクチャに固有の別の taint を追加します。
- デプロイされた Pod に、適用された taint に対応する toleration を自動的に追加します。これにより、GKE はこれらの Pod を新しいノードに配置できます。
たとえば、Pod の Scale-Out
ComputeClass をリクエストした場合は、次のようになります。
- Autopilot は、これらのノードに対して
Scale-Out
に固有の taint を追加します。 - Autopilot は、その taint の toleration を
Scale-Out
Pod に追加します。
Scale-Out
をリクエストしていない Pod は認められません。その結果、GKE はこれらの Pod を Scale-Out
ノードにスケジュールしません。
ワークロードの仕様で ComputeClass を明示的にリクエストしない場合、Autopilot はデフォルトのコンテナ最適化コンピューティング プラットフォームを使用するノードで Pod をスケジューリングします。ほとんどの汎用ワークロードは、このプラットフォームで問題なく実行できます。
CPU アーキテクチャをリクエストする方法
場合によっては、ワークロードが Arm などの特定のアーキテクチャ用に構築されていることがあります。スケールアウト ComputeClass は複数の CPU アーキテクチャをサポートしています。次の例に示すように、ノードセレクタやノード アフィニティ ルールでラベルを指定することで、ComputeClass のリクエストと同時に特定のアーキテクチャをリクエストできます。
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
など)に置き換えます。ワークロードで選択できるアーキテクチャは 1 つだけです。選択した ComputeClass は、指定したアーキテクチャをサポートしている必要があります。
アーキテクチャを明示的にリクエストしない場合、Autopilot は ComputeClass のデフォルトのアーキテクチャを使用します。
Autopilot の Arm アーキテクチャ
Autopilot は、Arm CPU アーキテクチャを使用するノードのリクエストをサポートしています。Arm ノードは、同様の x86 ノードよりも費用効率に優れ、パフォーマンスも向上します。Arm ノードをリクエストする手順については、Arm アーキテクチャに Autopilot ワークロードをデプロイするをご覧ください。
デプロイメントで正しいイメージを使用していることを確認してください。Pod が Arm イメージを使用していて、Arm ノードをリクエストしない場合、Autopilot は x86 ノードで Pod をスケジューリングし、Pod がクラッシュします。同様に、x86 イメージが誤って使用されて Pod の Arm ノードがリクエストされた場合、Pod はクラッシュします。
デフォルト、最小、最大のリソース リクエスト
Autopilot ワークロードの ComputeClass を選択する場合は、その ComputeClass の最小リクエストと最大リクエストを満たすリソース リクエストを指定してください。デフォルトのリクエスト数と、各 ComputeClass の最小リクエスト数と最大リクエスト数については、GKE Autopilot のリソース リクエストと上限をご覧ください。