Crea instancias optimizadas para HPC de forma masiva con H4D

En este documento, se explica cómo crear de forma masiva una gran cantidad de instancias de máquina virtual (VM) de alto rendimiento (HPC) que sean idénticas e independientes entre sí. Las instancias usan tipos de máquinas H4D y se ejecutan en bloques de capacidad reservados.

Para obtener más información sobre cómo crear VMs de forma masiva, consulta Acerca de la creación masiva de VMs. Para crear instancias de forma masiva que no usen reservas para mejorar las capacidades de administración de clústeres, consulta Crea VMs de forma masiva.

Para obtener información sobre otras formas de crear clústeres grandes de VMs H4D estrechamente vinculadas, consulta la página Descripción general de la creación de clústeres de HPC.

Antes de comenzar

  • Elige una opción de consumo: Para crear instancias de procesamiento de forma masiva y habilitar capacidades mejoradas de administración de clústeres, puedes elegir una reserva futura en modo de calendario o VMs puntuales.

    Si eliges usar VMs Spot, es posible que las VMs no se coloquen de forma compacta. Además, las VMs Spot se pueden interrumpir según sea necesario y no son aptas para administrar eventos de mantenimiento del host para grupos de VMs.

  • Obtén capacidad: El proceso para obtener capacidad difiere para cada opción de consumo.

    Para obtener más información, consulta Elige una opción de consumo y obtén capacidad.

  • Si aún no lo hiciste, configura la autenticación. La autenticación verifica tu identidad para acceder a los servicios y las APIs de Google Cloud . 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:

    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. Instala Google Cloud CLI. Después de instalarla, inicializa Google Cloud CLI ejecutando el siguiente comando:

      gcloud init

      Si usas un proveedor de identidad (IdP) externo, primero debes Acceder a gcloud CLI con tu identidad federada.

    2. Set a default region and zone.

    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 proporciones a gcloud CLI.

      Instala Google Cloud CLI. Después de instalarla, inicializa Google Cloud CLI ejecutando el siguiente comando:

      gcloud init

      Si usas un proveedor de identidad (IdP) externo, primero debes Acceder a gcloud CLI con tu identidad federada.

    Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Google Cloud .

Roles obligatorios

Para obtener los permisos que necesitas para crear VMs de forma masiva, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para crear VMs de forma masiva. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para crear VMs de forma masiva:

  • compute.instances.create en el proyecto
  • Si deseas usar una imagen personalizada para crear la VM, sigue estos pasos: compute.images.useReadOnly en la imagen
  • Para usar una instantánea a fin de crear la VM, haz lo siguiente: compute.snapshots.useReadOnly en la instantánea
  • Si quieres usar una plantilla de instancias para crear la VM, sigue estos pasos: compute.instanceTemplates.useReadOnly en la plantilla de instancias
  • A fin de especificar una subred para tu VM: compute.subnetworks.use en el proyecto o en la subred elegida
  • Si deseas 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 de VPC, compute.subnetworks.useExternalIp en el proyecto o en la subred elegida.
  • Para asignar una red heredada a la VM, ejecuta compute.networks.use en el proyecto.
  • Para asignar una dirección IP externa a la VM cuando se usa una red heredada, ejecuta compute.networks.useExternalIp en el proyecto
  • Para configurar los metadatos de la instancia de VM para la VM, compute.instances.setMetadata en el proyecto.
  • Para configurar etiquetas en la VM, haz lo siguiente: compute.instances.setTags en la VM
  • Para configurar etiquetas en la VM, haz lo siguiente: compute.instances.setLabels en la VM
  • A fin de configurar una cuenta de servicio para que la VM use: compute.instances.setServiceAccount en la VM
  • Crear un disco nuevo para la VM: compute.disks.create en el proyecto
  • Para conectar un disco existente en modo de solo lectura o de lectura y escritura, usa compute.disks.use en el disco.
  • Para conectar un disco existente en modo de solo lectura, haz lo siguiente: compute.disks.useReadOnly en el disco

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Descripción general

La creación masiva de instancias de HPC con el tipo de máquina H4D incluye los siguientes pasos:

  1. Opcional: Crea redes de nube privada virtual.
  2. Opcional: Crea una política de posición si no crearás las instancias de procesamiento en el mismo bloque o subbloque.
  3. Crea instancias de H4D de forma masiva.

Opcional: Crea redes de nube privada virtual

Cuando creas una instancia de procesamiento, puedes especificar una red y una subred de VPC. Si omites esta configuración, se usarán la red y la subred predeterminadas.

  • Si deseas configurar las instancias H4D en el MIG para que usen Cloud RDMA, completa los pasos que se indican en esta sección.
  • Si no quieres usar Cloud RDMA, puedes omitir esta sección y usar la red predeterminada.

Para usar Cloud RDMA con instancias H4D, debes tener configuradas al menos dos redes, una para cada tipo de interfaz de red (NIC):

  • Tipo de NIC GVNIC: Usa el controlador gve para el tráfico de TCP/IP y de Internet en la comunicación normal entre VM y entre VM e Internet.
  • Tipo de NIC IRDMA: Usa controladores IDPF/iRDMA para redes RDMA de Cloud entre instancias.

Las instancias que usan Cloud RDMA solo pueden tener una interfaz IRDMA. Puedes agregar hasta ocho interfaces de red GVNIC adicionales para un total de 10 vNIC por instancia.

Para configurar las redes de VPC de Falcon y usarlas con tus instancias, puedes seguir las instrucciones documentadas o usar la secuencia de comandos proporcionada.

Guías de instrucciones

Para crear las redes, puedes usar las siguientes instrucciones:

Secuencia de comandos

Puedes crear hasta nueve interfaces de red gVNIC y una interfaz de red IRDMA por instancia. Cada interfaz de red debe adjuntarse a una red independiente. Para crear las redes, puedes usar la siguiente secuencia de comandos, que crea dos redes para gVNIC y una para IRDMA.

  1. Opcional: Antes de ejecutar la secuencia de comandos, enumera los perfiles de red de VPC de Falcon para verificar que haya uno disponible.
      gcloud compute network-profiles list
      
  2. Copia el siguiente código y ejecútalo en una ventana de shell de Linux.

      #!/bin/bash
      # Set the number of GVNIC interfaces to create. You can create up to 9.
      NUM_GVNIC=NUMBER_OF_GVNIC
    
      # Create regular VPC networks and subnets for the GVNIC interfaces
        for N in $(seq 0 $(($NUM_GVNIC - 1))); do
          gcloud compute networks create GVNIC_NAME_PREFIX-net-$N \
              --subnet-mode=custom
    
          gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \
              --network=GVNIC_NAME_PREFIX-net-$N \
              --region=REGION \
              --range=10.$N.0.0/16
    
          gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-$N \
              --network=GVNIC_NAME_PREFIX-net-$N \
              --action=ALLOW \
              --rules=tcp:0-65535,udp:0-65535,icmp \
              --source-ranges=10.0.0.0/8
      done
    
      # Create SSH firewall rules
      gcloud compute firewall-rules create GVNIC_NAME_PREFIX-ssh \
          --network=GVNIC_NAME_PREFIX-net-0 \
          --action=ALLOW \
          --rules=tcp:22 \
          --source-ranges=IP_RANGE
    
      # Optional: Create a firewall rule for the external IP address for the
      #  first GVNIC network interface
      gcloud compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \
          --network=GVNIC_NAME_PREFIX-net-0 \
          --action=ALLOW \
          --rules=icmp \
          --source-ranges=IP_RANGE
    
      # Create a Falcon VPC network for the Cloud RDMA network interface
      gcloud compute networks create RDMA_NAME_PREFIX-irdma \
          --network-profile=ZONE-vpc-falcon \
          --subnet-mode custom
    
      # Create a subnet in the Falcon VPC network
      gcloud compute networks subnets create RDMA_NAME_PREFIX-irdma-sub \
          --network=RDMA_NAME_PREFIX-irdma \
          --region=REGION \
          --range=10.2.0.0/16  # offset to avoid overlap with GVNIC subnet ranges
      

    Reemplaza lo siguiente:

    • NUMBER_OF_GVNIC: Es la cantidad de interfaces de gVNIC que se crearán. Especifica un número del 1 al 9.
    • GVNIC_NAME_PREFIX: Es el prefijo del nombre que se usará para la subred y la red de VPC normales que usan un tipo de NIC de GVNIC.
    • REGION: Es la región en la que deseas crear las redes. Debe corresponder a la zona especificada para la marca --network-profile cuando se crea la red de VPC de Falcon. Por ejemplo, si especificas la zona como europe-west4-b, tu región será europe-west4.
    • IP_RANGE: Es el rango de direcciones IP fuera de la red de VPC que se usará para las reglas de firewall de SSH. Como práctica recomendada, especifica los rangos de direcciones IP específicos desde los que necesitas permitir el acceso, en lugar de todas las fuentes IPv4 o IPv6. No uses 0.0.0.0/0 ni ::/0 como rango de origen, ya que esto permite el tráfico desde todas las fuentes IPv4 o IPv6, incluidas las fuentes fuera de Google Cloud.
    • RDMA_NAME_PREFIX: Es el prefijo del nombre que se usará para la red de VPC y la subred que usa el tipo de NIC de IRDMA.
    • ZONE: La zona en la que deseas crear las redes y las instancias de procesamiento. Usa us-central1-a o europe-west4-b.
  3. Opcional: Para verificar que los recursos de la red de VPC se hayan creado correctamente, consulta la configuración de red en la consola de Google Cloud :

    1. En la consola de Google Cloud , ve a la página Redes de VPC.

      Ir a las redes de VPC

    2. Busca en la lista las redes que creaste en el paso anterior.
    3. Para ver las subredes, las reglas de firewall y otros parámetros de configuración de la red, haz clic en el nombre de la red.

Opcional: Crea una política de posición

Puedes especificar la posición de la VM creando una política de posición compacta. Cuando aplicas una política de posición compacta a tus VMs, Compute Engine hace todo lo posible para crear VMs que estén lo más cerca posible entre sí. Si tu aplicación es sensible a la latencia y deseas que las VMs estén más cerca entre sí (máxima compactación), especifica el campo maxDistance (versión preliminar) cuando crees una política de posición de compactación. Un valor de maxDistance más bajo garantiza una colocación más cercana de las VM, pero también aumenta la probabilidad de que no se creen algunas VMs.

Para crear una política de posición compacta, selecciona una de las siguientes opciones:

gcloud

Para crear una política de posición de compactación, usa el comando gcloud beta compute resource-policies create group-placement:

gcloud beta compute resource-policies create group-placement POLICY_NAME \
    --collocation=collocated \
    --max-distance=MAX_DISTANCE \
    --region=REGION

Reemplaza lo siguiente:

  • POLICY_NAME: el nombre de la política de posición compacta.
  • MAX_DISTANCE: Es la configuración de distancia máxima para tus VMs. El valor debe ser 3 para colocar VMs en los bloques adyacentes o 2 para colocarlas en el mismo bloque. Para obtener información sobre la cantidad máxima de VMs admitidas para cada maxDistance por serie de máquinas, consulta Acerca de las políticas de posición de compactación en la documentación de Compute Engine.
  • REGION: la región en la que deseas crear la política de posición compacta. Especifica una región en la que esté disponible el tipo de máquina que deseas usar. Para obtener información sobre las regiones, consulta Regiones y zonas disponibles.

REST

Para crear una política de posición compacta, realiza una solicitud POST al método resourcePolicies.insert de la versión beta. En el cuerpo de la solicitud, incluye el campo collocation configurado como COLLOCATED y el campo maxDistance.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies
  {
    "name": "POLICY_NAME",
    "groupPlacementPolicy": {
      "collocation": "COLLOCATED",
      "maxDistance": MAX_DISTANCE
    }
  }

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto.
  • POLICY_NAME: el nombre de la política de posición compacta.
  • MAX_DISTANCE: la configuración de distancia máxima para tus VMs. El valor debe ser 3 para colocar VMs en los bloques adyacentes o 2 para colocarlas en el mismo bloque. Para obtener información sobre la cantidad máxima de VMs admitidas para cada maxDistance por serie de máquinas, consulta Acerca de las políticas de posición de compactación en la documentación de Compute Engine.
  • REGION: la región en la que deseas crear la política de posición compacta. Especifica una región en la que esté disponible el tipo de máquina que deseas usar. Para obtener información sobre las regiones, consulta Regiones y zonas disponibles.

Crea instancias de VM de forma masiva

En las instrucciones de esta sección, se describe cómo crear VMs de H4D de forma masiva.

Revisa las siguientes limitaciones antes de crear instancias de H4D con RDMA de Cloud:

  • No puedes usar la migración en vivo durante los eventos de mantenimiento del host con instancias que tengan una interfaz de red de Cloud RDMA. Debes configurar la instancia para que finalice durante los eventos de mantenimiento.
  • La interfaz de red gVNIC solo puede tener una dirección IPv6, ya sea interna o externa, pero no ambas.
  • Solo puedes usar direcciones IPv4 con interfaces de red IRDMA y redes de VPC de Falcon.

gcloud

Para crear VMs de forma masiva, usa el comando gcloud compute instances create.

Los parámetros que debes especificar dependen de la opción de consumo que uses para esta implementación. Selecciona la pestaña que corresponda al modelo de aprovisionamiento de tu opción de consumo.

Con reserva

Comienza con el siguiente comandogcloud compute instances create.

   gcloud compute instances bulk create \
       --name-pattern=NAME_PATTERN \
       --count=COUNT \
       --machine-type=MACHINE_TYPE \
       --image-family=IMAGE_FAMILY \
       --image=project= IMAGE_PROJECT \
       --instance-termination=action=DELETE \
       --maintenance-policy=TERMINATE \
       --region=REGION \
       --boot-disk-type=hyperdisk-balanced \
       --boot-disk-size=DISK_SIZE
   

Completa los siguientes pasos:

  1. Reemplaza lo siguiente:

    • NAME_PATTERN: Es el patrón de nombres para las instancias. Por ejemplo, si usas vm-# para el patrón de nombres, se generan instancias con nombres como vm-1 y vm-2, hasta la cantidad especificada por la marca --count.
    • COUNT: Es la cantidad de instancias que se crearán.
    • MACHINE_TYPE: Es el tipo de máquina que se usará para las instancias. Usa uno de los tipos de máquinas H4D, por ejemplo, h4d-highmem-192-lssd.
    • IMAGE_FAMILY: Es la familia de imágenes de la imagen de SO que deseas usar, por ejemplo, rocky-linux-9-optimized-gcp.

      Para obtener una lista de las imágenes del SO compatibles, consulta Sistemas operativos compatibles. Elige una versión de imagen de SO que admita la interfaz IRDMA.

    • IMAGE_PROJECT: Es el ID del proyecto de la imagen de SO, por ejemplo, rocky-linux-cloud.
    • REGION: Especifica una región en la que esté disponible el tipo de máquina que deseas usar, por ejemplo, europe-west4. Para obtener información sobre las regiones disponibles, consulta Regiones y zonas disponibles.
    • DISK_SIZE: Es el tamaño del disco de arranque en GiB (opcional). El valor debe ser un número entero.
  2. Opcional: Si elegiste usar una política de posición compacta, incluye la marca --resource-policies:

             --resource-policies=POLICY_NAME
             

    Reemplaza POLICY_NAME por el nombre de la política de posición compacta.

  3. Para especificar la reserva, realiza una de las siguientes acciones:

    • Si usas una política de posición o si las VMs se pueden colocar en cualquier lugar de tu bloque de reserva, agrega las siguientes marcas al comando:

                 --provisioning-model=RESERVATION_BOUND \
                 --reservation-affinity=specific \
                 --reservation=RESERVATION_NAME \
                 

      Reemplaza RESERVATION_NAME por el nombre de la reserva, por ejemplo, h4d-highmem-exfr-prod.

    • Si no usas una política de posición compacta y deseas que las instancias se coloquen en un bloque específico, agrega las siguientes marcas al comando:

                 --provisioning-model=RESERVATION_BOUND \
                 --reservation-affinity=specific \
                 --reservation=<RESERVATION_BLOCK_NAME \
                 

      Reemplaza RESERVATION_BLOCK_NAME por el nombre de un bloque en la reserva, por ejemplo, h4d-highmem-exfr-prod/reservationBlocks/h4d-highmem-exfr-prod-block-1.

    Para ver el nombre de la reserva o los bloques de reserva disponibles, consulta Ver capacidad.

  4. Opcional: Para configurar las instancias para que usen Cloud RDMA, agrega marcas similares a las siguientes al comando. En este ejemplo, se configuran dos interfaces de red de gVNIC y una interfaz de red de IRDMA:

            --network-interface=nic-type=GVNIC, \
                network=GVNIC_NAME_PREFIX-net-0, \
                subnet=GVNIC_NAME_PREFIX-sub-0, \
                stack-type=STACK_TYPE, \
                address=EXTERNAL_IPV4_ADDRESS \
            --network-interface=nic-type=GVNIC, \
                network=GVNIC_NAME_PREFIX-net-1, \
                subnet=GVNIC_NAME_PREFIX-sub-1, no-address \
            --network-interface=nic-type=IRDMA, \
                network=RDMA_NAME_PREFIX-irdma, \
                subnet=RDMA_NAME_PREFIX-irdma-sub, \
                stack-type=IPV4_ONLY, no-address \
            

    Reemplaza lo siguiente:

    • GVNIC_NAME_PREFIX: Es el prefijo de nombre que usaste cuando creaste la red de VPC y la subred para la interfaz de GVNIC.

      En el caso de la primera interfaz de red gVNIC, puedes omitir las marcas network y subnet para usar la red default.

    • STACK_TYPE: Es el tipo de pila (opcional) de la interfaz de red de gVNIC. STACK_TYPE debe ser uno de los siguientes: IPV4_ONLY o IPV4_IPV6. El valor predeterminado es IPV4_ONLY.
    • EXTERNAL_IPV4_ADDRESS: Opcional: Es una dirección IPv4 externa estática para usar con la interfaz de red. Debes haber reservado una dirección IPv4 externa con anterioridad. Realiza una de las siguientes acciones:
      • Especifica una dirección IPv4 válida de la subred.
      • Usa la marca no-address si no quieres que la interfaz de red tenga una dirección IP externa.
      • Especifica address='' si deseas que la interfaz reciba una dirección IP externa efímera.

      Para especificar una dirección IPv6 externa, usa la marca --external-ipv6-address.

    • RDMA_NAME_PREFIX: Es el prefijo de nombre que usaste cuando creaste la red de VPC y la subred para la interfaz de IRDMA.
  5. Opcional: Agrega marcas adicionales para personalizar el resto de las propiedades de la instancia, según sea necesario.
  6. Ejecute el comando.

Spot

Comienza con el siguiente comandogcloud compute instances create.

   gcloud compute instances bulk create \
       --name-pattern=NAME_PATTERN \
       --count=COUNT \
       --machine-type=MACHINE_TYPE \
       --image-family=IMAGE_FAMILY \
       --image=project= IMAGE_PROJECT \
       --region=REGION \
       --boot-disk-type=hyperdisk-balanced \
       --boot-disk-size=DISK_SIZE \
       --provisioning-model=SPOT \
       --instance-termination=action=TERMINATION_ACTION
   

Completa los siguientes pasos:

  1. Reemplaza lo siguiente:

    • NAME_PATTERN: Es el patrón de nombres para las instancias. Por ejemplo, si usas vm-# para el patrón de nombres, se generan instancias con nombres como vm-1 y vm-2, hasta la cantidad especificada por la marca --count.
    • COUNT: Es la cantidad de instancias que se crearán.
    • MACHINE_TYPE: Es el tipo de máquina que se usará para las instancias. Usa uno de los tipos de máquinas H4D, por ejemplo, h4d-highmem-192-lssd.
    • IMAGE_FAMILY: Es la familia de imágenes de la imagen de SO que deseas usar, por ejemplo, rocky-linux-9-optimized-gcp.

      Para obtener una lista de las imágenes del SO compatibles, consulta Sistemas operativos compatibles. Elige una versión de imagen de SO que admita la interfaz IRDMA.

    • IMAGE_PROJECT: Es el ID del proyecto de la imagen de SO, por ejemplo, rocky-linux-cloud.
    • REGION: Especifica una región en la que esté disponible el tipo de máquina que deseas usar, por ejemplo, europe-west4. Para obtener información sobre las regiones disponibles, consulta Regiones y zonas disponibles.
    • DISK_SIZE: Es el tamaño del disco de arranque en GiB (opcional). El valor debe ser un número entero.
    • TERMINATION_ACTION: Es la acción que se debe realizar cuando Compute Engine interrumpe la instancia, ya sea STOP (predeterminada) o DELETE.

  2. Opcional: Si elegiste usar una política de posición compacta, agrega la siguiente marca al comando:

          --resource-policies=POLICY_NAME \
          

    Reemplaza POLICY_NAME por el nombre de la política de posición compacta.

  3. Opcional: Para configurar las instancias para que usen Cloud RDMA, agrega marcas similares a las siguientes al comando. En este ejemplo, se configuran dos interfaces de red de gVNIC y una interfaz de red de IRDMA:

          --network-interface=nic-type=GVNIC, \
              network=GVNIC_NAME_PREFIX-net-0, \
              subnet=GVNIC_NAME_PREFIX-sub-0, \
              stack-type=STACK_TYPE, \
              address=EXTERNAL_IPV4_ADDRESS \
          --network-interface=nic-type=GVNIC, \
              network=GVNIC_NAME_PREFIX-net-1, \
              subnet=GVNIC_NAME_PREFIX-sub-1, no-address \
          --network-interface=nic-type=IRDMA, \
              network=RDMA_NAME_PREFIX-irdma, \
              subnet=RDMA_NAME_PREFIX-irdma-sub, \
              stack-type=IPV4_ONLY, no-address \
          

    Reemplaza lo siguiente:

    • GVNIC_NAME_PREFIX: Es el prefijo de nombre que usaste cuando creaste la red de VPC y la subred para la interfaz de GVNIC.

      En el caso de la primera interfaz de red gVNIC, puedes omitir las marcas network y subnet para usar la red default.

    • STACK_TYPE: Es el tipo de pila (opcional) de la interfaz de red de gVNIC. STACK_TYPE debe ser uno de los siguientes: IPV4_ONLY o IPV4_IPV6. El valor predeterminado es IPV4_ONLY.
    • EXTERNAL_IPV4_ADDRESS: Opcional: Es una dirección IPv4 externa estática para usar con la interfaz de red. Debes haber reservado una dirección IPv4 externa con anterioridad. Realiza una de las siguientes acciones:
      • Especifica una dirección IPv4 válida de la subred.
      • Usa la marca no-address si no quieres que la interfaz de red tenga una dirección IP externa.
      • Especifica address='' si deseas que la interfaz reciba una dirección IP externa efímera.

      Para especificar una dirección IPv6 externa, usa la marca --external-ipv6-address.

    • RDMA_NAME_PREFIX: Es el prefijo de nombre que usaste cuando creaste la red de VPC y la subred para la interfaz de IRDMA.
  4. Opcional: Agrega marcas adicionales para personalizar el resto de las propiedades de la instancia, según sea necesario.
  5. Ejecute el comando.

REST

Para crear instancias de VM de forma masiva, realiza una solicitud POST al método instances.bulkInsert.

Los parámetros que debes especificar dependen de la opción de consumo que uses para esta implementación. Selecciona la pestaña que corresponda al modelo de aprovisionamiento de tu opción de consumo.

Con reserva

Comienza con la siguiente solicitud POST al método instances.bulkInsert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert
    {
      "namePattern":"NAME_PATTERN",
      "count":"COUNT",
      "instanceProperties":{
        "machineType":"MACHINE_TYPE",
        "disks":[
          {
            "boot":true,
            "initializeParams":{
              "diskSizeGb":"DISK_SIZE",
              "diskType":"hyperdisk-balanced",
              "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
            },
            "mode":"READ_WRITE",
            "type":"PERSISTENT"
          }
        ],
        "scheduling":{
            "provisioningModel":"RESERVATION_BOUND",
            "instanceTerminationAction":"DELETE",
            "onHostMaintenance": "TERMINATE",
            "automaticRestart":true
        }
      }
    }
    

Completa los siguientes pasos:

  1. Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto en el que deseas crear las instancias.
    • ZONE: Especifica una zona en la que esté disponible el tipo de máquina que deseas usar. Si usas una política de posición de compactación, usa una zona en la misma región que la política de posición de compactación. Para obtener información sobre las regiones en las que están disponibles los tipos de máquinas H4D, consulta Regiones y zonas disponibles.
    • NAME_PATTERN: Es el patrón de nombres para las instancias. Por ejemplo, si usas vm-# para el patrón de nombre, se generan instancias con nombres como vm-1 y vm-2, hasta la cantidad especificada por el campo count.
    • COUNT: Es la cantidad de instancias que se crearán.
    • MACHINE_TYPE: Es el tipo de máquina que se usará para las instancias. Usa uno de los tipos de máquinas H4D, por ejemplo, h4d-highmem-192-lssd.
    • DISK_SIZE: Es el tamaño del disco de arranque en GiB.
    • IMAGE_PROJECT: Es el ID del proyecto de la imagen del SO, por ejemplo, debian-cloud.
    • IMAGE_FAMILY: Es la familia de imágenes de la imagen de SO que deseas usar, por ejemplo, rocky-linux-9-optimized-gcp. Para obtener una lista de las imágenes del SO compatibles, consulta Sistemas operativos compatibles. Elige una versión de imagen de SO que admita la interfaz IRDMA.
  2. Opcional: Si elegiste usar una política de posición compacta, incluye el parámetro resourcePolicies en el cuerpo de la solicitud como parte del parámetro "instanceProperties".

              "resourcePolicies": [
                "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
              ],
              

    Reemplaza POLICY_NAME por el nombre de la política de posición compacta.

  3. Para especificar la reserva, realiza una de las siguientes acciones:

    • Si usas una política de posición o si las VMs se pueden colocar en cualquier lugar de tu bloque de reserva, agrega lo siguiente al cuerpo de la solicitud como parte del parámetro "instanceProperties":

                 "reservationAffinity":{
                   "consumeReservationType":"SPECIFIC_RESERVATION",
                   "key":"compute.googleapis.com/reservation-name",
                   "values":[
                     "RESERVATION_NAME"
                   ],
                 },
                 

      Reemplaza RESERVATION_NAME por el nombre de la reserva, por ejemplo, h4d-highmem-exfr-prod.

    • Si no usas una política de posición compacta o deseas que las instancias se coloquen en un bloque específico, agrega lo siguiente al cuerpo de la solicitud como parte del parámetro "instanceProperties":

                  "reservationAffinity":{
                    "consumeReservationType":"SPECIFIC_RESERVATION",
                    "key":"compute.googleapis.com/reservation-name",
                    "values":[
                      "RESERVATION_BLOCK_NAME"
                    ],
                  },
                 

      Reemplaza RESERVATION_BLOCK_NAME por el nombre de un bloque en la reserva, por ejemplo, h4d-highmem-exfr-prod/reservationBlocks/h4d-highmem-exfr-prod-block-1.

    Para ver el nombre de la reserva o los bloques de reserva disponibles, consulta Ver capacidad.

  4. Si deseas configurar las instancias para que usen Cloud RDMA, incluye un bloque de parámetros similar al siguiente en el cuerpo de la solicitud como parte del parámetro "instanceProperties". En este ejemplo, se configuran dos interfaces de red de gVNIC y una interfaz de red de IRDMA:

              "networkInterfaces": [
              {
                "network": "GVNIC_NAME_PREFIX-net-0",
                "subnetwork": "GVNIC_NAME_PREFIX-sub-0",
                "accessConfigs": [
                   {
                      "type": "ONE_TO_ONE_NAT",
                      "name": "External IP",
                      "natIP": "EXTERNAL_IPV4_ADDRESS"
                   }
                ],
                "stackType": "IPV4_ONLY",
                "nicType": "GVNIC",
              },
              {
                "network": "GVNIC_NAME_PREFIX-net-1",
                "subnetwork": "GVNIC_NAME_PREFIX-sub-1",
                "stackType": "IPV4_ONLY",
                "nicType": "GVNIC",
              },
              {
                "network": "RDMA_NAME_PREFIX-irdma",
                "subnetwork": "RDMA_NAME_PREFIX-irdma-sub",
                "stackType": "IPV4_ONLY",
                "nicType": "IRDMA",
              }
            ],
             

    Reemplaza lo siguiente:

    • GVNIC_NAME_PREFIX: Es el prefijo de nombre que usaste cuando creaste la red de VPC y la subred para la interfaz de GVNIC.

      En el caso de la interfaz de red gVNIC, puedes omitir los campos network y subnetwork para usar la red default.

    • EXTERNAL_IPV4_ADDRESS: Opcional: Es una dirección IPv4 externa estática para usar con la interfaz de red. Debes haber reservado una dirección IPv4 externa con anterioridad.
    • RDMA_NAME_PREFIX: Es el prefijo de nombre que usaste cuando creaste la red de VPC y la subred para la interfaz de IRDMA.
  5. Opcional: Personaliza el resto de las propiedades de la instancia según sea necesario.
  6. Envía la solicitud.

Spot

Comienza con la siguiente solicitud POST al método instances.bulkInsert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert
    {
      "namePattern":"NAME_PATTERN",
      "count":"COUNT",
      "instanceProperties":{
        "machineType":"MACHINE_TYPE",
        "disks":[
          {
            "boot":true,
            "initializeParams":{
              "diskSizeGb":"DISK_SIZE",
              "diskType":"hyperdisk-balanced",
              "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
            },
            "mode":"READ_WRITE",
            "type":"PERSISTENT"
          }
        ],
        "scheduling":{
            "provisioningModel":"SPOT",
            "instanceTerminationAction":"TERMINATION_ACTION"
        }
      }
    }
    

Completa los siguientes pasos:

  1. Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto en el que deseas crear las instancias.
    • ZONE: Especifica una zona en la que esté disponible el tipo de máquina que deseas usar. Si usas una política de posición de compactación, usa una zona en la misma región que la política de posición de compactación. Para obtener información sobre las regiones en las que están disponibles los tipos de máquinas H4D, consulta Regiones y zonas disponibles.
    • NAME_PATTERN: Es el patrón de nombres para las instancias. Por ejemplo, si usas vm-# para el patrón de nombre, se generan instancias con nombres como vm-1 y vm-2, hasta la cantidad especificada por el campo count.
    • COUNT: Es la cantidad de instancias que se crearán.
    • MACHINE_TYPE: Es el tipo de máquina que se usará para las instancias. Usa uno de los tipos de máquinas H4D, por ejemplo, h4d-highmem-192-lssd.
    • DISK_SIZE: Es el tamaño del disco de arranque en GiB.
    • IMAGE_PROJECT: Es el ID del proyecto de la imagen del SO, por ejemplo, debian-cloud.
    • IMAGE_FAMILY: Es la familia de imágenes de la imagen del SO que deseas usar, por ejemplo, rocky-linux-9-optimized-gcp. Para obtener una lista de las imágenes del SO compatibles, consulta Sistemas operativos compatibles. Elige una versión de imagen de SO que admita la interfaz IRDMA.
    • TERMINATION_ACTION: Es la acción que se debe realizar cuando Compute Engine interrumpe la instancia, ya sea STOP (predeterminada) o DELETE.

  2. Opcional: Si elegiste usar una política de posición compacta, incluye el parámetro resourcePolicies como parte del parámetro "instanceProperties".

              "resourcePolicies": [
                "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
              ]
              
  3. Si deseas configurar las instancias para que usen Cloud RDMA, incluye un bloque de parámetros similar al siguiente en el cuerpo de la solicitud como parte del parámetro "instanceProperties". En este ejemplo, se configuran dos interfaces de red de gVNIC y una interfaz de red de IRDMA:

              "networkInterfaces": [
              {
                "network": "GVNIC_NAME_PREFIX-net-0",
                "subnetwork": "GVNIC_NAME_PREFIX-sub-0",
                "accessConfigs": [
                   {
                      "type": "ONE_TO_ONE_NAT",
                      "name": "External IP",
                      "natIP": "EXTERNAL_IPV4_ADDRESS"
                   }
                ],
                "stackType": "IPV4_ONLY",
                "nicType": "GVNIC",
              },
              {
                "network": "GVNIC_NAME_PREFIX-net-1",
                "subnetwork": "GVNIC_NAME_PREFIX-sub-1",
                "stackType": "IPV4_ONLY",
                "nicType": "GVNIC",
              },
              {
                "network": "RDMA_NAME_PREFIX-irdma",
                "subnetwork": "RDMA_NAME_PREFIX-irdma-sub",
                "stackType": "IPV4_ONLY",
                "nicType": "IRDMA",
              }
            ],
             

    Reemplaza lo siguiente:

    • GVNIC_NAME_PREFIX: Es el prefijo de nombre que usaste cuando creaste la red de VPC y la subred para la interfaz de GVNIC.

      En el caso de la interfaz de red gVNIC, puedes omitir los campos network y subnetwork para usar la red default.

    • EXTERNAL_IPV4_ADDRESS: Opcional: Es una dirección IPv4 externa estática para usar con la interfaz de red. Debes haber reservado una dirección IPv4 externa con anterioridad.
    • RDMA_NAME_PREFIX: Es el prefijo de nombre que usaste cuando creaste la red de VPC y la subred para la interfaz de IRDMA.
  4. Opcional: Personaliza el resto de las propiedades de la instancia según sea necesario.
  5. Envía la solicitud.

¿Qué sigue?