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


このページでは、単一テナントノード グループにオートスケーラーを使用する方法について説明します。

ワークロードに単一テナントノードを使用すれば、ノードグループ オートスケーラーを使用してノードグループのサイズを自動的に管理できます。ノードグループの作成中または作成後にノードグループの自動スケーリングを構成します。ノードグループのオートスケーラーを使用すると、以下を行うことにより、単一テナントノード グループのサイズを自動的に管理できます。

  • 該当ノードグループ上の別の仮想マシン(VM)インスタンスの容量が不足している場合に、ノードグループのサイズを増やす。オートスケーラーがノードグループのサイズを増やすと、VM のスケジュールが透過的に設定されます。

  • 空のノードが存在する場合にノードグループのサイズを小さくする。これにより、未使用の単一テナントノードの料金を支払う必要がなくなります。

次の図に例を示します。

  1. ノードグループのオートスケーラーは、空のノードがないノードグループに VM がデプロイされると、それに応じて新しいノードを追加することで、ノードグループをスケールアウトします。

  2. ノードグループのオートスケーラーは、単一テナントノード グループから空のノードを削除することで、ノードグループをスケールインします。

ノードグループのサイズを管理するノードグループのオートスケーラー。

オートスケーラー モード

デフォルトでは、オートスケーラーは、ノードグループで有効になっていません。オートスケーラーが有効になっていない場合は、ノードグループのサイズを手動で管理する必要があります。ノードグループでオートスケーラーを有効にすると、オートスケーラーがノードグループのサイズを拡大および縮小(スケールアウトおよびスケールイン)するか、グループのサイズの拡大のみ(スケールアウトのみ)を行うかを指定できます。

スケールアウトとスケールイン

このモードでは、ノードグループのオートスケーラーは、ノードグループのサイズの拡大(スケールアウト)と縮小(スケールイン)の両方を行います。このモードでは、ノードグループの最大サイズと最小サイズを指定する必要があります。オートスケーラーは、ノードグループのサイズを指定された最大値より大きくすることも、指定された最小値より小さくすることもありません。

オートスケーラーは、別の VM のための容量がないノードグループに VM のスケジュールを設定するリクエストがあると、ノードグループのサイズをスケールアウトします。逆に、オートスケーラーは、ノードグループ内に空のノードがある場合、ノードグループのサイズをスケールインします。

スケールアウトのみ

このモードでは、オートスケーラーは VM のスケジュールを設定するリクエストに応じてノードグループのサイズを増やしますが、ノードグループから空のノードを削除しません。Google では、同じ物理サーバー上にライセンスが必要な BYOL ワークロードなどの物理サーバーのアフィニティを必要とするワークロードを単調に増やす場合にこのモードをおすすめしています。

ノードグループが、ノードグループ内で移行のメンテナンス ポリシーで構成されている場合は、このモードを使用する必要があります。

ノードグループのサイズ範囲

オートスケーラーを有効にするときは、ノードグループのサイズの最小値と最大値を指定して、ノードグループのサイズ範囲を設定します。

最小サイズの値を指定しなければ、オートスケーラーが最小サイズをゼロ(0)に設定します。最小サイズの値を指定する場合は、0 以上の整数で、最大サイズ以下の値を指定する必要があります。

ノードグループの最大サイズの値を指定する必要があります。この値は 0 以上 100 以下の整数にする必要があります。この値は、単一テナント ノード グループの最大許容サイズであり、指定した最小値以上である必要があります。

ノードグループの最大サイズである 100 を超える可能性のあるワークロードに対応するには、アフィニティ ラベルが一致する複数のノードグループ(workload:in:my-autoscaled-node-groupsなど)を作成します。次に、そのアフィニティ ラベルを使用して VM のスケジュールを設定し、各グループで自動スケーリングを有効にして、ノードグループの動的スケーリング グループを作成します。

対象

単一テナントノード オートスケーラーは、単一テナントノードをサポートするリージョンでのみ使用できます。

始める前に

ノードグループのオートスケーラーを有効にする

新しいノードグループで自動スケーリングを構成します。

gcloud

以下の例は、ノードグループの作成時に node-groups create コマンドを使用してオートスケーラーを有効にする方法を示しています。既存のノードグループにオートスケーラーを追加するには、node-groups update コマンドを使用します。

gcloud compute sole-tenancy node-groups create group-name \
    --node-template template-name \
    --target-size size \
    --maintenance-policy maintenance-policy \
    --zone zone \
    --autoscaler-mode mode \
    --max-nodes max-nodes \
    --min-nodes min-nodes

以下を置き換えます。

  • group-name: 作成するノードグループの名前。
  • template-name: ノードグループを作成するのに使用するノード テンプレートの名前。
  • size: ノードグループ内のノードのターゲット初期数。
  • maintenance-policy: VM を移行するかどうか、ホスト メンテナンス イベント中に VM を再起動するかどうかを指定します。次のいずれかの値に設定します。
    • default: VM は新しいノードにライブ マイグレーションされます。
    • migrate-within-node-group: VM はノードグループ内の別のノードにライブ マイグレーションされます。
    • restart-in-place: VM はメンテナンス イベントによって終了された後、同じノードで再起動されます。
  • zone: ノードグループを作成するゾーン。
  • mode: このノードグループのオートスケーラーのモード。次のいずれかの値に設定します。
    • off: オートスケーラーを無効にします。
    • on: スケールインとスケールアウトを有効にします。
    • only-scale-out: スケールアウトのみを有効にします。最小限のサーバーでホストされている VM を再起動するようにノードグループが構成されている場合は、このモードを使用する必要があります。
  • max-nodes: ノードグループの最大サイズ。100 以下、かつ、min-nodes 以上の値に設定します。
  • min-nodes: ノードグループの最小サイズ。max-nodes 以下の整数値にする必要があります。デフォルト値は 0 です。

API

以下の例は、ノードグループの作成時に nodeGroups.insert コマンドを使用してオートスケーラーを有効にする方法を示しています。既存のノードグループにオートスケーラーを追加するには、nodeGroups.patch コマンドを使用します。

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/nodeGroups?initialNodeCount=initial-node-count

  {
    "name": "group-name",
    "nodeTemplate": "template-name",
    "autoscalingPolicy": {
      "mode": "mode",
      "min_nodes": min-nodes,
      "max_nodes": max-nodes
    }
    "maintenancePolicy": maintenance-policy
  }

以下を置き換えます。

  • project-id: オートスケーラーのあるノードグループを追加するプロジェクトの ID。
  • zone: 新しいノードグループを作成するゾーン。
  • initial-node-count: ノードグループを作成するときに必要です。これにより、ノードグループ内のノードの初期数が指定されます。min-nodes の値が初期ノード数よりも大きい場合、ノードグループのサイズは min-nodes の値にスケールアウトされます。
  • group-name: 新しいノードグループの名前。
  • template-name: ノードグループを作成するのに使用するノード テンプレートの名前。
  • mode: このノードグループのオートスケーラーのモード。次のいずれかに設定します。
    • OFF: オートスケーラーを無効にします。
    • ON: スケールインとスケールアウトを有効にします。
    • ONLY_SCALE_OUT: スケールアウトのみを有効にします。最小限のサーバーでホストされている VM を再起動するようにノードグループが構成されている場合は、このモードを使用する必要があります。
  • max-nodes: ノードグループの最大サイズ。100 以下、かつ、min-nodes 以上の値に設定します。
  • min-nodes: ノードグループの最小サイズ。max-nodes 以下の整数値にする必要があります。デフォルト値は 0 です。
  • maintenance-policy: VM を移行するかどうか、ホスト メンテナンス イベント中に VM を再起動するかどうかを指定します。次のいずれかの値に設定します。
    • DEFAULT: VM は新しいノードにライブ マイグレーションされます。
    • MIGRATE_WITHIN_NODE_GROUP: VM はノードグループ内の別のノードにライブ マイグレーションされます。
    • RESTART_IN_PLACE: VM はメンテナンス イベントによって終了された後、同じノードで再起動されます。

オートスケーラーの設定を更新する

ノードグループのオートスケーラー設定を変更するには、オートスケーラー モードを更新するか、ノードグループの最小サイズと最大サイズを更新します。

gcloud

以下の例は、node-groups update コマンドを使用してノードグループのオートスケーラーのモードを変更する方法を示しています。

gcloud compute sole-tenancy node-groups update name \
    --autoscaler-mode mode \
    --max-nodes max-nodes \
    --min-nodes min-nodes

以下を置き換えます。

  • name: オートスケーラー モードを変更するノードグループの名前。
  • mode: このノードグループのオートスケーラーのモード。次のいずれかに設定します。
    • off: オートスケーラーを無効にします。
    • on: スケールインとスケールアウトを有効にします。
    • only-scale-out: スケールアウトのみを有効にします。最小限のサーバーでホストされている VM を再起動するようにノードグループが構成されている場合は、このモードを使用する必要があります。
  • max-nodes: ノードグループの最大サイズ。100 以下、かつ、min-nodes 以上の値に設定します。
  • min-nodes: ノードグループの最小サイズ。max-nodes 以下の整数値にする必要があります。デフォルト値は 0 です。

API

以下の例は、nodeGroups.patch コマンドを使用してノードグループのオートスケーラーのモードを変更する方法を示しています。

PATCH https://compute.googleapis.com/compute/beta/projects/project-id/zones/group-zone/nodeGroups/group-name

{
  "nodeTemplate": "template-name",
  "autoscalingPolicy": {
    "mode": "mode",
    "minSize": min-nodes,
    "maxSize": max-nodes
  }
}

以下を置き換えます。

  • project-id: オートスケーラー モードを変更するノードグループを含むプロジェクトの ID。
  • group-zone: オートスケーラー モードを変更するノードグループを含むゾーン。
  • group-name: オートスケーラー モードを変更するノードグループの名前。
  • template-name: ノードグループを作成するのに使用したノード テンプレートの名前。
  • mode: このノードグループのオートスケーラーのモード。次のいずれかに設定します。

    • OFF: オートスケーラーを無効にします。
    • ON: スケールインとスケールアウトを有効にします。

    • ONLY_SCALE_OUT: スケールアウトのみを有効にします。ノードグループが、ノードグループ内で移行のメンテナンス ポリシーで構成されている場合は、このモードを使用する必要があります。

  • max-nodes: ノードグループの最大サイズ。100 以下、かつ、min-nodes 以上の値に設定します。

  • min-nodes: ノードグループの最小サイズ。max-nodes 以下の整数値にする必要があります。デフォルト値は 0 です。

自動スケーリングされたノードグループのサイズを手動で更新する

オートスケーラーが有効になっている場合、ノードグループのサイズは自動的に管理されますが、そのノードグループの VM のスケジュール設定や削除を行い、グループサイズを手動で効率的に更新できます。

自動スケーリングされたノードグループのサイズを手動で減らすには、ノードが空になるまでノードから VM を削除します。ノードが空になると、オートスケーラーによって空のノードが削除されます。これにより、ノードグループのサイズが小さくなります。

自動スケーリングされたノードグループのサイズを手動で増やすには、現在のサイズよりも大きい値にグループの最小サイズを設定します。グループの最小サイズが現在のサイズよりも大きい値に設定されると、オートスケーラーによって、新たに指定された最小サイズまでグループのサイズがスケールアウトされます。

ノードグループがスケールアウトするようにのみ設定されている場合、オートスケーラーはグループサイズの増加を自動的に管理し、手動によるグループサイズの増加を無効にします。この設定を使用すると、ノードが空になり、その空のノードを削除できるようになるまでノードから VM を削除することで、グループのサイズを削減できます。

オートスケーラーを無効にする

オートスケーラーを使用してノードグループのサイズを自動的に管理する必要がなくなった場合、またはノードグループのサイズを手動で管理する必要がある場合、オートスケーラーを無効にします。

gcloud

gcloud compute sole-tenancy node-groups update name \
    --autoscaler-mode OFF

name は、自動スケーリング ポリシーを削除するノードグループの名前に置き換えます。

API

以下の例は、nodeGroups.patch コマンドを使用してノードグループのオートスケーラーをオフにする方法を示しています。

PATCH https://compute.googleapis.com/compute/beta/projects/project-id/zones/group-zone/nodeGroups/group-name

{
  "nodeTemplate": "template-name",
  "autoscalingPolicy": {
    "mode": "mode"
  }
}

以下を置き換えます。

  • project-id: オートスケーラー モードを変更するノードグループを含むプロジェクトの ID。
  • group-zone: オートスケーラー モードを変更するノードグループを含むゾーン。
  • group-name: オートスケーラー モードを変更するノードグループの名前。
  • template-name: ノードグループを作成するのに使用したノード テンプレートの名前。
  • mode: このノードグループのオートスケーラーのモード。このノードグループでオートスケーラーを無効にするには、OFF に設定します。

オートスケーラー アクティビティを表示する

Google Cloud コンソールで、ノードグループのサイズを調整するオートスケーラーを表示します。Google Cloud コンソールにノードグループの現在のサイズが表示されます。現在、オートスケーラーによってグループのサイズが調整されている場合は、ノードグループのターゲット サイズも確認できます。

コンソール

  1. Google Cloud コンソールで、[単一テナントノード] ページに移動します。

    [単一テナントノード] ページに移動

  2. [ノードグループ] をクリックします。

  3. 各ノードグループ内のノード数を表示します。Compute Engine によってノードグループのスケーリングが行われている場合は、ノードのターゲット数も確認できます。

次のステップ