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


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

準備

  • サイズ変更リクエストの仕組みを確認します。
  • リクエストするリソースに十分な 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 コンソールで、[インスタンス テンプレート] ページに移動します。

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

  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 に設定されています。

たとえば、次のコマンドを使用します。

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

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

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

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

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

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

    • IMAGE: OS イメージの特定のバージョン。例: debian-10-buster-v20200309 特定のバージョンの OS イメージを指定する場合は、--image-family フラグを --image フラグに置き換える必要があります。

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

REST

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

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

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

たとえば、次のように POST リクエストを作成します。

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

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "mode": "READ_WRITE",
        "type": "PERSISTENT",
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "onHostMaintenance": "TERMINATE"
    }
  }
}

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

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

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

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

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

    • IMAGE: OS イメージの特定のバージョン。例: debian-10-buster-v20200309

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

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

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

MIG を作成または更新する

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

コンソール

サイズ変更リクエストを作成するように構成されたゾーン MIG を作成するには、次の操作を行います。

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

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

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

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

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

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

  5. [ロケーション] セクションで、次の操作を行います。

    1. [シングルゾーン](デフォルト)を選択します。

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

  6. 自動スケーリング構成を削除するには、次の操作を行います。

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

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

  7. 修復を無効にするには、[VM インスタンスのライフサイクル] セクションで、[障害時のデフォルトのアクション] リストをクリックして、[アクションなし] を選択します。

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

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

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

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

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

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

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

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

gcloud

サイズ変更リクエストを作成するように構成されたゾーン MIG を作成するには、--default-action-on-vm-failure フラグを do_nothing に設定して instance-groups managed create コマンドを使用します。

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template=INSTANCE_TEMPLATE_NAME \
    --size=0 \
    --zone=ZONE \
    --default-action-on-vm-failure=do_nothing

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

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

  • INSTANCE_TEMPLATE_NAME: 前のセクションで作成したインスタンス テンプレートの名前。

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

REST

サイズ変更リクエストを作成するように構成されたゾーン MIG を作成するには、instanceGroupManagers.insert メソッドPOST リクエストを行います。リクエストの本文に、DO_NOTHING に設定された defaultActionOnFailure フィールドを含めます。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers

{
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
    }
  ],
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": 0,
  "instanceLifecyclePolicy": {
    "defaultActionOnFailure": "DO_NOTHING"
  }
}

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

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

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

  • INSTANCE_TEMPLATE_NAME: 前のセクションで作成したインスタンス テンプレートの名前。

  • 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

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

  • 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 が配置されているゾーン。

REST

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests

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

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

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

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

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

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

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

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

次のステップ