0
0
GCPcloud~5 mins

Preemptible and Spot VMs in GCP - Commands & Configuration

Choose your learning style9 modes available
Introduction
Sometimes cloud virtual machines (VMs) can be cheaper if they can be stopped by the cloud provider when needed. Preemptible and Spot VMs are special types of VMs that cost less but can be turned off unexpectedly. They help save money when you can handle interruptions.
When running batch jobs that can restart if interrupted.
When testing software that does not need to run all the time.
When you want to save money on VMs for short tasks.
When running workloads that can tolerate sudden VM shutdowns.
When you want to use spare cloud capacity at a lower cost.
Config File - instance-template.yaml
instance-template.yaml
apiVersion: compute.cnrm.cloud.google.com/v1beta1
kind: ComputeInstanceTemplate
metadata:
  name: example-preemptible-template
spec:
  machineType: e2-medium
  scheduling:
    preemptible: true
  disks:
  - boot: true
    initializeParams:
      sourceImage: projects/debian-cloud/global/images/family/debian-11
  networkInterfaces:
  - network: default

This file defines a VM template for Google Cloud that creates a preemptible VM.

machineType: The size of the VM.

scheduling.preemptible: Set to true to make the VM preemptible, meaning it can be stopped by Google Cloud at any time.

disks: Defines the boot disk and operating system image.

networkInterfaces: Connects the VM to the default network.

Commands
This command creates a VM template named 'example-preemptible-template' with a medium machine type and marks it as preemptible to save costs. It uses the latest Debian 11 image.
Terminal
gcloud compute instance-templates create example-preemptible-template --machine-type=e2-medium --preemptible --image-family=debian-11 --image-project=debian-cloud
Expected OutputExpected
Created [https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/example-preemptible-template].
--preemptible - Marks the VM as preemptible to allow Google Cloud to stop it anytime.
--machine-type - Specifies the size of the VM.
--image-family - Selects the OS image family for the VM.
This command creates a VM named 'example-preemptible-vm' in the us-central1-a zone using the preemptible template created earlier.
Terminal
gcloud compute instances create example-preemptible-vm --zone=us-central1-a --source-instance-template=example-preemptible-template
Expected OutputExpected
Created [https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/example-preemptible-vm].
--source-instance-template - Uses the VM template to create the instance.
--zone - Specifies the zone where the VM will run.
This command checks if the VM is preemptible by showing the scheduling property.
Terminal
gcloud compute instances describe example-preemptible-vm --zone=us-central1-a --format='value(scheduling.preemptible)'
Expected OutputExpected
true
--format - Formats the output to show only the preemptible status.
This command lists the VM to verify it is running and shows its status and zone.
Terminal
gcloud compute instances list --filter='name=example-preemptible-vm'
Expected OutputExpected
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS example-preemptible-vm us-central1-a e2-medium TRUE 10.128.0.5 34.68.123.45 RUNNING
--filter - Filters the list to show only the VM with the given name.
Key Concept

If you remember nothing else from this pattern, remember: Preemptible and Spot VMs save money by allowing the cloud to stop them anytime, so use them only for tasks that can handle interruptions.

Common Mistakes
Creating a preemptible VM for a critical database that must always run.
Preemptible VMs can stop at any time, causing data loss or downtime for critical services.
Use regular VMs for critical workloads and reserve preemptible VMs for batch or fault-tolerant jobs.
Not specifying the --preemptible flag when creating the VM.
The VM will be a regular VM and cost more, missing the cost-saving benefit.
Always include --preemptible when you want a preemptible VM.
Assuming preemptible VMs run indefinitely without interruption.
Google Cloud can stop preemptible VMs at any time, usually within 24 hours.
Design your applications to handle VM shutdowns and restart gracefully.
Summary
Create a VM template with the --preemptible flag to define a low-cost VM that can be stopped anytime.
Use the template to create VMs that save money but can be interrupted by the cloud provider.
Check the VM's preemptible status and running state with gcloud commands to confirm setup.