En este documento se explica cómo evitar que las instancias de Compute Engine consuman reservas. Para obtener más información sobre las reservas, consulta Reservas de recursos de zona de Compute Engine.
Las reservas consumidas automáticamente permiten que las instancias con propiedades que coincidan con las reservas las consuman automáticamente. Para evitar que las instancias consuman una reserva, haz lo siguiente:
Configura las instancias para que no consuman reservas, tal como se describe en este documento.
Crea o actualiza instancias con propiedades que no coincidan con la reserva.
Puedes evitar consumir reservas cuando quieras usar tus instancias para tareas como pruebas, depuración o implementaciones aisladas.
Limitaciones
Solo puedes actualizar una instancia para que no consuma reservas si está configurada para consumir automáticamente las reservas coincidentes.
Antes de empezar
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
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
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
Go
Para usar las Go muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Set up authentication for a local development environment.
Java
Para usar las Java muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Set up authentication for a local development environment.
Node.js
Para usar las Node.js muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Set up authentication for a local development environment.
Python
Para usar las Python muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Set up authentication for a local development environment.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Roles obligatorios
Para obtener los permisos que necesitas para evitar que una instancia de cálculo consuma reservas, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de instancias de Compute (v. 1) (
roles/compute.instanceAdmin.v1
) en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.Este rol predefinido contiene los permisos necesarios para evitar que una instancia de computación consuma reservas. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Se necesitan los siguientes permisos para evitar que una instancia de proceso consuma reservas:
-
Para crear reservas, sigue estos pasos:
compute.reservations.create
en el proyecto -
Para crear instancias, sigue estos pasos:
compute.instances.create
en el proyecto- Para usar una imagen personalizada para crear la VM, haz clic en
compute.images.useReadOnly
en la imagen. - Para usar una captura para crear la VM,
compute.snapshots.useReadOnly
en la captura - Para usar una plantilla de instancia para crear la VM, haz clic en
compute.instanceTemplates.useReadOnly
en la plantilla de instancia. - Para asignar una red antigua a la VM, haz lo siguiente:
compute.networks.use
en el proyecto - Para especificar una dirección IP estática para la máquina virtual,
compute.addresses.use
en el proyecto - Para asignar una dirección IP externa a la VM cuando se usa una red antigua, haz lo siguiente:
compute.networks.useExternalIp
en el proyecto - Para especificar una subred para la VM,
compute.subnetworks.use
en el proyecto o en la subred elegida. - Para asignar una dirección IP externa a la VM cuando se usa una red de VPC,
compute.subnetworks.useExternalIp
en el proyecto o en la subred elegida. - Para definir los metadatos de la instancia de VM de la VM:
compute.instances.setMetadata
en el proyecto, - Para definir etiquetas en la máquina virtual,
compute.instances.setTags
en la máquina virtual - Para definir etiquetas de la VM,
compute.instances.setLabels
en la VM - Para definir una cuenta de servicio que use la VM, haz lo siguiente en la VM:
compute.instances.setServiceAccount
- Para crear un disco para la VM
compute.disks.create
del proyecto, sigue estos pasos: - Para adjuntar un disco en modo de solo lectura o de lectura y escritura, haz lo siguiente:
compute.disks.use
en el disco - Para adjuntar un disco en modo de solo lectura,
compute.disks.useReadOnly
en el disco.
-
Para crear plantillas de instancia, sigue estos pasos:
compute.instanceTemplates.create
en el proyecto
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Evitar el consumo de reservas
Para evitar que una instancia de proceso consuma reservas, asigna a su propiedad de afinidad de reserva (
reservationAffinity
) el valor "no consumir reservas". Esta propiedad controla si una instancia puede consumir reservas coincidentes, una reserva específica o ninguna reserva.Para evitar que una o varias instancias consuman reservas, utilice uno de los siguientes métodos:
Evitar el consumo en una instancia
Puedes actualizar una instancia en ejecución para que deje de consumir reservas automáticamente. Debes reiniciar la instancia para que los cambios se apliquen, tal como se describe en esta sección.
Para evitar que una instancia utilice reservas, selecciona una de las siguientes opciones:
gcloud
Crea un archivo YAML vacío.
Para exportar las propiedades de una instancia al archivo YAML que acabas de crear, usa el comando
gcloud compute instances export
:gcloud compute instances export INSTANCE_NAME \ --destination=YAML_FILE \ --zone=ZONE
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia.YAML_FILE
: la ruta al archivo YAML vacío que has creado en el paso anterior.ZONE
: la zona en la que se encuentra la instancia.
En el archivo de configuración YAML, asigna el valor
consumeReservationType
aNO_RESERVATION
:reservationAffinity: consumeReservationType: NO_RESERVATION
Para actualizar la instancia y reiniciarla, usa el comando
gcloud compute instances update-from-file
con la marca--most-disruptive-allowed-action
definida comoRESTART
:gcloud compute instances update-from-file INSTANCE_NAME \ --most-disruptive-allowed-action=RESTART \ --source=YAML_FILE \ --zone=ZONE
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia.YAML_FILE
: la ruta al archivo YAML con los datos de configuración que has modificado en el paso anterior.ZONE
: la zona en la que se encuentra la instancia.
REST
Para ver las propiedades de una instancia, envía una solicitud
GET
al métodoinstances.get
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto en el que has creado la instancia.ZONE
: la zona en la que se encuentra la instancia.INSTANCE_NAME
: el nombre de la instancia.
Almacena el resultado de la solicitud
GET
en un archivo o en un editor de texto. Modifica la salida copiada para cambiar el campoconsumeReservationType
aNO_RESERVATION
:{ ... "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, ... }
Para actualizar la instancia y reiniciarla, haz una solicitud
PUT
al métodoinstances.update
. En la solicitud, haz lo siguiente:En la URL de la solicitud, incluya el parámetro de consulta
mostDisruptiveAllowedAction
con el valorRESTART
.En el cuerpo de la solicitud, usa el resultado de la solicitud
GET
que has editado en un paso anterior.
La solicitud es similar al siguiente ejemplo:
PUT https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central-1/instances/instance-01?mostDisruptiveAllowedAction=RESTART { ... "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, ... }
Para obtener más información sobre cómo actualizar una instancia, consulta Actualizar las propiedades de una instancia.
Evitar el consumo al crear una instancia
Para crear una instancia de proceso que no pueda consumir reservas, selecciona una de las siguientes opciones:
Consola
En la Google Cloud consola, ve a la página Crear una instancia.
En el campo Name (Nombre), introduce un nombre para la instancia.
En las listas Región y Zona, selecciona la región y la zona en las que quieras crear la instancia.
Especifica el tipo de máquina que quieres usar en la instancia.
En el menú de navegación, haz clic en Opciones avanzadas.
En la sección Reservas, selecciona No usar una reserva.
Haz clic en Crear.
gcloud
Para crear una instancia que no pueda consumir reservas, usa el comando
gcloud compute instances create
con la marca--reservation-affinity
definida comonone
:gcloud compute instances create INSTANCE_NAME \ --machine-type=MACHINE_TYPE \ --reservation-affinity=none \ --zone=ZONE
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia.MACHINE_TYPE
: el tipo de máquina que se va a usar en la instancia.ZONE
: la zona en la que se creará la instancia.
Go
Para crear una instancia que no pueda consumir reservas, usa el siguiente código de ejemplo:
Java
Para crear una instancia que no pueda consumir reservas, usa el siguiente código de ejemplo:
Node.js
Para crear una instancia que no pueda consumir reservas, usa el siguiente código de ejemplo:
Python
Para crear una instancia que no pueda consumir reservas, usa el siguiente código de ejemplo:
REST
Para crear una instancia que no pueda consumir reservas, haz una solicitud
POST
al métodoinstances.insert
. En el cuerpo de la solicitud, incluye el campoconsumeReservationType
con el valorNO_RESERVATION
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" } }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto en el que quieres crear la instancia.ZONE
: la zona en la que se creará la instancia.INSTANCE_NAME
: el nombre de la instancia.MACHINE_TYPE
: el tipo de máquina que se va a usar en la instancia.IMAGE_PROJECT
: el proyecto de imagen que contiene la imagen del SO. Por ejemplo,debian-cloud
. Para obtener más información sobre los proyectos de imágenes admitidos, consulta Imágenes públicas.IMAGE
: especifica una de las siguientes opciones:Una versión específica de la imagen del SO. Por ejemplo,
debian-12-bookworm-v20240617
.Una familia de imágenes, que debe tener el formato
family/IMAGE_FAMILY
. Especifica la imagen del SO más reciente que no está obsoleta. Por ejemplo, si especificasfamily/debian-12
, se usará la versión más reciente de la familia de imágenes de Debian 12. Para obtener más información sobre cómo usar familias de imágenes, consulte las prácticas recomendadas para familias de imágenes.
Para obtener más información sobre cómo crear una instancia, consulta Crear e iniciar una instancia de Compute Engine.
Evitar el consumo al crear instancias en bloque
Para crear instancias de computación en bloque que no puedan consumir reservas, selecciona una de las siguientes opciones:
gcloud
Para crear instancias en bloque que no puedan consumir reservas, usa el comando
gcloud compute instances bulk create
con la marca--reservation-affinity
definida comonone
.Por ejemplo, para crear instancias en bloque en una sola zona y especificar un patrón de nombre, ejecuta el siguiente comando:
gcloud compute instances bulk create \ --count=COUNT \ --machine-type=MACHINE_TYPE \ --name-pattern="NAME_PATTERN" \ --reservation-affinity=none \ --zone=ZONE
Haz los cambios siguientes:
COUNT
: número de instancias que se van a crear.MACHINE_TYPE
: el tipo de máquina que se va a usar en las instancias.NAME_PATTERN
: el patrón de nombre de las instancias. Para sustituir una secuencia de números en un nombre de instancia, usa una secuencia de caracteres de almohadilla (#
). Por ejemplo, si se usainstance-#
como patrón de nombre, se generarán instancias con nombres que empiecen porinstance-1
,instance-2
y así sucesivamente hasta el número de instancias especificado porCOUNT
.ZONE
: la zona en la que se crearán las instancias en bloque.
REST
Para crear instancias en bloque que no puedan consumir reservas, haz una solicitud al método
POST
instances.bulkInsert
. En el cuerpo de la solicitud, incluye el campoconsumeReservationType
con el valorNO_RESERVATION
.Por ejemplo, para crear instancias de forma masiva en una sola zona y especificar un patrón de nombre, haz una solicitud como la siguiente:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { "count": COUNT, "namePattern": "NAME_PATTERN", "instanceProperties": { "machineType": "MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" } } }
Haz los cambios siguientes:
PROJECT_ID
: ID del proyecto en el que se crearán las instancias en bloque.ZONE
: la zona en la que se crearán las instancias en bloque.COUNT
: número de instancias que se van a crear.NAME_PATTERN
: el patrón de nombre de las instancias. Para sustituir una secuencia de números en un nombre de instancia, usa una secuencia de caracteres de almohadilla (#
). Por ejemplo, si se usainstance-#
como patrón de nombre, se generarán instancias con nombres que empiecen porinstance-1
,instance-2
y así sucesivamente hasta el número de instancias especificado porCOUNT
.MACHINE_TYPE
: el tipo de máquina que se va a usar en las instancias.IMAGE_PROJECT
: el proyecto de imagen que contiene la imagen del SO. Por ejemplo,debian-cloud
. Para obtener más información sobre los proyectos de imágenes admitidos, consulta Imágenes públicas.IMAGE
: especifica una de las siguientes opciones:Una versión específica de la imagen del SO. Por ejemplo,
debian-12-bookworm-v20240617
.Una familia de imágenes, que debe tener el formato
family/IMAGE_FAMILY
. Especifica la imagen del SO más reciente que no está obsoleta. Por ejemplo, si especificasfamily/debian-12
, se usará la versión más reciente de la familia de imágenes de Debian 12. Para obtener más información sobre cómo usar familias de imágenes, consulte las prácticas recomendadas para familias de imágenes.
Para obtener más información sobre cómo crear instancias en bloque, consulta Crear VMs en bloque.
Evitar el consumo al crear una plantilla de instancia
Después de crear una plantilla de instancia que configure las instancias para que no consuman reservas, puede usar la plantilla para hacer lo siguiente:
Evita que las instancias de cálculo de un grupo de instancias gestionado (MIG) consuman reservas cuando hagas lo siguiente:
Para crear una plantilla de instancia que configure las instancias para que no consuman reservas, selecciona una de las siguientes opciones:
Consola
En la Google Cloud consola, ve a la página Crear una plantilla de instancia.
En el campo Nombre, introduce un nombre para la plantilla de instancia.
En la sección Ubicación, especifique si quiere crear una plantilla de instancia regional (opción predeterminada) o global.
En la sección Configuración de la máquina, especifica el tipo de máquina que se va a usar en las instancias creadas con la plantilla.
Despliega la sección Opciones avanzadas y sigue estos pasos:
Despliega la sección Gestión.
En la sección Reservas, selecciona No usar una reserva.
Haz clic en Crear.
gcloud
Para crear una plantilla de instancia que configure las instancias para que no consuman reservas, usa el comando
gcloud compute instances-templates create
con la marca--reservation-affinity
definida comonone
.Para crear una plantilla de instancia regional que configure las instancias para que no consuman reservas, ejecuta el siguiente comando. Si quieres crear una plantilla de instancia global, usa el mismo comando sin la marca
--instance-template-region
.gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --instance-template-region=REGION \ --machine-type=MACHINE_TYPE \ --reservation-affinity=none
Haz los cambios siguientes:
INSTANCE_TEMPLATE_NAME
: el nombre de la plantilla de instancia.REGION
: la región en la que se creará la plantilla de instancia.MACHINE_TYPE
: el tipo de máquina que se usará en las instancias creadas con la plantilla de instancia.
Go
Para crear una plantilla de instancia que configure las instancias para que no consuman reservas, usa el siguiente código de ejemplo:
Java
Para crear una plantilla de instancia que configure las instancias para que no consuman reservas, usa el siguiente código de ejemplo:
Node.js
Para crear una plantilla de instancia que configure las instancias para que no consuman reservas, usa el siguiente código de ejemplo:
Python
Para crear una plantilla de instancia que configure las instancias para que no consuman reservas, usa el siguiente código de ejemplo:
REST
Para crear una plantilla de instancia que configure las instancias para que no consuman reservas, haz una solicitud
POST
a uno de los siguientes métodos:Para crear una plantilla de instancia global, usa el método
instanceTemplates.insert
.Para crear una plantilla de instancia regional, usa el método
regionInstanceTemplates.insert
.
En el cuerpo de la solicitud, incluye el campo
consumeReservationType
y asigna el valorNO_RESERVATION
.Por ejemplo, para crear una plantilla de instancia regional y especificar que no se utilicen reservas, haz una solicitud como la siguiente:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/InstanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "machineType": "MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" } } }
Haz los cambios siguientes:
PROJECT_ID
: ID del proyecto en el que se va a crear la plantilla de instancia.INSTANCE_TEMPLATE_NAME
: el nombre de la plantilla de instancia.MACHINE_TYPE
: el tipo de máquina que se usará en las instancias creadas con la plantilla de instancia.IMAGE_PROJECT
: el proyecto de imagen que contiene la imagen del SO. Por ejemplo,debian-cloud
. Para obtener más información sobre los proyectos de imágenes admitidos, consulta Imágenes públicas.IMAGE
: especifica una de las siguientes opciones:Una versión específica de la imagen del SO. Por ejemplo,
debian-12-bookworm-v20240617
.Una familia de imágenes, que debe tener el formato
family/IMAGE_FAMILY
. Especifica la imagen del SO más reciente que no está obsoleta. Por ejemplo, si especificasfamily/debian-12
, se usará la versión más reciente de la familia de imágenes de Debian 12. Para obtener más información sobre cómo usar familias de imágenes, consulte las prácticas recomendadas para familias de imágenes.
Para obtener más información sobre cómo crear plantillas de instancia, consulta el artículo Crear plantillas de instancia.
Siguientes pasos
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-10 (UTC).
-