MIG でサイズ変更リクエストを作成する


このドキュメントでは、GPU が関連付けられている仮想マシン(VM)インスタンスのマネージド インスタンス グループ(MIG)でサイズ変更リクエストを作成する方法について説明します。

MIG でサイズ変更リクエストを作成すると、GPU などの需要の高いリソースを取得し、正確な数の VM を一度に作成して費用を最適化できます。

始める前に

  • サイズ変更リクエストの仕組みを確認します。
  • リクエストするリソースに十分な GPU 割り当てがあることを確認するには、GPU 割り当てを確認するをご覧ください。
  • まだ設定していない場合は、認証を設定します。認証とは、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 を使用して認証するをご覧ください。

必要なロール

MIG でサイズ変更リクエストを作成するために必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1)roles/compute.instanceAdmin.v1)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

この事前定義ロールには、MIG でサイズ変更リクエストを作成するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

MIG でサイズ変更リクエストを作成するには、次の権限が必要です。

  • インスタンス テンプレートを作成する: プロジェクトに対する compute.instanceTemplates.create
  • ゾーン MIG を作成する: プロジェクトに対する compute.instanceGroupManagers.create
  • MIG でサイズ変更リクエストを作成する: プロジェクトに対する compute.instanceGroupManagers.update

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

サイズ変更リクエスト用に MIG を準備する

MIG でサイズ変更リクエストを作成するには、次のセクションで説明するように、インスタンス テンプレートと MIG を構成する必要があります。

インスタンス テンプレートの作成

MIG でサイズ変更リクエストを作成する場合は、MIG で次の構成のインスタンス テンプレートを使用する必要があります。

MIG でサイズ変更リクエストを作成するように構成されたインスタンス テンプレートを作成するには、次のいずれかの方法を選択します。

コンソール

  1. Google Cloud Console で、[インスタンス テンプレート] ページに移動します。

    [インスタンス テンプレート] に移動

  2. [インスタンス テンプレートを作成] をクリックします。

  3. [名前] フィールドに、インスタンス テンプレートの名前を入力します。

  4. [ロケーション] セクションで、次のいずれかのオプションを選択します。

    • グローバル インスタンス テンプレートを作成するには、[グローバル] を選択します(まだ選択されていない場合)。

    • リージョン インスタンス テンプレートを作成するには、[リージョン] を選択し、インスタンス テンプレートを作成するリージョンを選択します。

  5. [マシンの構成] セクションで、次の操作を行います。

    1. [GPU] タブをクリックします。

    2. [GPU のタイプ] リストで、GPU のタイプを選択します。

    3. [GPU の数] リストで、GPU の数を選択します。

    4. 省略可: GPU モデルがグラフィック ワークロード用の NVIDIA RTX 仮想ワークステーション(vWS)グラフィックを多用するワークロードを実行する場合は、仮想ワークステーション(NVIDIA GRID)を有効にするをご覧ください。

    5. [マシンタイプ] セクションでマシンタイプを選択します。

  6. 省略可: デフォルト値のブートディスクのタイプまたはイメージを変更するには、[ブートディスク] セクションで [変更] をクリックします。プロンプトに従ってブートディスクを変更します。

  7. [詳細オプション] セクションを開き、次の操作を行います。

    1. [管理] セクションを開きます。

    2. [予約] リストで、[使用しない] を選択します。

  8. [作成] をクリックします。

gcloud

MIG でサイズ変更リクエストを作成するように構成されたインスタンス テンプレートを作成するには、次のフラグを指定して instance-templates create コマンドを使用します。

  • --maintenance-policy フラグが TERMINATE に設定されています。

  • --reservation-affinity フラグが none に設定されています。

たとえば、次のコマンドを使用してリージョン インスタンス テンプレートを作成します。グローバル インスタンス テンプレートを作成する場合は、--instance-template-region フラグを使用せずに同じコマンドを使用します。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

次のように置き換えます。

  • INSTANCE_TEMPLATE_NAME: 作成するインスタンス テンプレートの名前。

  • IMAGE_PROJECT: イメージを含むイメージ プロジェクト。例: debian-cloud サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。

  • IMAGE_FAMILY: イメージ ファミリー。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、debian-12 を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。

    debian-12-buster-v20240701 など、特定のバージョンの OS イメージを使用する場合は、--image-family フラグを --image フラグに置き換えます。

  • REGION: インスタンス テンプレートを作成するリージョン。

  • MACHINE_TYPE: GPU をサポートするマシンタイプ。N1 マシンタイプを指定する場合は、--accelerator フラグを設定して、VM にアタッチする GPU の数とタイプを指定します。

REST

MIG でサイズ変更リクエストを作成するように構成されたインスタンス テンプレートを作成するには、次のいずれかのメソッドに POST リクエストを送信します。

リクエストの本文で、次の操作を行います。

  • scheduling.onHostMaintenance フィールドを追加して、TERMINATE に設定します。

  • reservationAffinity.consumeReservationType フィールドを追加し、NO_RESERVATION に設定します。

たとえば、リージョン インスタンス テンプレートを作成するには、次のように POST リクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "onHostMaintenance": "TERMINATE"
    }
  }
}

次のように置き換えます。

  • PROJECT_ID: インスタンス テンプレートを作成するプロジェクトの ID。

  • REGION: インスタンス テンプレートを作成するリージョン。

  • INSTANCE_TEMPLATE_NAME: 作成するインスタンス テンプレートの名前。

  • IMAGE_PROJECT: イメージを含むイメージ プロジェクト。例: debian-cloud サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。

  • IMAGE: 次のいずれかを指定します。

    • OS イメージの特定のバージョン。例: debian-12-bookworm-v20240617

    • イメージ ファミリーfamily/IMAGE_FAMILY の形式にする必要があります。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12 を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。

  • MACHINE_TYPE: GPU をサポートするマシンタイプ。N1 マシンタイプを指定する場合は、リクエスト本文に guestAccelerators フィールドを含めて、VM に関連付けられる GPU の数とタイプを指定します。

インスタンス テンプレートの作成の詳細については、インスタンス テンプレートを作成するをご覧ください。

MIG を作成または更新する

前のセクションの説明に従ってインスタンス テンプレートを作成したら、そのインスタンス テンプレートを使用して次のように MIG を作成するか、MIG を更新します。また、サイズ変更リクエスト用に MIG を準備するには、次のことを行う必要があります。

サイズ変更リクエストと互換性のある MIG を作成するには、次のいずれかのオプションを選択します。

コンソール

  1. Google Cloud コンソールの [インスタンス グループ] ページに移動します。

    [インスタンス グループ] に移動

  2. [インスタンス グループの作成] をクリックします。

    [インスタンス グループの作成] ページが開きます。

  3. [名前] フィールドに、MIG の名前を入力します。

  4. [インスタンス テンプレート] リストで、前のセクションで作成したインスタンス テンプレートを選択します。リージョン インスタンス テンプレートを選択すると、[リージョン] リストはインスタンス テンプレートのリージョンに設定されます。

  5. [ロケーション] セクションで、ゾーン MIG またはリージョン MIG を作成するかどうかを次のように指定します。

    1. ゾーン MIG を作成するには、[単一ゾーン] を選択します。リージョン MIG を作成する場合は、[複数のゾーン] を選択します。

    2. MIG のリージョンゾーンを選択します。

    3. リージョン MIG を作成する場合は、次の操作を行います。

      1. [ターゲット分配形態] フィールドで、[任意のシングルゾーン] を選択します。このオプションは、後続の手順で自動スケーリング構成を削除した後にのみ選択できます。

      2. 任意の単一ゾーン オプションを選択したら、表示されたダイアログで [インスタンスの再分配を無効にする] をクリックします。

  6. 自動スケーリングの構成を削除します。

    1. [自動スケーリング] セクションで、[自動スケーリング モード] リストをクリックし、[自動スケーリングの構成を削除] をクリックします。

    2. 確認ダイアログで [削除] をクリックします。

  7. 次のように修復を無効にします。

    1. [VM インスタンスのライフサイクル] セクションで、[障害発生時のデフォルトのアクション] リストをクリックします。

    2. [対応なし] を選択します。

  8. 次のいずれかを行います。

    • この時点でサイズ変更リクエストを作成する場合は、次の操作を行います。

      1. [インスタンス数] フィールドに、一度に作成する VM の数を入力します。

        [インスタンス グループの作成] ページの [インスタンス数] フィールド。

      2. [Use resize request to create VMs all at once] チェックボックスをオンにします。

      3. [リクエストされた実行時間] フィールドと [単位] リストで、VM の実行期間を指定します。期間は 1 時間から 7 日の範囲で指定してください。

    • それ以外の場合は、[インスタンス数] フィールドに「0」と入力します。後で、サイズ変更リクエストを作成して、グループに VM を追加できます。

  9. [作成] をクリックします。

gcloud

--default-action-on-vm-failure フラグを do_nothing に設定して instance-groups managed create コマンドを使用します。リージョン MIG を作成する場合は、--target-distribution-shape フラグを any-single-zone に設定し、--instance-redistribution-type フラグを none に設定することも必要です。

  • ゾーン MIG を作成するには、次のコマンドを実行します。

    gcloud compute instance-groups managed create INSTANCE_GROUP_URL \
      --template=INSTANCE_TEMPLATE_NAME \
      --size=0 \
      --zone=ZONE \
      --default-action-on-vm-failure=do_nothing
    
  • リージョン MIG を作成するには、次のコマンドを実行します。

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --template=INSTANCE_TEMPLATE_URL \
        --size=0 \
        --region=REGION \
        --target-distribution-shape=any-single-zone \
        --instance-redistribution-type=none \
        --default-action-on-vm-failure=do_nothing
    

次のように置き換えます。

  • INSTANCE_GROUP_NAME: 作成する MIG の名前。

  • INSTANCE_TEMPLATE_URL: 前のセクションで作成したインスタンス テンプレートの部分的な URL。リージョン インスタンス テンプレートを使用して MIG を作成する場合は、テンプレートのリージョン内にのみ MIG を作成できます。次のいずれかの値を指定します。

    • リージョン インスタンス テンプレートの場合: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • グローバル インスタンス テンプレートの場合: INSTANCE_TEMPLATE_NAME

  • ZONE: MIG を作成するゾーン。

  • REGION: MIG を作成するリージョン。

REST

  • ゾーン MIG を作成するには、次のように instanceGroupManagers.insert メソッドを使用して POST リクエストを送信します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": 0,
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "DO_NOTHING"
      }
    }
    
  • リージョン MIG を作成するには、次のように regionInstanceGroupManagers.insert メソッドを使用して POST リクエストを送信します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": 0,
      "distributionPolicy": {
        "targetShape": "ANY_SINGLE_ZONE"
      },
      "updatePolicy": {
        "instanceRedistributionType": "NONE"
      },
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "DO_NOTHING"
      }
    }
    

次のように置き換えます。

  • PROJECT_ID: 前のセクションで作成したインスタンス テンプレートが配置されているプロジェクトの ID。

  • INSTANCE_TEMPLATE_URL: 前のセクションで作成したインスタンス テンプレートの部分的な URL。リージョン インスタンス テンプレートを使用して MIG を作成する場合は、テンプレートのリージョン内にのみ MIG を作成できます。次のいずれかの値を指定します。

    • リージョン インスタンス テンプレートの場合: regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • グローバル インスタンス テンプレートの場合: global/instanceTemplates/INSTANCE_TEMPLATE_NAME

  • ZONE: MIG を作成するゾーン。

  • REGION: MIG を作成するリージョン。

  • INSTANCE_GROUP_NAME: 作成する MIG の名前。

MIG でサイズ変更リクエストを作成する

サイズ変更リクエストを作成する前に、前のセクションの説明に従って MIG を準備してください。

サイズ変更リクエストを作成してリクエストが承認され、リクエストされたすべてのリソースが使用可能になると、MIG はリクエストされた数の VM を一度に作成します。VM は、指定された実行期間の終了後に MIG によって削除されるまで、またはユーザーがそれらを削除するまで実行されます。

MIG でサイズ変更リクエストを作成するには、次のいずれかのオプションを選択します。

コンソール

  1. Google Cloud コンソールの [インスタンス グループ] ページに移動します。

    [インスタンス グループ] に移動

  2. [名前] 列で、サイズ変更リクエストを作成する MIG の名前をクリックします。

    MIG の概要ページが開きます。

  3. [サイズ変更リクエスト] 行で、 [サイズ変更リクエストを編集] をクリックします。

  4. [ サイズ変更の新規リクエスト] をクリックします。

    [サイズ変更の新規リクエスト] ペインが表示されます。

  5. [名前] フィールドに、サイズ変更リクエストの名前を入力します。

  6. [必要な追加インスタンス数] フィールドに、一度に MIG に追加する VM の数を入力します。

  7. [リクエストされた実行時間] フィールドと [単位] フィールドで、リクエストされた VM の実行期間を指定します。期間は 1 時間から 7 日の範囲で指定してください。

  8. [作成] をクリックします。

gcloud

  • ゾーン MIG でサイズ変更リクエストを作成するには、instance-groups managed resize-requests create コマンドを使用します。

    gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
        --resize-request=RESIZE_REQUEST_NAME \
        --resize-by=COUNT \
        --requested-run-duration=RUN_DURATION \
        --zone=ZONE
    
  • リージョン MIG でサイズ変更リクエストを作成するには、beta instance-groups managed resize-requests create コマンドを使用します。

    gcloud beta compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
        --resize-request=RESIZE_REQUEST_NAME \
        --resize-by=COUNT \
        --requested-run-duration=RUN_DURATION \
        --region=REGION
    

次のように置き換えます。

  • INSTANCE_GROUP_NAME: サイズ変更リクエストを作成するために構成された MIG の名前。

  • RESIZE_REQUEST_NAME: サイズ変更リクエストの名前。指定された MIG 内で一意である必要があります。それ以外の場合、サイズ変更リクエストは作成されません。

  • COUNT: MIG に一度に追加する VM の数。

  • RUN_DURATION: リクエストされた VM を実行する期間。値は、日数、時間、分、秒として指定し、その後にそれぞれ dhms を配置する必要があります。たとえば、30 分の場合は 30m を指定し、1 日と 2 時間 3 分 4 秒の場合は 1d2h3m4s を指定します。値は 10 分~7 日の範囲で指定してください。

  • ZONE: MIG が配置されているゾーン。

  • REGION: MIG が配置されているリージョン。

REST

  • ゾーン MIG でサイズ変更リクエストを作成するには、instanceGroupManagerResizeRequests.insert メソッドを使用して POST リクエストを送信します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests
    
  • リージョン MIG でサイズ変更リクエストを作成するには、beta.regionInstanceGroupManagerResizeRequests.insert メソッドを使用して POST リクエストを送信します。

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests
    

リクエスト本文に、次のものを含めます。

{
  "name": "RESIZE_REQUEST_NAME",
  "resizeBy": COUNT,
  "requestedRunDuration": {
    "seconds": "RUN_DURATION"
  }
}

次のように置き換えます。

  • PROJECT_ID: 指定した MIG が配置されているプロジェクトの ID。

  • ZONE: MIG が配置されているゾーン。

  • REGION: MIG が配置されているリージョン。

  • INSTANCE_GROUP_NAME: サイズ変更リクエストを作成するために構成された MIG の名前。

  • RESIZE_REQUEST_NAME: サイズ変更リクエストの名前。指定された MIG 内で一意である必要があります。それ以外の場合、サイズ変更リクエストは作成されません。

  • COUNT: MIG に一度に追加する VM の数。

  • RUN_DURATION: リクエストされた VM の実行時間(秒単位)。値は 600(600 秒、10 分)から 604800(604,800 秒、7 日間)の範囲で指定する必要があります。

サイズ変更リクエストを作成した後、サイズ変更リクエストの詳細を表示して、ステータスの確認やトラブルシューティングを行うことができます。

次のステップ