Crea una instancia que use Cloud RDMA


En esta página, se explica cómo crear instancias de HPC con interfaces de red habilitadas para RDMA. Para obtener instrucciones para crear instancias optimizadas para aceleradores A4 o A3 Ultra que usen RDMA, consulta Crea una instancia optimizada para IA con A4 o A3 Ultra.

Para crear una instancia de procesamiento que use acceso directo a la memoria remoto (RDMA), debes configurar al menos dos interfaces de red (NIC) cuando crees la instancia. Una NIC debe ser una NIC de IRDMA que se adjunte a una red de VPC con un perfil de red de RDMA, y la otra NIC debe usar GVNIC.

Usa la tabla Comparación de series de máquinas para determinar qué series de máquinas admiten interfaces de red RDMA.

Antes de comenzar

  • 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 la instalación, inicializa Google Cloud CLI ejecutando el siguiente comando:

      gcloud init

      Si usas un proveedor de identidad externo (IdP), 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 la instalación, inicializa Google Cloud CLI ejecutando el siguiente comando:

      gcloud init

      Si usas un proveedor de identidad externo (IdP), 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 requeridos

Para obtener los permisos que necesitas para crear una instancia que admita la comunicación por RDMA, pídele a tu administrador que te otorgue el rol de IAM Administrador de instancias de Compute (v1) (roles/compute.instanceAdmin.v1) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear una instancia que admita la comunicación por RDMA. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para crear una instancia que admita la comunicación por RDMA:

  • 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 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.

Requisitos

Revisa las siguientes reglas para configurar una interfaz de red para una instancia:

  • Cada interfaz de red debe conectarse a una red de nube privada virtual diferente.
  • Para configurar una interfaz de red de IRDMA, primero debes crear una red de VPC con el perfil de red de RDMA de Falcon en la misma región y zona que la instancia.
  • Si no especificas una red o subred, Compute Engine usa la red de VPC predeterminada y la subred automática que se encuentra en la misma región que la instancia.
  • Si especificas una subred, pero no una red, Compute Engine infiere la red a partir de la subred especificada.
  • Si especificas una red, debes especificar una subred y esta debe pertenecer a la misma red. De lo contrario, la creación de la instancia fallará.

Limitaciones

  • Las redes de nivel 1 para la comunicación con IP interna solo son compatibles con las VMs que ejecutan el controlador de red virtual gVNIC.
  • No puedes usar la migración en vivo con VMs que usan RDMA. Debes configurar la instancia para que finalice durante los eventos de mantenimiento.
  • No puedes usar RDMA con grupos de instancias administrados (MIG) (administrados o no administrados).
  • Solo puedes usar tipos de pila de red IPv4_ONLY con una instancia habilitada para RDMA.
  • Solo puedes usar la serie de máquinas H4D para crear una instancia que use Cloud RDMA.

Crea una instancia habilitada para Cloud RDMA

Las instancias habilitadas para RDMA de Cloud requieren un mínimo de dos interfaces de red (NIC):

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

Una instancia solo puede tener una interfaz IRDMA. Cada instancia puede tener de una a 10 interfaces de red.

Para crear una instancia que use IRDMA, completa los pasos que se indican en las siguientes secciones:

  1. Crea una política de posición si no existe una adecuada.

  2. Crea una red de VPC nueva o usa una red de VPC existente habilitada para RDMA.

  3. Crea una instancia habilitada para RDMA que tenga una interfaz de red IRDMA, al menos una interfaz de red GVNIC y que use una política de posición compacta.

Crea una política de posición para instancias de RDMA

Las instancias que se comunican con RDMA deben estar ubicadas en una sola zona y, de manera más estricta, dentro de un solo tejido de clúster. Puedes crear una política de posición compacta y especificar un valor de distancia máxima para establecer la compacidad mínima dentro de una zona. Existe un límite para la cantidad de instancias a las que puedes asignar la política de posición compacta cuando especificas un valor de distancia máxima, y el límite cambia según el valor que elijas.

  • Para crear una política de posición compacta que se use con tus instancias de RDMA, sigue los pasos que se indican en Crea una política de posición compacta y especifica un valor de distancia máxima de 3 o menos.

Crea redes de nube privada virtual

Para configurar las redes, 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

Para crear las redes, puedes usar la siguiente secuencia de comandos.

  1. Opcional: Antes de ejecutar la secuencia de comandos, enumera los perfiles de red de RDMA para verificar que estén disponibles.

    gcloud beta compute network-profiles list
    
  2. Copia el siguiente código y ejecútalo en una ventana de shell de Linux.

#!/bin/bash

# Create standard VPC (network and subnet) for the GVNIC interface
  gcloud beta compute networks create GVNIC_NAME_PREFIX-net-0 \
    --subnet-mode=custom

  gcloud beta compute networks subnets create GVNIC_NAME_PREFIX-sub-0 \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --region=REGION \
    --range=10.0.0.0/16

  gcloud beta compute firewall-rules create GVNIC_NAME_PREFIX-internal-0 \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --action=ALLOW \
    --rules=tcp:0-65535,udp:0-65535,icmp \
    --source-ranges=10.0.0.0/8

# Create SSH firewall rules
gcloud beta 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 an external IP for only the GVNIC interface
gcloud beta 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 network for RDMA over Falcon transport
gcloud beta compute networks create RDMA_NAME_PREFIX-irdma \
  --network-profile=ZONE-vpc-falcon \
  --subnet-mode custom

# Create subnet for RDMA
gcloud beta compute networks subnets create RDMA_NAME_PREFIX-irdma-sub \
    --network=RDMA_NAME_PREFIX-irdma \
    --region=REGION \
    --range=10.1.0.0/16  # offset to avoid overlap with GVNIC network

Reemplaza lo siguiente:

  • GVNIC_NAME_PREFIX: Es el prefijo del nombre que se usará para la subred y la red de nube privada virtual estándar que usa un tipo de NIC de GVNIC.
  • RDMA_NAME_PREFIX: Es el prefijo del nombre que se usará para la red de nube privada virtual y la subred que usa el tipo de NIC de IRDMA.
  • ZONE: Es la zona en la que deseas crear las redes y las instancias de procesamiento. Usa us-central1-a o europe-west4-b.
  • REGION: Es la región en la que deseas crear las redes. Debe corresponder a la zona especificada. Por ejemplo, si tu zona es europe-west4-b, tu región es 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 deGoogle Cloud.

Crea una instancia habilitada para RDMA

En los siguientes pasos, se muestra cómo crear una instancia con la primera interfaz de red configurada como una interfaz de gVNIC y la segunda interfaz de red configurada como una interfaz de red de IRDMA:

Console

  1. En la consola de Google Cloud , ve a la página Crear una instancia.

    Ir a Crear una instancia

    Si se te solicita, selecciona el proyecto y haz clic en Continuar.

    Aparecerá la página Crear una instancia y se mostrará el panel Configuración de la máquina.

  2. En el panel Configuración de la máquina, haz lo siguiente:

    1. En el campo Nombre, especifica un nombre para tu instancia. Para obtener más información, consulta Convención de asignación de nombres de recursos.
    2. Opcional: En el campo Zona, selecciona una zona para esta instancia.

      Elige la zona que usaste para configurar el perfil de red de RDMA.

    3. Elige la familia de máquinas Optimizado para procesamiento.

    4. En la columna Serie, selecciona la serie de máquinas H4D.

    5. En la sección Tipo de máquina, selecciona el tipo de máquina para tu instancia.

  3. En el menú de navegación de la izquierda, haz clic en SO y almacenamiento. En el panel Sistema operativo y almacenamiento que aparece, haz lo siguiente:

    1. En la parte inferior de la sección SO y almacenamiento, haz clic en Cambiar.
    2. En las listas Sistema operativo y Versión, selecciona un tipo y una versión de SO que ofrezcan compatibilidad con RDMA.
    3. Asegúrate de que el tipo de disco de arranque esté establecido en Hyperdisk Balanced.
    4. Haz clic en Seleccionar en la parte inferior del panel para guardar los cambios.
  4. En el menú de navegación de la izquierda, haz clic en Herramientas de redes. En el panel Networking que aparece, haz lo siguiente:

    1. Ve a la sección Interfaces de red. Ya debería haber una interfaz de red, etiquetada como default.
    2. Haz clic en Agregar una interfaz de red. En la sección Nueva interfaz de red que aparece, haz lo siguiente:
      1. En la lista Tarjeta de interfaz de red, selecciona IRDMA.
      2. En el campo Red, selecciona la red de VPC con un perfil de red de RDMA.
      3. Opcional: En la lista Subred, selecciona la subred que usará la instancia.
      4. En el campo Tipo de pila de IP, asegúrate de que esté configurado como Solo IPv4.
      5. En la lista Dirección IPv4 externa, selecciona Ninguna.
      6. Para confirmar los detalles de la interfaz de red, haz clic en Listo.
  5. Opcional: Especifica otros parámetros de configuración para la instancia. Para obtener más información, consulta Opciones de configuración durante la creación de instancias.

  6. Para crear y, luego, iniciar la instancia, haz clic en Crear.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Usa el comando gcloud compute instances create con al menos dos marcas --network-interface, una para la interfaz de GVNIC y otra para la interfaz de IRDMA. Puedes personalizar el resto de las opciones de comandos según sea necesario.

    gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE \
        --create-disk=boot=yes, \
            image=projects/IMAGE_PROJECT/global/images/IMAGE, \
            size=SIZE \
        --maintenance-policy=TERMINATE \
        --network-interface \
            nic-type=GVNIC, \
            network=NETWORK_NAME,subnet=SUBNET_NAME, \
            stack-type=STACK_TYPE, \
            private-network-ip=INTERNAL_IPV4_ADDRESS, \
            address=EXTERNAL_IPV4_ADDRESS \
        --network-interface \
            nic-type=IRDMA, \
            network=RDMA_NETWORK_NAME,subnet=RDMA_SUBNET_NAME, \
            stack-type=IPV4_ONLY, \
            no-address \
    

    Reemplaza lo siguiente:

    • INSTANCE_NAME: Es el nombre de la instancia de procesamiento.
    • ZONE: Es la zona en la que se crea la instancia, como europe-west1-b. La región de la instancia se infiere de la zona.
    • MACHINE_TYPE: Es el tipo de máquina que se usará para la instancia (opcional).
    • IMAGE_PROJECT: Es el proyecto de imagen que contiene la imagen (opcional). Durante el período de vista previa, usa una imagen personalizada o la imagen de VM de HPC.
    • IMAGE: Opcional: Especifica una de las siguientes opciones:
      • una versión específica de la imagen de SO; por ejemplo, hpc-rocky-linux-8-v20250721.
      • Una familia de imágenes, que debe tener el formato family/IMAGE_FAMILY. Esto crea la instancia a partir de la imagen de SO no obsoleta más reciente. Por ejemplo, si especificas family/hpc-rocky-linux-8, Compute Engine crea una instancia con la versión más reciente de la imagen de SO en la familia de imágenes de HPC Rocky Linux 8. Para obtener más información sobre el uso de las familias de imágenes, consulta Prácticas recomendadas para las familias de imágenes.
    • SIZE: Opcional: Es el tamaño del disco nuevo. El valor debe ser un número entero. La unidad de medida predeterminada es GiB.
    • NETWORK_NAME: Nombre de la red (opcional)
    • SUBNET_NAME: Es el nombre de la subred que se usará para la interfaz de red. Para ver una lista de subredes en la red, usa el comando gcloud compute networks subnets list.

      En el caso de la interfaz de red gVNIC, puedes omitir las marcas network y subnet, y usar la red default en su lugar.

    • STACK_TYPE: Es el tipo de pila para la interfaz de red de GVNIC (opcional). STACK_TYPE debe ser uno de los siguientes valores: IPV4_ONLY, IPV4_IPV6 o IPV6_ONLY. El valor predeterminado es IPV4_ONLY.

    • INTERNAL_IPV4_ADDRESS: Opcional: Es la dirección IPv4 interna que quieres que use la instancia de procesamiento en la subred de destino. Omite esta marca si no necesitas una dirección IP específica.

      Para especificar una dirección IPv6 interna, usa la marca --internal-ipv6-address.

    • EXTERNAL_IPV4_ADDRESS: Opcional: Es la dirección IPv4 externa estática que se 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 deseas 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_NETWORK_NAME: Es el nombre de la red que creaste con un perfil de red de RDMA.

    • RDMA_SUBNET_NAME: Es el nombre de una subred en la red RDMA.

REST

Para crear una instancia configurada para usar RDMA, realiza una solicitud POST al método instances.insert. Incluye el objeto networkInterfaces con al menos dos configuraciones de red, una para la interfaz gVNIC y otra para la interfaz IRDMA. Puedes personalizar el resto de las propiedades de la instancia según sea necesario.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: ID del proyecto en el que se creará la instancia
  • ZONE: Es la zona en la que se creará la instancia.
  • MACHINE_TYPE: El tipo de máquina que se usará, por ejemplo, h4d-highmem-192-lssd
  • INSTANCE_NAME: Es un nombre para la instancia nueva.
  • IMAGE_PROJECT: Es el proyecto de imagen que contiene la imagen (opcional).
  • IMAGE: Opcional: Especifica una de las siguientes opciones:

    • Una versión específica de la imagen de SO; por ejemplo, debian-12-bookworm-v20250415
    • Una familia de imágenes, que debe tener el formato family/IMAGE_FAMILY. Esto crea la instancia a partir de la imagen de SO no obsoleta más reciente. Por ejemplo, si especificas family/debian-12, Compute Engine crea una instancia con la versión más reciente de la imagen de SO en la familia de imágenes Debian 12. Para obtener más información sobre el uso de las familias de imágenes, consulta Prácticas recomendadas para las familias de imágenes.
  • NETWORK_NAME: Opcional: Nombre de la red que se usará con la interfaz de red gVNIC
  • SUBNET_NAME: Nombre de la subred que se usará con la interfaz de red gVNIC

    En el caso de la interfaz de red de GVNIC, puedes omitir las propiedades network y subnet, y usar la red default en su lugar.

  • INTERNAL_IPV4_ADDRESS: Opcional: Es la dirección IPv4 interna que quieres que use la instancia de procesamiento en la subred de destino. Omite esta marca si no necesitas una dirección IP específica.
  • 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_NETWORK_NAME: El nombre de la red que creaste con un perfil de red de RDMA
  • RDMA_SUBNET_NAME: El nombre de una subred en la red RDMA

Método HTTP y URL:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

Cuerpo JSON de la solicitud:

{
    "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
    "name": "INSTANCE_NAME",
    "disks": [
      {
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        },
        "boot": true
      }
    ],
    "networkInterfaces": [
      {
        "network": "NETWORK_NAME",
        "subnetwork": "SUBNET_NAME",
        "networkIP": "INTERNAL_IPV4_ADDRESS",
        "accessConfigs": [
          {
            "type": "ONE_TO_ONE_NAT",
            "name": "External IP",
            "natIP": "EXTERNAL_IPV4_ADDRESS"
          }
        ],
        "stackType": "IPV4_ONLY",
        "nicType": "GVNIC",
      },
      {
        "network": "RDMA_NETWORK_NAME",
        "subnetwork": "RDMA_SUBNET_NAME",
        "stackType": "IPV4_ONLY",
        "nicType": "IRDMA",
      }
    ]
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "kind": "compute#operation",
  "id": "9216044482154695709",
  "name": "operation-1739207409646-62dccc7d7bc58-d1350b42-64fdb7f7",
  "zone": "https://www.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`",
  "operationType": "insert",
  "targetLink": "https://www.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`/instances/`INSTANCE_NAME`",
  "targetId": "2679381553616227357",
  "status": "RUNNING",
  "user": "USER_ID",
  "progress": 0,
  "insertTime": "2025-02-10T09:10:10.551-08:00",
  "startTime": "2025-02-10T09:10:10.551-08:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`/operations/operation-1565289606387-58f9f62f5989c-e582f586-6d22f38"
 "kind": "compute#operation"
}

Próximos pasos