Spot VM を使用する MIG を作成する

このドキュメントでは、スポット VM を使用するマネージド インスタンス グループ(MIG)を作成する方法について説明します。

Spot VM は、大幅な割引料金で取得できる仮想マシン(VM)インスタンスです。ただし、Compute Engine は容量を再利用するために、いつでも Spot VM を停止または削除できます。Spot VM を使用して、バッチ処理ジョブやステートレス アプリケーションなどのフォールト トレラント ワークロードを低コストで実行します。

MIG の作成に使用できる他の方法については、MIG を作成するための基本的なシナリオをご覧ください。

始める前に

  • リクエストするリソースに十分な割り当てがあることを確認します。詳細については、数量に基づく割り当てをご覧ください。
  • Spot VM を作成するリージョンまたはゾーンでリソースの可用性を確認します。リソースの可用性を確認すると、VM の作成時にリソースの可用性に関するエラーが発生する可能性を減らすことができます。手順については、Spot VM の可用性を表示するをご覧ください。
  • まだ設定していない場合は、認証を設定します。認証では、 Cloud de Confiance by S3NS サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Cloud de Confiance コンソールを使用して Cloud de Confiance by S3NS サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、 フェデレーション ID を使用して gcloud CLI にログインします。ログイン後、次のコマンドを実行して Google Cloud CLI を初期化します。

      gcloud init
  • デフォルトのリージョンとゾーンを設定します。
  • REST

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

      Google Cloud CLI をインストールし、 フェデレーション ID を使用して gcloud CLI にログインします。

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

必要なロール

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

この事前定義ロールには、スポット VM を使用する MIG の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

Spot VM を使用する MIG を作成するには、次の権限が必要です。

  • インスタンス テンプレートを作成する: プロジェクトに対する compute.instanceTemplates.create
  • MIG を作成する: プロジェクトに対する compute.instanceGroupManagers.create

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

Spot VM を使用する MIG を作成する

Spot VM を使用する MIG を作成するには、次の操作を行います。

  1. Spot VM の作成用に構成されたインスタンス テンプレートを作成する

  2. リージョン MIG またはゾーン MIG を作成する

Spot VM の作成用に構成されたインスタンス テンプレートを作成する

Spot VM の作成用に構成されたインスタンス テンプレートを作成するには、次のいずれかのオプションを選択します。

コンソール

  1. Cloud de Confiance コンソールで、[インスタンス テンプレート] ページに移動します。

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

  2. [インスタンス テンプレートを作成] をクリックします。[インスタンス テンプレートの作成] ページが表示されます。

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

  4. [ロケーション] セクションで、作成するインスタンス テンプレートのタイプを選択します。

    • リージョン インスタンス テンプレートの場合は、[リージョン] を選択し、テンプレートを作成するリージョンを選択します。Spot VM で使用するマシンタイプに基づいて、サポートされているリージョンを指定します。

    • グローバル インスタンス テンプレートの場合は、[グローバル] を選択します。

  5. [マシンの構成] セクションで、Spot VM でサポートされているマシンシリーズを選択します。

  6. [プロビジョニング モデル] セクションで、次の操作を行います。

    1. [VM プロビジョニング モデル] リストで、[スポット] を選択します。

    2. プリエンプション時に Spot VM を停止するか削除するかを指定するには、[VM の終了時] リストで、次のいずれかのオプションを選択します。

      • Spot VM を停止するには、[停止] を選択します。

      • スポット VM を削除するには、[削除] を選択します。

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

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

gcloud

スポット VM の作成用に構成されたインスタンス テンプレートを作成するには、gcloud compute instance-templates create コマンドを使用します。

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

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-template-region=REGION \
    --instance-termination-action=TERMINATION_ACTION \
    --machine-type=MACHINE_TYPE \
    --provisioning-model=SPOT

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

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

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

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

  • REGION: インスタンス テンプレートを作成するリージョン。スポット VM で使用するマシンタイプに基づいて、サポートされているリージョンを指定します。

  • TERMINATION_ACTION: プリエンプション時に Compute Engine が Spot VM を停止するか削除するか。VM を停止(STOP)するか削除(DELETE)するかを指定する必要があります。

  • MACHINE_TYPE: スポット VM でサポートされているマシンタイプ。N1 マシンタイプを指定する場合は、--accelerator フラグを設定して、VM にアタッチする GPU の数とタイプを定義する必要があります。

REST

Spot VM の作成用に構成されたインスタンス テンプレートを作成するには、次のいずれかの 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"
      }
    ],
    "scheduling": {
      "instanceTerminationAction": "TERMINATION_ACTION",
      "provisioningModel": "SPOT"
    }
  }
}

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

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

  • REGION: インスタンス テンプレートを作成するリージョン。スポット VM で使用するマシンタイプに基づいて、サポートされているリージョンを指定します。

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

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

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

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

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

  • MACHINE_TYPE: スポット VM でサポートされているマシンタイプ。N1 マシンタイプを指定する場合は、guestAccelerators フィールドを含めて、VM にアタッチする GPU の数とタイプを定義する必要があります。

  • TERMINATION_ACTION: プリエンプション時に Compute Engine が Spot VM を停止するか削除するか。VM を停止(STOP)するか削除(DELETE)するかを指定する必要があります。

インスタンス テンプレートを作成したら、テンプレートの詳細を表示してプロパティを確認できます。

リージョン MIG またはゾーン MIG を作成する

リージョン MIG またはゾーン MIG を作成するには、次のいずれかのオプションを選択します。

コンソール

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

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

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

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

  4. [インスタンス テンプレート] リストで、前のセクションで作成したインスタンス テンプレートを選択します。

  5. [インスタンス数] フィールドに、MIG で作成するスポット VM の数を入力します。ワークロードで特定の名前の VM が必要な場合は、0 と入力して、この段階での VM の作成をスキップします。MIG を作成したら、特定の名前の VM を追加します。

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

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

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

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

gcloud

MIG を作成するには、gcloud compute instance-groups managed create コマンドを使用します。

作成する MIG のタイプに基づいて、コマンドに次のフラグを指定します。

  • ゾーン MIG を作成するには、--zone フラグを含めます。

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --size=SIZE \
        --template=INSTANCE_TEMPLATE_URL \
        --zone=ZONE
    
  • リージョン MIG を作成するには、--region フラグを指定します。

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --size=SIZE \
        --template=INSTANCE_TEMPLATE_URL \
        --region=REGION
    

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

  • INSTANCE_GROUP_NAME: MIG の名前。

  • INSTANCE_TEMPLATE_URL: 前のセクションで作成したインスタンス テンプレートの URL。この URL には、インスタンス テンプレートの ID または名前を含めることができます。次のいずれかの値を指定します。

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

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

  • SIZE: MIG で作成する Spot VM の数。ワークロードに特定の VM 名が必要な場合は、0 を指定して、この段階での VM の作成をスキップします。MIG を作成したら、特定の名前の VM を追加します。

  • ZONE: ゾーン MIG を作成するゾーン。リージョン インスタンス テンプレートを使用して MIG を作成する場合は、テンプレートと同じリージョン内のゾーンを指定する必要があります。

  • REGION: リージョン MIG を作成するリージョン。リージョン インスタンス テンプレートを使用して MIG を作成する場合は、テンプレートのリージョンと同じリージョンを指定する必要があります。

REST

MIG を作成するには、次のいずれかのメソッドに POST リクエストを送信します。

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

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

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "instanceTemplate": "INSTANCE_TEMPLATE_URL",
      "targetSize": SIZE
    }
    

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

  • PROJECT_ID: リージョン MIG またはゾーン MIG を作成するプロジェクトの ID。

  • ZONE: ゾーン MIG を作成するゾーン。リージョン インスタンス テンプレートを使用して MIG を作成する場合は、テンプレートと同じリージョン内のゾーンを指定する必要があります。

  • REGION: リージョン MIG を作成するリージョン。リージョン インスタンス テンプレートを使用して MIG を作成する場合は、テンプレートのリージョンと同じリージョンを指定する必要があります。

  • INSTANCE_GROUP_NAME: MIG の名前。

  • INSTANCE_TEMPLATE_URL: 前のセクションで作成したインスタンス テンプレートの URL。この URL には、インスタンス テンプレートの ID または名前を含めることができます。次のいずれかの値を指定します。

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

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

  • SIZE: MIG で作成する Spot VM の数。ワークロードに特定の VM 名が必要な場合は、0 を指定して、この段階での VM の作成をスキップします。MIG を作成したら、特定の名前の VM を追加します。

MIG を作成したら、MIG の詳細を表示してプロパティを確認できます。

次のステップ