Containers & Kubernetes

スケールアウト コンピューティング クラスを使用した、GKE Autopilot への高スループット ワークロードのデプロイ

※この投稿は米国時間 2022 年 7 月 20 日に、Google Cloud blog に投稿されたものの抄訳です。

GKE Autopilot は多機能のフルマネージド Kubernetes プラットフォームで、Kubernetes API をフル活用しており、クラスタの管理と運用に操作不要方式を採用しています。Autopilot を昨年リリースして以来、ワークロードの需要に応えるべく、イノベーションと機能の追加を継続してきました。このたび、Autopilot にコンピューティング クラスの概念が導入され、x86 と Arm の高パフォーマンス コンピューティングを実現するスケールアウト コンピューティング クラスがプレビュー版になったことをお知らせします。

Autopilot コンピューティング クラスはワークロードのデプロイが可能なハードウェア構成を厳選したものです。今回の初回リリースでは、スケールアウト コンピューティング クラスを導入しました。これは、コアあたり 1 スレッドに最適化されたワークロード向けに設計されており、水平方向にスケールします。スケールアウト コンピューティング クラスでは現在、x86 と Arm の 2 つのハードウェア アーキテクチャをサポートしています。自社ワークロードの価格とパフォーマンスのバランスに適した方を選択できます。スケールアウト コンピューティング クラスは Google Cloud の既存の汎用コンピューティング オプションに加わり、Google Cloud で利用可能な最速の CPU プラットフォームを活用する形でワークロードを実行するように設計されています。また、CPU 使用率が高いアプリケーションにおいて高い費用対効果を実現します。

一部のワークロードはよりパフォーマンスの高いコンピューティングからメリットが得られるとの声もいただいています。こうしたニーズに応えるために、スケールアウト コンピューティング クラス上で実行される x86 ワークロードは現在、第 3 世代の AMD EPYCTM プロセッサによって提供されており、同時マルチスレッディング(SMT)を無効化することで、Google Cloud の x86 プラットフォームのなかで最高のコア単位ベンチマークを達成しています。

また、今回初めて Autopilot が Arm ワークロードをサポートするようになりました。現在は、Ampere® Altra® の Arm ベース プロセッサ上で実行している新しい Tau T2A VM を利用することで、スケールアウト コンピューティング クラスには、特定のプラットフォームに依存しない活発でオープンなエンドツーエンドのエコシステムに加え、Arm ワークロードのコスト パフォーマンスのメリットがあります。Autopilot Arm Pod は現在、us-central、europe-west4、asia-southeast1 で利用できます。

スケールアウト コンピューティング クラスを使用した Arm ワークロードのデプロイ

Pod を特定のコンピューティング クラスと CPU にデプロイするには、デプロイ仕様に次のラベルを指定して、Kubernetes の nodeSelectorノード アフィニティ ルールを追加します。

cloud.google.com/COMPUTE-CLASS
kubernetes.io/ARCH

Autopilot で Arm ワークロードを実行するには、いずれかのサポート対象リージョンでバージョン 1.24.1-gke.1400 以降を実行しているクラスタが必要です。このバージョンで新しいクラスタを作成することも、既存のバージョンをアップグレードすることもできます。新しい Arm 対応クラスタを CLI で作成するには、以下を使用します。

  CLUSTER_NAME=autopilot-arm
REGION=us-central1
VERSION=1.24.1-gke.1400
gcloud container clusters create-auto $CLUSTER_NAME \
    --release-channel "rapid" --region $REGION \
    --cluster-version $VERSION

たとえば、次の Deployment 仕様は Nginx 公式イメージを Arm アーキテクチャでデプロイします。

  apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx-arm64
spec:
 selector:
   matchLabels:
     app: nginx
 template:
   metadata:
     labels:
       app: nginx
   spec:
     nodeSelector:
       cloud.google.com/compute-class: Scale-Out
       kubernetes.io/arch: arm64
     containers:
     - name: nginx
       image: nginx:latest

スケールアウト コンピューティング クラスへの x86 ワークロードのデプロイ

スケールアウト コンピューティング クラスでも、「スケールアウト」コンピューティング クラス用のセレクタを追加することで、x86 アーキテクチャをサポートしています。kubernetes.io/arch: amd64 でアーキテクチャを明示的に設定できます。x86 がデフォルトであるため、セレクタからこのラベルを省略することもできます。

Autopilot で x86 スケールアウト ワークロードを実行するには、いずれかのサポート対象リージョンでバージョン 1.24.1-gke.1400 以降を実行しているクラスタが必要です。上記のサンプルの同じ CLI コマンドで、x86 Scale-Out-capable GKE Autopilot クラスタを取得します。

  apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx-arm64
spec:
 selector:
   matchLabels:
     app: nginx
 template:
   metadata:
     labels:
       app: nginx
   spec:
     nodeSelector:
       cloud.google.com/compute-class: Scale-Out
     containers:
     - name: nginx
       image: nginx:latest

スケールアウト コンピューティング クラスを使用した Spot Pod のデプロイ

ラベル cloud.google.com/gke-spot: “true” を nodeSelector に追加することで、コンピューティング クラスと Spot Pod を結合することもできます。
  apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx-arm64
spec:
 selector:
   matchLabels:
     app: nginx
 template:
   metadata:
     labels:
       app: nginx
   spec:
     nodeSelector:
       cloud.google.com/gke-spot: "true"
       cloud.google.com/compute-class: Scale-Out
       kubernetes.io/arch: arm64
     containers:
     - name: nginx
       image: nginx:latest

スケールアウト コンピューティング クラスを使用する場合は、x86 と Arm 両方のアーキテクチャで Spot Pod がサポートされます。

スケールアウト コンピューティング クラスを GKE Autopilot でぜひお試しください。

詳細については、Autopilot クラスタの作成コンピューティング クラスの概要Arm ワークロード用イメージの構築GKE Autopilot への Arm ワークロードのデプロイに関するガイドをご覧ください。

- Google Kubernetes Engine、GKE Autopilot プロダクト マネージャー William Denniss

- プロダクト マネージャー Gari Singh