GCP - Compute - Cannot start VM, the zone does not have enough resources

  1. When you stop an instance it releases some resources like vCPU and memory.

  2. When you start an instance (or change it) it requests resources like vCPU and memory back and if there's not enough resources available in the zone you'll get an error message:

    Error: Starting VM instance "INSTANCE_NAME" failed. Error: The zone 'projects/XXXX/zones/ZONE' does not have enough resources available to fulfill the request. Try a different zone, or try again later.
    

more information available in the documentation:

If you receive a resource error (such as ZONE_RESOURCE_POOL_EXHAUSTED or ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS) when requesting new resources, it means that the zone cannot currently accommodate your request. This error is due to Compute Engine resource obtainability, and is not due to your Compute Engine quota.

  1. Resource availability are depending from users requests and therefore are dynamic.

There are a few ways to solve such issue without moving it to another zone:

  1. Wait for a while and try to start your VM instance again.
  2. Reserve resources for your VM by following documentation to avoid such issue in future (extra payment required):

Create reservations for Virtual Machine (VM) instances in a specific zone, using custom or predefined machine types, with or without additional GPUs or local SSDs, to ensure resources are available for your workloads when you need them. After you create a reservation, you begin paying for the reserved resources immediately, and they remain available for your project to use indefinitely, until the reservation is deleted.