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


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

オートスケーラーを使用すると、以下を行うことにより、単一テナントノード グループのサイズを自動的に管理できます。

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

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

ノードグループをスケーリングするときに、オートスケーラーは、スケジュールされる VM に必要な容量、ターゲットとするノードの空き容量、ノードグループの自動スケーリング ポリシーを考慮します。必要な容量は VM のサイズにのみ基づきます。空き容量は、ノードのサイズ、ノードにすでにスケジュールされている VM、オプションの CPU のオーバーコミット率に基づいて推定されます。

次の図に例を示します。

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

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

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

オートスケーラー モード

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

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

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

スケールアウトは、容量不足が原因で VM のスケジューリングが失敗した場合にトリガーされます。この問題を解決するために、新しいノードがグループに追加され、オペレーションが再試行されます。

ノードが一定期間空のままになると、スケールインがトリガーされます。空のノードは、VM がノードグループから削除または移行された結果として生じます。ノードグループの自動スケーリング ポリシーで許可されている場合、空のノードは安定化期間の後に削除されるようスケジュールされます。安定化期間は、必要な場合にそのノードをまた使用できるようにするためのものです。

スケールアウトのみ

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

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

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

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

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

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

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

可用性

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

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

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

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

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 です。

REST

以下の例は、ノードグループの作成時に 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 です。

REST

以下の例は、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 は、自動スケーリング ポリシーを削除するノードグループの名前に置き換えます。

REST

次の例は、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 によってノードグループのスケーリングが行われている場合は、ノードのターゲット数も確認できます。

次のステップ