Cuando desee crear una gran cantidad de instancias de máquinas virtuales (VM) que sean idénticas e independientes entre sí, cree VM de forma masiva utilizando la CLI de Google Cloud o la API de Compute Engine. Puede crear estas máquinas virtuales en todas las zonas de una región o distribuirlas en determinadas zonas.
Para obtener más detalles y limitaciones asociadas, consulte Acerca de la creación masiva de máquinas virtuales . Si desea crear instancias con GPU conectadas, consulte Crear máquinas virtuales con GPU de forma masiva .
Antes de comenzar
- Para las máquinas virtuales y cualquier recurso relacionado que planee crear, asegúrese de tener suficiente cuota y los permisos necesarios .
- Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras 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:
gcloud
-
After installing the Google Cloud CLI, initialize it 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.
- Set a default region and zone.
-
compute.instances.create
en el proyecto. - Para usar una imagen personalizada para crear la VM:
compute.images.useReadOnly
en la imagen - Para usar una instantánea para crear la VM:
compute.snapshots.useReadOnly
en la instantánea - Para usar una plantilla de instancia para crear la VM:
compute.instanceTemplates.useReadOnly
en la plantilla de instancia - Para asignar una red heredada a la VM:
compute.networks.use
en el proyecto - Para especificar una dirección IP estática para la VM:
compute.addresses.use
en el proyecto - Para asignar una dirección IP externa a la VM cuando se usa una red heredada:
compute.networks.useExternalIp
en el proyecto - Para especificar una subred para su 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 VPC:
compute.subnetworks.useExternalIp
en el proyecto o en la subred elegida - Para configurar metadatos de instancia de VM para la VM:
compute.instances.setMetadata
en el proyecto - Para configurar etiquetas para la VM:
compute.instances.setTags
en la VM - Para configurar etiquetas para la VM:
compute.instances.setLabels
en la VM - Para configurar una cuenta de servicio para que la use la VM:
compute.instances.setServiceAccount
en la VM - Para crear un nuevo disco para la VM:
compute.disks.create
en el proyecto - Para conectar un disco existente en modo de solo lectura o lectura-escritura:
compute.disks.use
en el disco - Para conectar un disco existente en modo de solo lectura:
compute.disks.useReadOnly
en el disco NAME_PATTERN : el patrón de nombre para las máquinas virtuales. Usa una secuencia de caracteres hash (
#
) para que Compute Engine la reemplace con una secuencia de números. Por ejemplo, el uso devm-#
para el patrón de nombre genera máquinas virtuales con nombres comovm-1
yvm-2
, hasta la cantidad de máquinas virtuales especificada por--count
, que debe ser menor o igual a la cantidad de máquinas virtuales que permite el patrón de nombres.Cuando se utiliza un patrón de nombre, Compute Engine intenta evitar conflictos de nombres verificando los nombres de las VM existentes creadas a partir de solicitudes anteriores.
PREDEFINED_NAMES : una lista de nombres predefinidos para que las VM creen. Si utiliza esta marca y especifica
COUNT
,COUNT
debe ser igual al número de nombres proporcionados.REGION : la región en la que se crearán las máquinas virtuales.
COUNT : el número de máquinas virtuales que se van a crear. Debe ser menor o igual que la cantidad de máquinas virtuales permitidas por
NAME_PATTERN
. O, si usa--predefined-names
, no tiene que especificarCOUNT
, pero si lo hace, debe ser igual a la cantidad de nombres proporcionados.MIN_COUNT : la cantidad mínima de máquinas virtuales para crear. La siguiente tabla describe el comportamiento de la solicitud dependiendo de cómo establezca este indicador:
Valor Descripción No establecido El valor predeterminado es COUNT
. Si Compute Engine no puede crear la cantidad de VM especificada porCOUNT
, la solicitud falla y no se crea ninguna VM.1
Compute Engine crea tantas máquinas virtuales como sea posible, hasta COUNT
.Mayor que 1
y menor queCOUNT
Compute Engine crea al menos MIN_COUNT
VM hasta un máximo deCOUNT
VM. Si no se pueden crearMIN_COUNT
máquinas virtuales, la solicitud falla y no se crea ninguna máquina virtual.LOCATION_POLICY : las zonas a incluir o excluir dentro de una región. Utilice una lista de pares clave-valor, con la zona como clave y la política como valor. Los valores válidos para la política son
allow
, que es el valor predeterminado, ydeny
. El siguiente es un valor de ejemplo para esta bandera:--location-policy=us-east1-b=allow,us-east1-c=deny
TARGET_DISTRIBUTION_SHAPE : la distribución de las máquinas virtuales en las zonas especificadas. Utilice el indicador
--location-policy
para especificar las zonas. La siguiente tabla muestra los valores válidos para esta bandera:Valor Descripción ANY_SINGLE_ZONE
Impone la ubicación de VM en una sola zona y prioriza la utilización de reservas no utilizadas. Utilícelo para evitar la salida de la red entre zonas o para reducir la latencia de la red. Este es el valor predeterminado. BALANCED
Intenta distribuir las máquinas virtuales de manera uniforme en todas las zonas de la región. ANY
Permite la distribución de máquinas virtuales en varias zonas de una región. Elige zonas que tienen recursos disponibles y que maximizan las reservas zonales no utilizadas. PROJECT_ID : el ID del proyecto.
REGION : la región en la que se crearán las máquinas virtuales.
NAME_PATTERN : el patrón de nombre para las máquinas virtuales. Especifique esto o
perInstanceProperties
. Usa una secuencia de caracteres hash (#
) para que Compute Engine los reemplace con una secuencia de números. Por ejemplo, el uso devm-#
para el patrón de nombre genera máquinas virtuales con nombres comovm-1
yvm-2
, hasta la cantidad de máquinas virtuales especificada por--count
, que debe ser menor o igual a la cantidad de máquinas virtuales que permite el patrón de nombres.Cuando se utiliza un patrón de nombres, Compute Engine intenta evitar conflictos de nombres verificando los nombres de las VM existentes creadas a partir de solicitudes anteriores.
PREDEFINED_NAME_1 , PREDEFINED_NAME_2 , ...: una lista de nombres predefinidos para que las máquinas virtuales se creen. Especifique esto o
namePattern
. Si usa esta marca y especificaCOUNT
,COUNT
debe ser igual al número de nombres proporcionados.COUNT : el número de máquinas virtuales que se van a crear. Debe ser menor o igual que la cantidad de máquinas virtuales permitidas por
NAME_PATTERN
. O, si usaperInstanceProperties
, no tiene que especificarCOUNT
, pero si lo hace, debe ser igual a la cantidad de nombres proporcionados.MIN_COUNT : la cantidad mínima de máquinas virtuales para crear. La siguiente tabla describe el comportamiento de la solicitud dependiendo de cómo establezca este indicador:
Valor Descripción No establecido El valor predeterminado es COUNT
. Si Compute Engine no puede crear la cantidad de VM especificada porCOUNT
, la solicitud falla y no se crea ninguna VM.1
Compute Engine crea tantas máquinas virtuales como sea posible, hasta COUNT
.Mayor que 1
y menor queCOUNT
Compute Engine crea al menos MIN_COUNT
VM hasta un máximo deCOUNT
VM. Si no se pueden crearMIN_COUNT
máquinas virtuales, la solicitud falla y no se crea ninguna máquina virtual.LOCATION_POLICY : las zonas a incluir o excluir dentro de una región. Utilice una lista de pares clave-valor, con la zona como clave y la política como valor. Los valores válidos para la política son
ALLOW
, que es el valor predeterminado, yDENY
. El siguiente es un valor de ejemplo para este campo:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_DISTRIBUTION_SHAPE : la distribución de máquinas virtuales en las zonas especificadas. Utilice el campo
locationPolicy
para especificar las zonas. La siguiente tabla muestra los valores válidos para este campo:Valor Descripción ANY_SINGLE_ZONE
Impone la ubicación de VM en una sola zona y prioriza la utilización de reservas no utilizadas. Utilícelo para evitar la salida de la red entre zonas o para reducir la latencia de la red. Este es el valor predeterminado. BALANCED
Intenta distribuir las máquinas virtuales de manera uniforme en todas las zonas de la región. ANY
Permite la distribución de máquinas virtuales en varias zonas de una región. Elige zonas que tienen recursos disponibles y que maximizan las reservas zonales no utilizadas. NAME_PATTERN : el patrón de nombre para las máquinas virtuales. Usa una secuencia de caracteres hash (
#
) para que Compute Engine la reemplace con una secuencia de números. Por ejemplo, el uso devm-#
para el patrón de nombre genera máquinas virtuales con nombres comovm-1
yvm-2
, hasta la cantidad de máquinas virtuales especificada por--count
, que debe ser menor o igual a la cantidad de máquinas virtuales que permite el patrón de nombres.Cuando se utiliza un patrón de nombre, Compute Engine intenta evitar conflictos de nombres verificando los nombres de las VM existentes creadas a partir de solicitudes anteriores.
PREDEFINED_NAMES : una lista de nombres predefinidos para que las VM creen. Si utiliza esta marca y especifica
COUNT
,COUNT
debe ser igual al número de nombres proporcionados.ZONE : la zona en la que se crearán las máquinas virtuales.
COUNT : el número de máquinas virtuales que se van a crear. Debe ser menor o igual que la cantidad de máquinas virtuales permitidas por
NAME_PATTERN
. O, si usa--predefined-names
, no tiene que especificarCOUNT
, pero si lo hace, debe ser igual a la cantidad de nombres proporcionados.MIN_COUNT : la cantidad mínima de máquinas virtuales para crear. La siguiente tabla describe el comportamiento de la solicitud dependiendo de cómo establezca este indicador:
Valor Descripción No establecido El valor predeterminado es COUNT
. Si Compute Engine no puede crear la cantidad de VM especificada porCOUNT
, la solicitud falla y no se crea ninguna VM.1
Compute Engine crea tantas máquinas virtuales como sea posible, hasta COUNT
.Mayor que 1
y menor queCOUNT
Compute Engine crea al menos MIN_COUNT
VM hasta un máximo deCOUNT
VM. Si no se pueden crearMIN_COUNT
máquinas virtuales, la solicitud falla y no se crea ninguna máquina virtual.PROJECT_ID : el ID del proyecto.
ZONE : la zona en la que se crearán las máquinas virtuales.
NAME_PATTERN : el patrón de nombre para las máquinas virtuales. Especifique esto o
perInstanceProperties
. Usa una secuencia de caracteres hash (#
) para que Compute Engine la reemplace con una secuencia de números. Por ejemplo, el uso devm-#
para el patrón de nombre genera máquinas virtuales con nombres comovm-1
yvm-2
, hasta la cantidad de máquinas virtuales especificada por--count
, que debe ser menor o igual a la cantidad de máquinas virtuales que permite el patrón de nombres.Cuando se utiliza un patrón de nombre, Compute Engine intenta evitar conflictos de nombres verificando los nombres de las VM existentes creadas a partir de solicitudes anteriores.
PREDEFINED_NAME_1 , PREDEFINED_NAME_2 , ...: una lista de nombres predefinidos para que las máquinas virtuales se creen. Especifique esto o
namePattern
. Si utiliza esta marca y especificaCOUNT
,COUNT
debe ser igual al número de nombres proporcionados.COUNT : el número de máquinas virtuales que se van a crear. Debe ser menor o igual que la cantidad de máquinas virtuales permitidas por
NAME_PATTERN
. O, si usaperInstanceProperties
, no tiene que especificarCOUNT
, pero si lo hace, debe ser igual a la cantidad de nombres proporcionados.MIN_COUNT : la cantidad mínima de máquinas virtuales para crear. La siguiente tabla describe el comportamiento de la solicitud dependiendo de cómo establezca este indicador:
Valor Descripción No establecido El valor predeterminado es COUNT
. Si Compute Engine no puede crear la cantidad de VM especificada porCOUNT
, la solicitud falla y no se crea ninguna VM.1
Compute Engine crea tantas máquinas virtuales como sea posible, hasta COUNT
.Mayor que 1
y menor queCOUNT
Compute Engine crea al menos MIN_COUNT
VM hasta un máximo deCOUNT
VM. Si no se pueden crearMIN_COUNT
máquinas virtuales, la solicitud falla y no se crea ninguna máquina virtual.-
VM_NAME .c. PROJECT_ID .internal
cuando habilita DNS global -
VM_NAME . ZONE .c. PROJECT_ID .internal
cuando habilita DNS zonal NAME_PATTERN : el patrón de nombre para las máquinas virtuales. Usa una secuencia de caracteres hash (
#
) para que Compute Engine la reemplace con una secuencia de números. Por ejemplo, el uso devm-#
para el patrón de nombre genera máquinas virtuales con nombres comovm-1
yvm-2
, hasta la cantidad de máquinas virtuales especificada por--count
, que debe ser menor o igual a la cantidad de máquinas virtuales que permite el patrón de nombres.Cuando se utiliza un patrón de nombre, Compute Engine intenta evitar conflictos de nombres verificando los nombres de las VM existentes creadas a partir de solicitudes anteriores.
PREDEFINED_NAMES : una lista de nombres predefinidos para que las VM creen. Si utiliza esta marca y especifica
COUNT
,COUNT
debe ser igual al número de nombres proporcionados.[ VM_NAME = HOSTNAME , ...]: una lista de pares clave-valor de nombres predefinidos para las VM y nombres de host de dominio completo que desea asignar a las VM. Los nombres de host personalizados deben cumplir con los requisitos RFC 1035 para nombres de host válidos.
REGION : la zona para crear las máquinas virtuales.
COUNT : el número de máquinas virtuales que se van a crear. Debe ser menor o igual que la cantidad de máquinas virtuales permitidas por
NAME_PATTERN
. O, si usa--predefined-names
, no tiene que especificarCOUNT
, pero si lo hace, debe ser igual a la cantidad de nombres proporcionados.MIN_COUNT : la cantidad mínima de máquinas virtuales para crear. La siguiente tabla describe el comportamiento de la solicitud dependiendo de cómo establezca este indicador:
Valor Descripción No establecido El valor predeterminado es COUNT
. Si Compute Engine no puede crear la cantidad de VM especificada porCOUNT
, la solicitud falla y no se crea ninguna VM.1
Compute Engine crea tantas máquinas virtuales como sea posible, hasta COUNT
.Mayor que 1
y menor queCOUNT
Compute Engine crea al menos MIN_COUNT
VM hasta un máximo deCOUNT
VM. Si no se pueden crearMIN_COUNT
máquinas virtuales, la solicitud falla y no se crea ninguna máquina virtual.LOCATION_POLICY : las zonas a incluir o excluir dentro de una región. Utilice una lista de pares clave-valor, con la zona como clave y la política como valor. Los valores válidos para la política son
ALLOW
, que es el valor predeterminado, yDENY
. El siguiente es un valor de ejemplo para este campo:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_DISTRIBUTION_SHAPE : la distribución de máquinas virtuales en las zonas especificadas. Utilice el campo
locationPolicy
para especificar las zonas. La siguiente tabla muestra los valores válidos para este campo:Valor Descripción ANY_SINGLE_ZONE
Impone la ubicación de VM en una sola zona y prioriza la utilización de reservas no utilizadas. Utilícelo para evitar la salida de la red entre zonas o para reducir la latencia de la red. Este es el valor predeterminado. BALANCED
Intenta distribuir las máquinas virtuales de manera uniforme en todas las zonas de la región. ANY
Permite la distribución de máquinas virtuales en varias zonas de una región. Elige zonas que tienen recursos disponibles y que maximizan las reservas zonales no utilizadas. PROJECT_ID : el ID del proyecto.
REGION : la región en la que se crearán las máquinas virtuales.
NAME_PATTERN : el patrón de nombre para las máquinas virtuales. Especifique esto o
perInstanceProperties
. Usa una secuencia de caracteres hash (#
) para que Compute Engine la reemplace con una secuencia de números. Por ejemplo, el uso devm-#
para el patrón de nombre genera máquinas virtuales con nombres comovm-1
yvm-2
, hasta la cantidad de máquinas virtuales especificada por--count
, que debe ser menor o igual a la cantidad de máquinas virtuales que permite el patrón de nombres.Cuando se utiliza un patrón de nombre, Compute Engine intenta evitar conflictos de nombres verificando los nombres de las VM existentes creadas a partir de solicitudes anteriores.
PREDEFINED_NAME_1 , PREDEFINED_NAME_2 , ...: una lista de nombres predefinidos para que las máquinas virtuales se creen. Especifique esto o
namePattern
. Si utiliza esta marca y especificaCOUNT
,COUNT
debe ser igual al número de nombres proporcionados.HOSTNAME_1 , HOSTNAME_2 , ...: nombres de host de dominio completos que desea asignar para las máquinas virtuales. Los nombres de host personalizados deben cumplir con los requisitos RFC 1035 para nombres de host válidos.
Por ejemplo, para crear dos máquinas virtuales
vm-1
yvm-2
con nombres de host personalizadosmy-host1234.example.com
ytest.example.com
respectivamente, especifique la propiedadhostname
enperInstanceProperties
de la siguiente manera:{ ... "perInstanceProperties": { "vm-1": { "hostname": "my-host1234.example.com" }, "vm-2": { "hostname": "test.example.com" }, ... },
COUNT : el número de máquinas virtuales que se van a crear. Debe ser menor o igual que la cantidad de máquinas virtuales permitidas por
NAME_PATTERN
. O, si usaperInstanceProperties
, no tiene que especificarCOUNT
, pero si lo hace, debe ser igual a la cantidad de nombres proporcionados.MIN_COUNT : la cantidad mínima de máquinas virtuales para crear. La siguiente tabla describe el comportamiento de la solicitud dependiendo de cómo establezca este indicador:
Valor Descripción No establecido El valor predeterminado es COUNT
. Si Compute Engine no puede crear la cantidad de VM especificada porCOUNT
, la solicitud falla y no se crea ninguna VM.1
Compute Engine crea tantas máquinas virtuales como sea posible, hasta COUNT
.Mayor que 1
y menor queCOUNT
Compute Engine crea al menos MIN_COUNT
VM hasta un máximo deCOUNT
VM. Si no se pueden crearMIN_COUNT
máquinas virtuales, la solicitud falla y no se crea ninguna máquina virtual.LOCATION_POLICY : las zonas a incluir o excluir dentro de una región. Utilice una lista de pares clave-valor, con la zona como clave y la política como valor. Los valores válidos para la política son
ALLOW
, que es el valor predeterminado, yDENY
. El siguiente es un valor de ejemplo para este campo:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_DISTRIBUTION_SHAPE : la distribución de máquinas virtuales en las zonas especificadas. Utilice el campo
locationPolicy
para especificar las zonas. La siguiente tabla muestra los valores válidos para este campo:Valor Descripción ANY_SINGLE_ZONE
Impone la ubicación de VM en una sola zona y prioriza la utilización de reservas no utilizadas. Utilícelo para evitar la salida de la red entre zonas o para reducir la latencia de la red. Este es el valor predeterminado. BALANCED
Intenta distribuir las máquinas virtuales de manera uniforme en todas las zonas de la región. ANY
Permite la distribución de máquinas virtuales en varias zonas de una región. Elige zonas que tienen recursos disponibles y que maximizan las reservas zonales no utilizadas. -
PROJECT_ID
: el ID del proyecto en el que estás creando VM -
REGION
: la región en la que está creando máquinas virtuales -
ZONE
: la zona en la que está creando máquinas virtuales -
OPERATION_ID
: ID de operación de inserción masiva -
status
: el estado es uno de los siguientes:-
CREATING
: La creación de VM está en progreso -
ROLLING_BACK
: la solicitud falló y se está revirtiendo -
DONE
: la creación o reversión de la máquina virtual se completó exitosamente
-
-
targetVmCount
: la cantidad de VM que se crearán en la zona especificada -
createdVmCount
: la cantidad de VM ya creadas en la zona especificada -
failedToCreateVmCount
: la cantidad de máquinas virtuales que no se pudieron crear en la zona especificada -
deletedVmCount
: la cantidad de máquinas virtuales que se eliminaron como parte de la reversión de una operación fallida De la
Operation
devuelta por la solicitud, obtenga el valor de la propiedadoperationGroupId
.Usa la propiedad
operationGroupId
como filtro con el comandogcloud compute operations list
para buscar en todas las operaciones y todas las zonas del proyecto máquinas virtuales asociadas con la solicitud regional o zonal:gcloud compute operations list \ --filter=(operationGroupId=OPERATION_GROUP_ID)
Obtenga el resto de las propiedades de la VM realizando cualquiera de las siguientes acciones:
De la lista de operaciones,
targetLink
representa la ruta de la VM. Usa el comandogcloud compute instances describe
con esta ruta como nombre de la VM para obtener las propiedades de la VM:gcloud compute instances describe VM_NAME
Usa el comando
gcloud compute instances list
con un filtro que incluya los nombres de las VM de la lista de operaciones:gcloud compute instances list VM_NAME \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Usa el comando
gcloud compute instances list
para obtener las propiedades de las VM de todas las zonas y regiones, y filtra por una etiqueta que sea exclusiva de las instancias o por sus nombres:gcloud compute instances list \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
De la
Operation
devuelta por la solicitud, obtenga el valor de la propiedadoperationGroupId
.Utilice la propiedad
operationGroupId
para obtener la lista de operaciones de VM asociadas con la solicitud regional o zonal:Si envió una solicitud regional, para buscar en todas las operaciones y todas las zonas del proyecto, utilice el método
globalOperations.aggregatedList
e incluya la propiedadoperationGroupId
como filtro:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID)
Si envió una solicitud zonal, para enumerar las operaciones en esa zona, use el método
zoneOperations.get
e incluya la propiedadoperationGroupId
en el cuerpo de la solicitud:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert { ... "operationGroupId":"OPERATION_GROUP_ID" ... }
Obtenga el resto de las propiedades de la VM realizando cualquiera de las siguientes acciones:
De la lista de operaciones,
targetLink
representa la ruta de la VM. Utilice el métodoinstances.get
con esta ruta como nombre de la VM para obtener todas las propiedades de la VM:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME
Utilice el método
instances.get
con un filtro que incluya los nombres de las VM de la lista de operaciones:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Utilice el método
instances.aggregatedList
para obtener las propiedades de las máquinas virtuales de todas las zonas y regiones, y filtre por una etiqueta que sea exclusiva de las instancias o por sus nombres:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Especifique la cantidad de máquinas virtuales que se crearán dentro de una zona.
nTarget = 1000
Designe las regiones en las que intentar crear las máquinas virtuales.
acceptableRegions = ["us-central1", "us-east1", "us-west1"]
Itere a través de las regiones e intente crear las máquinas virtuales en cada región hasta que tenga éxito.
for region in acceptableRegions: call bulk API: region=region, location-policy=location-policy, count=nTarget if request succeeds and the operation succeeds: break
Especifique la cantidad de máquinas virtuales que desea crear y la región en la que crearlas.
nTarget = 1000 region = "us-central1"
Especifique las familias de máquinas en las que intentar crear las máquinas virtuales.
acceptableMachineFamilies = ["n2","c2","e2","n1"]
Repita el conjunto de tipos de máquinas e intente crear las máquinas virtuales en el tipo de máquina hasta que tenga éxito.
for family in acceptableMachineFamilies: call bulk APIs: region=region, count=nTarget, machineFamily=family if request succeeds and the operation succeeds: break
Especifique la cantidad de VM que se crearán, un contador para realizar un seguimiento del número total de VM creadas, la región en la que se crearán las VM y una variable para almacenar la zona en la que Compute Engine crea las VM.
nTarget = 10000 nCreated = 0 region = "us-central1" targetZone = ""
Emita una solicitud inicial para crear 5000 VM, guarde la zona devuelta por la solicitud y actualice el contador de la cantidad de VM creadas.
call bulk API: region=region, count=5000 targetZone = zone chosen by bulk API nCreated += # of VMs created
Continúe emitiendo solicitudes para crear hasta 5000 VM a la vez en la zona hasta que Compute Engine cree la cantidad especificada de VM.
while(nTarget - nCreated > 0): call bulk API: zone=targetZone, count=5000 nCreated += # of VMs created
Especifique la cantidad de máquinas virtuales que desea crear, la zona en la que crearlas y una estructura de datos en la que almacenar los nombres.
nTarget = 1000 targetZone = "us-central-1a" names = []
Genere los nombres modelados para las máquinas virtuales y agregue los nombres a la estructura de datos.
for n in range(0, 1000): names.push("instance-%d".format(n))
Cree las máquinas virtuales y utilice
perInstanceProperties
para especificar los nombres.call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
Obtenga los detalles de las máquinas virtuales utilizando el método
instances.list
con un filtro para los nombres de las máquinas virtuales sobre las que devolver los detalles.instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
Agrega las VM a un grupo de instancias no administrado. Agregar máquinas virtuales a un grupo de instancias no administrado te permite usar Cloud Monitoring . Los grupos de instancias no administrados no proporcionan equilibrio de carga ni administración del ciclo de vida de la VM .
Utilice etiquetas. Las etiquetas le permiten organizar recursos utilizando pares clave-valor .
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
After installing the Google Cloud CLI, initialize it 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.
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
Roles requeridos
Para obtener los permisos que necesita para crear máquinas virtuales de forma masiva, solicite a su administrador que le otorgue la función de IAM Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulte Administrar el acceso a proyectos, carpetas y organizaciones .Esta función predefinida contiene los permisos necesarios para crear máquinas virtuales de forma masiva. Para ver los permisos exactos que se requieren, expanda la sección Permisos requeridos :
Permisos requeridos
Se requieren los siguientes permisos para crear máquinas virtuales de forma masiva:
Es posible que también pueda obtener estos permisos con roles personalizados u otros roles predefinidos .
Crear máquinas virtuales de forma masiva en una región
Para crear máquinas virtuales de forma masiva en una región, usa la CLI de gcloud o la API de Compute Engine.
Si especificas un tipo de máquina o compatibilidad con hardware adicional, como una GPU o un SSD local, Compute Engine coloca las VM en una zona dentro de la región que admite el tipo de máquina y el hardware adicional.
nube de gcloud
Para crear máquinas virtuales de forma masiva en una región, usa el siguiente comando
gcloud compute instances bulk create
:gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --region=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT \ ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_DISTRIBUTION_SHAPE ]
Reemplace lo siguiente:
DESCANSAR
Para crear máquinas virtuales de forma masiva en una región, utilice el siguiente método
instances.bulkInsert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_DISTRIBUTION_SHAPE" ... }
Reemplace lo siguiente:
Crear máquinas virtuales de forma masiva en una zona
Para crear máquinas virtuales de forma masiva en una zona, usa la CLI de gcloud o la API de Compute Engine.
nube de gcloud
Para crear máquinas virtuales de forma masiva en una zona específica, usa el siguiente comando
gcloud compute instances bulk create
.gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --zone=ZONE \ --count=COUNT \ [ --min-count=MIN_COUNT ]
Reemplace lo siguiente:
DESCANSAR
Para crear máquinas virtuales de forma masiva en una zona, utilice el siguiente método
instances.bulkInsert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, ... }
Reemplace lo siguiente:
Cree máquinas virtuales con nombres de host personalizados de forma masiva
Puedes crear máquinas virtuales con nombres de host personalizados de forma masiva en una región o en una zona mediante la CLI de gcloud o la API de Compute Engine.
Debe configurar manualmente el registro DNS para su nombre de host personalizado. Para obtener más información, consulte limitaciones .
Si no especificas un nombre de host, Compute Engine establece el nombre de host para las VM como uno de los siguientes:
Para obtener más información, consulte Nombres DNS internos .
nube de gcloud
Para crear máquinas virtuales de forma masiva con nombres de host personalizados en una región específica, usa el siguiente comando
gcloud beta compute instances bulk create
.gcloud beta compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --per-instance-hostnames=[VM_NAME=HOSTNAME,...] \ --zone=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_DISTRIBUTION_SHAPE ]
Reemplace lo siguiente:
DESCANSAR
Para crear máquinas virtuales con nombres de host personalizados de forma masiva en una región específica, utilice el siguiente método
instances.bulkInsert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {"hostname": HOSTNAME_1}, "PREDEFINED_NAME_2": {"hostname": HOSTNAME_2}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_DISTRIBUTION_SHAPE" ... }
Reemplace lo siguiente:
Verifique el estado de una solicitud para crear máquinas virtuales de forma masiva
Cuando creas una solicitud de mutación, Compute Engine devuelve un recurso
operation
que puedes sondear para obtener el estado de la operación. Para obtener más información, consulte Manejo de respuestas de API .Para obtener el estado de una solicitud de inserción masiva, envíe una solicitud HTTP
GET
al recursooperation
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID
Para obtener el estado de una solicitud de inserción masiva regional, envíe la siguiente solicitud:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID
Reemplace lo siguiente:
El objeto
instancesBulkInsertOperationMetadata
en la respuesta contiene los siguientes detalles de la operación:El campo
progress
en la respuesta representa el porcentaje de finalización de la operación.El estado de la operación de inserción masiva es
RUNNING
hasta que Compute Engine cree exitosamente al menos la cantidad mínima de VM y no se produzca más creación de VM ni reversión de la solicitud.Cuando la operación de inserción masiva está en curso, debería ver una respuesta similar a la siguiente:
{ "kind" : "compute#operation", "id": "4653028658507445766", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationType": "bulkInsert", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project" "targetId": 4653028658507445766, "status": "RUNNING", "progress": 2, "user": "example@google.com", "insertTime": "2023-04-23T09:57:13.474-07:00", "startTime": "2023-04-23T09:57:13.474-07:00", "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "metadata": "instances_bulk_insert_operation_metadata": { "per_location_status": { "zones/us-central1-a": { "status": "CREATING", "targetVmCount": 50, "createdVmCount": 1 } } } }
En este ejemplo, se creó una instancia con éxito y la operación se completó en un 2 %.
La operación devuelve el estado
DONE
cuando Compute Engine crea exitosamente al menos la cantidad mínima de VM especificada porminCount
o cuando Compute Engine completa la reversión de la solicitud. Después de la creación exitosa de la cantidad solicitada de máquinas virtuales, obtendrá una respuesta similar a la siguiente:{ "endTime": "2023-04-23T09:58:13.474-07:00", "id": "5053101474378293244", "insertTime": "2023-04-23T09:57:13.474-07:00", "instancesBulkInsertOperationMetadata": { "perLocationStatus": { "zones/us-central1-a": { "status": "DONE", "createdVmCount": 50, "targetVmCount": 50 } } }, "kind": "compute#operation", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "operationType": "bulkInsert", "progress": 100, "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "startTime": "2023-09-11T16:21:55.629-07:00", "status": "DONE", "targetId": "625521788110", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project", "user": "example@google.com", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a" }
Para obtener más información, consulte la documentación del objeto
instancesBulkInsertOperationMetadata
.Verificar el estado de una sola VM
Para verificar el estado de una única VM creada a partir de una solicitud para crear VM de forma masiva, use la CLI de gcloud o la API de Compute Engine.
nube de gcloud
DESCANSAR
Ejemplos de pseudocódigo
Los siguientes ejemplos de pseudocódigo muestran cómo personalizar solicitudes para crear máquinas virtuales de forma masiva.
Cree máquinas virtuales de forma masiva en una región a partir de un conjunto de regiones
El siguiente pseudocódigo describe cómo crear 1000 máquinas virtuales en una región a partir de un conjunto de regiones. Al intentar crear máquinas virtuales de forma masiva en una región a partir de un conjunto de regiones, la solicitud primero verifica la capacidad. Si no hay suficiente capacidad, la solicitud falla inmediatamente y vuelve a intentarlo con la siguiente región del conjunto.
Cree máquinas virtuales de forma masiva en una zona en un tipo de máquina
El siguiente pseudocódigo describe cómo crear varias máquinas virtuales en una zona en un tipo de máquina específico. Al intentar crear máquinas virtuales de forma masiva en el mismo tipo de máquina, la solicitud primero verifica la disponibilidad de esos tipos de máquinas. Si no hay suficiente tipo de máquina disponible, la solicitud falla inmediatamente y vuelve a intentarlo con el siguiente tipo de máquina.
Cree más de 5000 máquinas virtuales en una zona
Al crear máquinas virtuales de forma masiva, solo puede crear 5000 máquinas virtuales con cada solicitud . El siguiente pseudocódigo describe cómo crear más de 5000 máquinas virtuales en una zona mediante la emisión de múltiples solicitudes.
Cree máquinas virtuales de forma masiva y vea su estado
El siguiente procedimiento le muestra cómo crear un grupo de máquinas virtuales que tienen nombres predefinidos y luego ver su estado:
¿Qué sigue?
Después de crear máquinas virtuales de forma masiva, realice una de las siguientes acciones o ambas para simplificar la administración de dichas máquinas virtuales:
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-04-17 (UTC).
-