このドキュメントでは、MIG でバルクモードを使用して、必要なすべての仮想マシン(VM)インスタンスを同時に作成する方法について説明します。インスタンスを一度に作成することで、MIG は必要なすべてのリソースが使用可能になった場合にのみインスタンスを作成できます。
バルクモードの仕組みについては、 MIG でのインスタンスの一括作成についてをご覧ください。
インスタンス テンプレートの作成
MIG のバルクモードは、予約で制限されたプロビジョニング モデルまたは Flex Start プロビジョニング モデルを指定するインスタンス テンプレートでのみサポートされています。バルクモードを使用するには、次のセクションで説明するように、これらのプロビジョニング モデルのいずれかを使用してインスタンス テンプレートを作成します。プロビジョニング モデルの詳細については、 Compute Engine インスタンスのプロビジョニング モデルをご覧ください。
予約にバインドされたプロビジョニング モデルを使用する
インスタンス テンプレートを作成するには、次のいずれかのオプションを選択します。
コンソール
Cloud de Confiance コンソールで、[インスタンス テンプレート] ページに移動します。
[インスタンス テンプレートを作成] をクリックします。[インスタンス テンプレートの作成] ページが開きます。
[名前] フィールドに、インスタンス テンプレートの名前を入力します。
[ロケーション] セクションで、次のいずれかのオプションを選択します。
リージョン インスタンス テンプレートを作成するには、[リージョン(推奨)] を選択し、テンプレートを作成するリージョンを選択します。
グローバル インスタンス テンプレートを作成するには、[グローバル] を選択します。
[マシンの構成] セクションで、マシンタイプを指定します。
[プロビジョニング モデル] セクションで、次の操作を行います。
[VM プロビジョニング モデルの詳細設定] を開きます。
[VM の終了時] リストで、[削除] を選択します。
省略可: デフォルト値のブートディスクのタイプまたはイメージを変更するには、[ブートディスク] セクションで [変更] をクリックします。プロンプトに従ってブートディスクを変更します。
[詳細オプション] セクションを開き、次の操作を行います。
[管理] セクションを開きます。
[予約] セクションで [予約を選択] を選択し、[予約を選択] をクリックします。 表示されたペインで、プロンプトに沿って使用する予約を選択します。
[作成] をクリックします。
gcloud
インスタンス テンプレートを作成するには、
instance-templates create コマンドを次のフラグ設定で使用します。
--instance-termination-actionフラグ。DELETEに設定します。--maintenance-policyフラグ。TERMINATEに設定します。--provisioning-modelフラグ。RESERVATION_BOUNDに設定します。--reservation-affinityフラグ。specificに設定します。--reservationフラグ。
次のコマンド例は、リージョン インスタンス テンプレートを作成します。グローバル インスタンス テンプレートを作成する場合は、--instance-template-region フラグを使用せずに同じコマンドを使用します。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--image-project=IMAGE_PROJECT \
--image-family=IMAGE_FAMILY \
--instance-termination-action=DELETE \
--instance-template-region=REGION \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--provisioning-model=RESERVATION_BOUND \
--reservation-affinity=specific \
--reservation=RESERVATION_URL
次のように置き換えます。
INSTANCE_TEMPLATE_NAME: 作成するインスタンス テンプレートの名前。IMAGE_PROJECT: イメージを含むイメージ プロジェクト。例:debian-cloudサポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。IMAGE_FAMILY: イメージ ファミリー 。イメージ ファミリーを指定して、非推奨ではない最新の OS イメージを使用します。たとえば、debian-12を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、 イメージ ファミリーのベスト プラクティスをご覧ください。REGION: インスタンス テンプレートを作成するリージョン。MACHINE_TYPE: 使用する予約で指定されたマシンタイプ。RESERVATION_URL: 使用するカレンダー モードの将来の予約用に自動作成された予約の URL。次のいずれかの値を指定します。自動作成された予約がこのプロジェクトに存在する場合:
RESERVATION_NAME。自動作成された予約が別のプロジェクトに存在する場合:
projects/PROJECT_ID/reservations/RESERVATION_NAME。
REST
インスタンス テンプレートを作成するには、次のいずれかのメソッドに POST リクエストを送信します。
リージョン インスタンス テンプレートを作成する:
regionInstanceTemplates.insertメソッドグローバル インスタンス テンプレートを作成する:
instanceTemplates.insertメソッド
リクエスト本文で、次のフィールドを指定します。
SPECIFIC_RESERVATIONに設定したreservationAffinity.consumeReservationTypeフィールド。compute.googleapis.com/reservation-nameに設定したreservationAffinity.keyフィールド。reservationAffinity.valuesフィールドは、自動作成された予約の URL に設定されます。DELETEに設定したscheduling.instanceTerminationActionフィールド。TERMINATEに設定したscheduling.onHostMaintenanceフィールド。RESERVATION_BOUNDに設定したscheduling.provisioningModelフィールド。
たとえば、リージョン インスタンス テンプレートを作成するには、次のようにリクエストを送信します。
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": "SPECIFIC_RESERVATION",
"key": "compute.googleapis.com/reservation-name",
"values": [
"RESERVATION_URL"
]
},
"scheduling": {
"instanceTerminationAction": "DELETE",
"onHostMaintenance": "TERMINATE",
"provisioningModel": "RESERVATION_BOUND"
}
}
}
次のように置き換えます。
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: 使用する予約で指定されたマシンタイプ。RESERVATION_URL: 使用するカレンダー モードの将来の予約用に自動作成された予約の URL。次のいずれかの値を指定します。自動作成された予約がこのプロジェクトに存在する場合:
RESERVATION_NAME自動作成された予約が別のプロジェクトに存在する場合:
projects/PROJECT_ID/reservations/RESERVATION_NAME
インスタンス テンプレートの作成の詳細については、 インスタンス テンプレートを作成するをご覧ください。
Flex Start プロビジョニング モデルを使用する
インスタンス テンプレートを作成するには、次のいずれかのオプションを選択します。
コンソール
Cloud de Confiance コンソールで、[インスタンス テンプレート] ページに移動します。
[インスタンス テンプレートを作成] をクリックします。[インスタンス テンプレートの作成] ページが開きます。
[名前] フィールドに、インスタンス テンプレートの名前を入力します。
[ロケーション] セクションで、次のいずれかのオプションを選択します。
リージョン インスタンス テンプレートを作成するには、[リージョン(推奨)] を選択し、テンプレートを作成するリージョンを選択します。
グローバル インスタンス テンプレートを作成するには、[グローバル] を選択します。
[マシンの構成] セクションで、マシンタイプを指定します。
[プロビジョニング モデル] セクションで、次の操作を行います。
[VM プロビジョニング モデル] フィールドで、[Flex Start] を選択します。
[VM プロビジョニング モデルの詳細設定] を開きます。
[VM の制限時間を設定する] チェックボックスをオンにします。
インスタンス テンプレートを使用して作成された VM の実行時間を設定するには、[時間を入力] フィールドに時間数を入力します。値は 36 秒(
0.01)から 7 日間(168)の範囲で指定する必要があります。
省略可: デフォルト値のブートディスクのタイプまたはイメージを変更するには、[ブートディスク] セクションで [変更] をクリックします。プロンプトに従ってブートディスクを変更します。
[作成] をクリックします。
gcloud
インスタンス テンプレートを作成するには、
instance-templates create コマンドを次のフラグ設定で使用します。
--instance-termination-actionフラグ。DELETEに設定します。--maintenance-policyフラグ。TERMINATEに設定します。--max-run-durationフラグ。--provisioning-modelフラグ。FLEX_STARTに設定します。--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 \
--instance-termination-action=DELETE \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--max-run-duration=RUN_DURATION \
--provisioning-model=FLEX_START \
--reservation-affinity=none
次のように置き換えます。
INSTANCE_TEMPLATE_NAME: 作成するインスタンス テンプレートの名前。IMAGE_PROJECT: イメージを含むイメージ プロジェクト。例:debian-cloudサポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。IMAGE_FAMILY: イメージ ファミリー 。イメージ ファミリーを指定して、非推奨ではない最新の OS イメージを使用します。たとえば、debian-12を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、 イメージ ファミリーのベスト プラクティスをご覧ください。REGION: インスタンス テンプレートを作成するリージョン。MACHINE_TYPE: Flex Start VM に使用するマシンタイプ。N1 マシンタイプを指定する場合は、--acceleratorフラグ を設定して、VM にアタッチする GPU の数とタイプを定義する必要があります。RUN_DURATION: リクエストされた VM を実行する期間。値は、日数、時間、分、秒として指定し、その後にそれぞれd、h、m、sを続ける必要があります。たとえば、30 分の場合は30mを指定し、1 日と 2 時間 3 分 4 秒の場合は1d2h3m4sを指定します。値は 10 分~7 日の範囲で指定してください。
REST
インスタンス テンプレートを作成するには、次のいずれかのメソッドに POST リクエストを送信します。
リージョン インスタンス テンプレートを作成する:
regionInstanceTemplates.insertメソッドグローバル インスタンス テンプレートを作成する:
instanceTemplates.insertメソッド
リクエスト本文で、次のフィールドを指定します。
NO_RESERVATIONに設定したreservationAffinity.consumeReservationTypeフィールド。DELETEに設定したscheduling.instanceTerminationActionフィールド。scheduling.maxRunDurationフィールド。TERMINATEに設定したscheduling.onHostMaintenanceフィールド。scheduling.provisioningModelフィールド。FLEX_STARTに設定します。
次のリクエスト例は、リージョン インスタンス テンプレートを作成します。
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": {
"instanceTerminationAction": "DELETE",
"maxRunDuration": {
"seconds": RUN_DURATION
},
"onHostMaintenance": "TERMINATE",
"provisioningModel": "FLEX_START"
}
}
}
次のように置き換えます。
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: VM に使用するマシンタイプ。N1 マシンタイプを指定する場合は、guestAcceleratorsフィールド を含めて、VM にアタッチする GPU の数とタイプを定義する必要があります。RUN_DURATION: リクエストされた VM の実行時間(秒単位)。値は600(600 秒、10 分)から604800(604,800 秒、7 日間)の範囲で指定する必要があります。
インスタンス テンプレートの作成の詳細については、 インスタンス テンプレートを作成するをご覧ください。
バルクモードを使用する MIG を作成する
MIG でインスタンスの一括作成を有効にするには、MIG の構成で targetSizePolicy.mode フィールドを BULK に設定します。このバルクモードを使用すると、MIG はリソースが完全に利用可能になるまで待機してから、インスタンスを一度に作成します。
コンソール
[インスタンス グループ] ページに移動します。
[インスタンス グループを作成] をクリックします。[インスタンス グループの作成] ページが開きます。
[名前] フィールドに、MIG の名前を入力します。
インスタンス テンプレートを選択する前に、次の操作を行う必要があります。
- Flex Start プロビジョニング モデルを使用する場合は、次のように修復を無効にする必要があります。
- [VM インスタンスのライフサイクル] セクションで、[代替ゾーンでの VM の修復を許可する] チェックボックスをオフにします。
- [失敗時のデフォルトのアクション] リストで、[アクションなし] を選択します。
- [ロケーション] セクションで、次の操作を行います。
- ゾーン MIG を作成するには、[単一ゾーン] を選択します。
- リージョン MIG を作成する場合は、[マルチゾーン] を選択します。In the [Target distribution shape], select [Any single zone].表示されたダイアログで、[インスタンスの再分配を無効化] を選択します。
- Flex Start プロビジョニング モデルを使用する場合は、次のように修復を無効にする必要があります。
[インスタンス テンプレート] フィールドに戻ります。[インスタンス テンプレート] リストで、前のセクションで作成したインスタンス テンプレートを選択します。
[インスタンス数] フィールドに、一度に作成するインスタンスの数を指定します。
[バルク ターゲット サイズ ポリシーを使用して、一度に VM を取得します] チェックボックスをオンにします。
[作成] をクリックします。
gcloud
一括作成が有効になっている MIG を作成するには、
gcloud compute instance-groups managed create コマンド
を使用し、--target-size-policy-mode フラグを bulk に設定します。
Flex Start プロビジョニング モデルを使用する場合は、次のコマンドに --default-action-on-vm-failure=do-nothing フラグを含めて、MIG で修復を無効にする必要があります。
- ゾーン MIG を作成するには、次のコマンドを実行します。
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
--size=SIZE \
--target-size-policy-mode=bulk \
--template=INSTANCE_TEMPLATE_URL \
--zone=ZONE \
- リージョン MIG を作成するには、次のコマンドを実行します。
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
--size=SIZE \
--target-size-policy-mode=bulk \
--template=INSTANCE_TEMPLATE_URL \
--zones=LIST_OF_ZONES \
次のように置き換えます。
INSTANCE_GROUP_NAME: MIG の名前。SIZE: MIG 内のインスタンス数。INSTANCE_TEMPLATE_URL: MIG でインスタンスの作成に使用するインスタンス テンプレートの URL。この URL には、インスタンス テンプレートの ID または名前を含めることができます。次のいずれかの値を指定します。- リージョン インスタンス テンプレートの場合:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - グローバル インスタンス テンプレートの場合:
INSTANCE_TEMPLATE_ID
- リージョン インスタンス テンプレートの場合:
ZONE: MIG がインスタンスを作成するゾーン。LIST_OF_ZONES: リージョン MIG がインスタンスを作成するゾーンのカンマ区切りのリスト。例:us-central1-a, us-central1-b, us-central1-c
REST
一括作成が有効になっている MIG を作成するには、次のように POST リクエストを送信します。リクエストの本文で、targetSizePolicy.mode フィールドを bulk に設定します。
Flex Start プロビジョニング モデルを使用する場合は、次のリクエストに
"instanceLifecyclePolicy": {"defaultActionOnFailure": "DO_NOTHING"} フィールド
を含めて、MIG で修復を無効にする必要があります。
ゾーン MIG を作成するには、
POSTリクエストをinstanceGroupManagers.insertメソッドに送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "name": "INSTANCE_GROUP_NAME", "targetSize": SIZE, "targetSizePolicy": { "mode": "bulk" }, "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ] }リージョン MIG を作成するには、
POSTリクエストをregionInstanceGroupManagers.insertメソッドに送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "name": "INSTANCE_GROUP_NAME", "targetSize": SIZE, "targetSizePolicy": { "mode": "bulk" }, "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ] }
次のように置き換えます。
PROJECT_ID:プロジェクト ID。ZONE:MIG がインスタンスを作成するゾーン。REGION:MIG がインスタンスを作成するリージョン。INSTANCE_GROUP_NAME:MIG の名前。SIZE:MIG 内のインスタンス数。INSTANCE_TEMPLATE_URL: MIG でインスタンスの作成に使用するインスタンス テンプレートの URL。この URL には、インスタンス テンプレートの ID または名前を含めることができます。次のいずれかの値を指定します。- リージョン インスタンス テンプレートの場合:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - グローバル インスタンス テンプレートの場合:
INSTANCE_TEMPLATE_ID
- リージョン インスタンス テンプレートの場合:
インスタンスを追加または削除する
バルクモードを使用する MIG では、MIG のターゲット サイズを手動で増減することで、インスタンスを追加または削除できます。
インスタンスを追加する: ターゲット サイズをゼロから増やすと、MIG は MIG の作成時と同じ方法で インスタンスを追加します。MIG にインスタンスがない場合は、
createInstancesメソッドを使用して、特定の名前のインスタンスを作成することもできます。特定の名前のインスタンスを作成するには、 MIG に特定の名前のインスタンスを作成するをご覧ください。インスタンスを削除する: ターゲット サイズをゼロに減らすと、MIG は グループ内の既存のインスタンスをすべて削除し、進行中の作成オペレーションをキャンセルします 。 ターゲット サイズを
0に減らすことで、インスタンスを削除できます。ゼロ以外のサイズに減らすには、MIG で一括インスタンス オペレーションが進行中であってはなりません(bulkInstanceOperation.inProgressがfalseである必要があります)。
ターゲット サイズを変更して MIG からインスタンスを追加または削除するには、MIG のサイズを手動で設定するをご覧ください。
次のステップ
- MIG でインスタンスの一括作成を表示またはキャンセルする方法を学習する。
- マネージド インスタンスの操作方法を学習する。
- MIG とマネージド インスタンスに関する情報を表示する