GKE クラスタをスケーリングする

Managed Service for Apache Spark on GKE クラスタをスケールするには、Spark ドライバまたは Spark エグゼキュータのロールに関連付けられた ノードプール のオートスケーラー構成を更新します。Managed Service for Apache Spark on GKE クラスタを作成するときに、Managed Service for Apache Spark on GKE のノードプールとその関連ロールを指定します。

ノードプールの自動スケーリングの設定

Managed Service for Apache Spark on GKE 仮想クラスタを作成するときに、Managed Service for Apache Spark on GKE ノードプールの自動スケーリングの境界を設定できます。指定しない場合、Managed Service for Apache Spark on GKE ノードプール はデフォルト値で自動スケーリングされます(Managed Service for Apache Spark on GKE 一般提供リリースで、デフォルト は最小 = 1 と最大 = 10 に設定されていますが、変更される場合があります)。特定のノードプールの自動スケーリングの最小値と最大値を取得するには、Managed Service for Apache Spark on GKE 仮想クラスタで作成する際に設定します。

ノードプールの自動スケーリングの更新

Managed Service for Apache Spark on GKE ノードプールの自動スケーリング構成を変更するには、次の GKE gcloud container node-pools update コマンドを使用します。

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=GKE_CLUSTER_NAME \
    --region=region \
    --enable-autoscaling \
    --min-nodes=min nodes (must be <= max-nodes) \
    --max-nodes=max nodes (must be >= min-nodes) \

Spark 自動スケーリングの仕組み

  1. ジョブが送信されると、ドライバ Pod が Spark ドライバの役割に関連付けられたノードプールで実行されるようにスケジュールされます。
  2. ドライバ Pod は GKE スケジューラを呼び出して、エグゼキュータ Pod を作成します。
  3. エグゼキュータ Pod は、Spark エグゼキュータの役割に関連付けられたノードプールでスケジュールされます。
  4. ノードプールに Pod 用の容量があれば、Pod はすぐに実行を開始します。容量が不足している場合、GKE クラスタ オートスケーラーは、リクエストされたリソースを提供できるように、最大でユーザー指定の上限までノードプールをスケールアップします。ノードプールの容量が過剰になると、GKE クラスタ オートスケーラーは、ノードプールをユーザー指定の上限までスケールダウンします。