Create a MIG that uses Spot VMs

This document explains how to create a managed instance group (MIG) that uses Spot VMs.

Spot VMs are virtual machine (VM) instances that you can obtain at a deeply discounted price. However, Compute Engine can stop or delete Spot VMs at any time to reclaim capacity. Use Spot VMs to run fault-tolerant workloads, such as batch processing jobs or stateless applications, at a low cost.

For other methods that you can use to create MIGs, see Basic scenarios for creating a MIG .

Before you begin

  • Verify that you have sufficient quota for the resources that you want to request. For more information, see Allocation quotas .
  • Verify the availability of resources in the region or zone where you want to create Spot VMs. Checking the availability of resources helps reduce your chances of encountering resource availability errors when you create VMs. For instructions, see View availability of Spot VMs .
  • If you haven't already, set up authentication . Authentication verifies your identity for access to Google Cloud services and APIs. To run code or samples from a local development environment, you can authenticate to Compute Engine by selecting one of the following options:

    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. After installation, initialize the Google Cloud CLI by running the following command:

      gcloud  
      init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity .

    2. Set a default region and zone .

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.

      Install the Google Cloud CLI.

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity .

    For more information, see Authenticate for using REST in the Google Cloud authentication documentation.

Required roles

To get the permissions that you need to create MIGs that use Spot VMs, ask your administrator to grant you the Compute Instance Admin (v1) ( roles/compute.instanceAdmin.v1 ) IAM role on the project. For more information about granting roles, see Manage access to projects, folders, and organizations .

This predefined role contains the permissions required to create MIGs that use Spot VMs. To see the exact permissions that are required, expand the Required permissionssection:

Required permissions

The following permissions are required to create MIGs that use Spot VMs:

  • To create an instance template: compute.instanceTemplates.create on the project
  • To create a MIG: compute.instanceGroupManagers.create on the project

You might also be able to get these permissions with custom roles or other predefined roles .

Create a MIG that uses Spot VMs

To create a MIG that uses Spot VMs, you must complete the following steps:

  1. Create an instance template configured for creating Spot VMs

  2. Create a regional or zonal MIG

Create an instance template configured for creating Spot VMs

To create an instance template configured for creating Spot VMs, select one of the following options:

Console

  1. In the Google Cloud console, go to the Instance templatespage.

    Go to Instance templates

  2. Click Create instance template. The Create an instance templatepage appears.

  3. In the Namefield, enter a name for the instance template.

  4. In the Locationsection, select the type of instance template that you want to create:

    • For a regional instance template, select Regional, and then select the region in which to create your template. Based on the machine type that you want your Spot VMs to use, specify a supported region .

    • For a global instance template, select Global.

  5. In the Machine configurationsection, select a supported machine series for Spot VMs.

  6. In the Provisioning modelsection, do the following:

    1. In the VM provisioning modellist, select Spot.

    2. To specify whether to stop or delete Spot VMs on preemption, in the On VM terminationlist, select one of the following options:

      • To stop Spot VMs, select Stop.

      • To delete Spot VMs, select Delete.

  7. Optional: To change the default value boot disk type or image, in the Boot disksection, click Change. Then, follow the prompts to change the boot disk.

  8. Click Create.

gcloud

To create an instance template configured for creating Spot VMs, use the gcloud compute instance-templates create command .

The following command creates a regional instance template. If you want to create a global instance template, then use the same command without the --instance-template-region flag.

 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 

Replace the following:

  • INSTANCE_TEMPLATE_NAME : the name of the instance template to create.

  • IMAGE_PROJECT : the image project that contains the image; for example, debian-cloud . For more information about the supported image projects, see Public images .

  • IMAGE_FAMILY : an image family . This specifies the most recent, non-deprecated OS image. For example, if you specify debian-12 , the latest version in the Debian 12 image family is used. For more information about using image families, see Image families best practices .

  • REGION : the region where to create the instance template. Based on the machine type that you want the Spot VMs to use, specify a supported region .

  • TERMINATION_ACTION : whether Compute Engine stops or deletes the Spot VMs on preemption. You must specify to either stop ( STOP ) or delete ( DELETE ) VMs.

  • MACHINE_TYPE : a supported machine type for Spot VMs. If you specify an N1 machine type, then you must include the --accelerator flag to define the number and type of GPUs to attach to your VMs.

REST

To create an instance template configured for creating Spot VMs, make one of the following POST requests:

For example, to create a regional instance template, make a request as follows:

 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"
    }
  }
} 

Replace the following:

  • PROJECT_ID : the ID of the project in which to create the instance template.

  • REGION : the region where to create the instance template. Based on the machine type that you want the Spot VMs to use, specify a supported region .

  • INSTANCE_TEMPLATE_NAME : the name of the instance template.

  • IMAGE_PROJECT : the image project that contains the image; for example, debian-cloud . For more information about the supported image projects, see Public images .

  • IMAGE : specify one of the following:

    • A specific version of the OS image—for example, debian-12-bookworm-v20240617 .

    • An image family , which must be formatted as family/ IMAGE_FAMILY . This specifies the most recent, non-deprecated OS image. For example, if you specify family/debian-12 , the latest version in the Debian 12 image family is used. For more information about using image families, see Image families best practices .

  • MACHINE_TYPE : a supported machine type for Spot VMs. If you specify an N1 machine type, then you must include the guestAccelerators field to define the number and type of GPUs to attach to your VMs.

  • TERMINATION_ACTION : whether Compute Engine stops or deletes the Spot VMs on preemption. You must specify to either stop ( STOP ) or delete ( DELETE ) VMs.

After you create the instance template, you can view the template's details to review its properties.

Create a regional or zonal MIG

To create regional or zonal MIG, select one of the following options:

Console

  1. In the Google Cloud console, go to the Instance groupspage.

    Go to Instance groups

  2. Click Create instance group. The Create instance grouppage opens.

  3. In the Namefield, enter a name for the MIG.

  4. In the Instance templatelist, select the instance template that you created in the previous section.

  5. In the Number of instancesfield, enter the number of Spot VMs to create in the MIG. If your workload requires VMs with specific names, then enter 0 to skip the creation of VMs at this stage. After you create the MIG, add VMs with specific names to it .

  6. In the Locationsection, specify whether you want to create a zonal or a regional MIG as follows:

    1. To create a zonal MIG, select Single zone. Or, to create a regional MIG, select Multiple zones.

    2. Select the Regionand Zonesfor the MIG.

  7. Click Create.

gcloud

To create a MIG, use the gcloud compute instance-groups managed create command .

Based on the type of MIG that you want to create, include the following flags in the command:

  • To create a zonal MIG, include the --zone flag:

     gcloud compute instance-groups managed create INSTANCE_GROUP_NAME 
    \
        --size= SIZE 
    \
        --template= INSTANCE_TEMPLATE_URL 
    \ --zone= ZONE 
     
    
  • To create a regional MIG, include the --region flag:

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

Replace the following:

  • INSTANCE_GROUP_NAME : the name of the MIG.

  • INSTANCE_TEMPLATE_URL : the URL of the instance template that you created in the previous section. The URL can contain either the ID or the name of the instance template. Specify one of the following values:

    • For a regional instance template: projects/ PROJECT_ID / regions/REGION /instanceTemplates/ INSTANCE_TEMPLATE_ID

    • For a global instance template: INSTANCE_TEMPLATE_ID

  • SIZE : the number of Spot VMs to create in the MIG. If your workload requires specific VM names, then specify 0 to skip the creation of VMs at this stage. After you create the MIG, add VMs with specific names to it .

  • ZONE : the zone where to create the zonal MIG. If you use a regional instance template to create the MIG, then you must specify a zone within the same region as the template.

  • REGION : the region where to create the regional MIG. If you use a regional instance template to create the MIG, then you must specify the same region as the template's region.

REST

To create a MIG, make a POST request to one of the following methods:

  • To create a zonal MIG, make a POST request to the instanceGroupManagers.insert method :

     POST https://compute.googleapis.com/compute/v1/projects/ PROJECT_ID 
    /zones/ ZONE 
    /instanceGroupManagers
    
    {
      "name": " INSTANCE_GROUP_NAME 
    ",
      "versions": [
        {
          "instanceTemplate": " INSTANCE_TEMPLATE_URL 
    "
        }
      ],
      "targetSize": SIZE 
    } 
    
  • To create a regional MIG, make a POST request to the regionInstanceGroupManagers.insert method :

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

Replace the following:

  • PROJECT_ID : the ID of the project in which to create the regional or zonal MIG.

  • ZONE : the zone where to create the zonal MIG. If you use a regional instance template to create the MIG, then you must specify a zone within the same region as the template.

  • REGION : the region where to create the regional MIG. If you use a regional instance template to create the MIG, then you must specify the same region as the template's region.

  • INSTANCE_GROUP_NAME : the name of the MIG.

  • INSTANCE_TEMPLATE_URL : the URL of the instance template that you created in the previous section. The URL can contain either the ID or the name of the instance template. Specify one of the following values:

    • For a regional instance template: projects/ PROJECT_ID / regions/REGION /instanceTemplates/ INSTANCE_TEMPLATE_ID

    • For a global instance template: INSTANCE_TEMPLATE_ID

  • SIZE : the number of Spot VMs to create in the MIG. If your workload requires specific VM names, then specify 0 to skip the creation of VMs at this stage. After you create the MIG, add VMs with specific names to it .

After you create the MIG, you can view the MIG's details to review its properties.

What's next

Design a Mobile Site
View Site in Mobile | Classic
Share by: