Acerca de la flexibilidad de instancias para las VMs creadas de forma masiva

Cuando creas máquinas virtuales (VMs) de forma masiva en una región con Compute Engine, si tu aplicación no está restringida a un solo tipo de máquina, puedes aumentar la tasa de éxito del aprovisionamiento de la cantidad requerida de VMs configurando la flexibilidad de instancias. La flexibilidad de instancias te permite especificar uno o más tipos de máquinas que sean adecuados para tu carga de trabajo. Luego, Compute Engine aprovisiona VMs con uno o más de estos tipos de máquinas, según la capacidad y la disponibilidad de la cuota. Una sola solicitud de inserción masiva puede crear VMs de varios tipos de máquinas diferentes.

La flexibilidad de instancias te ayuda a maximizar la disponibilidad de recursos durante los picos de demanda, mejorar la relación precio-rendimiento y adoptar de forma segura el hardware más reciente. Para obtener más información, consulta Optimiza el procesamiento de aprovisionamiento.

En este documento, se describe cómo funciona la flexibilidad de instancias para las VMs creadas de forma masiva, incluidas las anulaciones de propiedades de instancias para la plataforma de CPU mínima y los discos, y las limitaciones. Para obtener más información sobre la configuración de la flexibilidad de instancias, consulta Crea VMs de forma masiva con flexibilidad de instancias.

Usa la flexibilidad de instancias

Para configurar la flexibilidad de instancias, debes enumerar los tipos de máquinas adecuados definiendo una o más selecciones de instancias en tu solicitud de inserción masiva regional. Por ejemplo, en una solicitud de REST, debes incluir el objeto instanceFlexibilityPolicy, dentro del cual defines uno o más objetos instanceSelections, cada uno de los cuales contiene una lista de tipos de máquinas.

También puedes especificar tipos de máquinas que se ejecuten en diferentes plataformas de CPU, tengan diferentes arquitecturas (como x86 y Arm) o tengan diferentes requisitos de disco. Para usar tipos de máquinas con diferentes requisitos de hardware, usa una selección de instancias para anular las propiedades correspondientes de las propiedades de instancias de la solicitud (instanceProperties). Para obtener más información, consulta Anulaciones de propiedades de instancias en selecciones de instancias.

Cuando Compute Engine recibe la solicitud, primero valida los tipos de máquinas y su compatibilidad zonal, y excluye las entradas no válidas. Si existe al menos una configuración válida, la operación continúa.

Luego, Compute Engine intenta aprovisionar VMs en función del hardware, la cuota y las reservas disponibles. Si configuras rangos para tus selecciones de instancias, se priorizan las selecciones con un rango más bajo. Dentro de cada rango, Compute Engine considera las reservas no utilizadas y las instrucciones de VM Spot para seleccionar tipos de máquinas con una menor probabilidad de interrupción.

Anulaciones de propiedades de instancias en selecciones de instancias

Cuando realizas una selección de instancias, puedes especificar propiedades de instancias adicionales, como la plataforma de CPU mínima (minCpuPlatform) y los discos (disks), para anular o agregar a las propiedades que defines en las propiedades de instancias de la solicitud (instanceProperties). Cuando Compute Engine selecciona un tipo de máquina de una selección de instancias para crear VMs, usa las propiedades de instancias que especificas en esa selección. Si no especificas ninguna anulación para una selección de instancias, Compute Engine usa las propiedades correspondientes de instanceProperties para las VMs que crea a partir de esa selección.

Anular las propiedades de instancias a nivel de la selección de instancias te brinda más control y flexibilidad cuando usas diferentes configuraciones de hardware en una sola solicitud de inserción masiva.

Anulaciones de la plataforma de CPU mínima

Puedes especificar una plataforma de CPU mínima (minCpuPlatform) para las VMs que Compute Engine crea a partir de los tipos de máquinas en una selección de instancias. Esta anulación te permite combinar diferentes tipos de máquinas y aplicar de forma selectiva plataformas de CPU mínimas. Cada tipo de máquina en una selección de instancias debe admitir la plataforma de CPU mínima efectiva, ya sea que se especifique en la selección o se herede de instanceProperties.

Como alternativa, puedes configurar el campo minCpuPlatform como AUTOMATIC. Este parámetro de configuración anula el valor minCpuPlatform en instanceProperties y permite que Compute Engine use cualquier plataforma de CPU compatible para los tipos de máquinas en la selección de instancias.

Para combinar tipos de máquinas en los que solo una serie admite una plataforma de CPU específica, colócalos en selecciones de instancias separadas. Por ejemplo, los tipos de máquinas N4 admiten la plataforma Intel Emerald Rapids, mientras que los tipos de máquinas N2 con menos de 96 CPUs virtuales admiten Intel Ice Lake e Intel Cascade Lake. Para combinar N4 y N2 en una solicitud de inserción masiva y requerir que N2 se ejecute en Intel Ice Lake, configura dos selecciones de instancias de la siguiente manera:

  • Selección de N2: Configura el campo minCpuPlatform como Intel Ice Lake.
  • Selección de N4: Deja el campo minCpuPlatform sin configurar o configúralo como AUTOMATIC.

Puedes establecer la misma preferencia para ambos tipos de máquinas si asignas el mismo rango a ambas selecciones de instancias.

Anulaciones de disco

Puedes especificar una configuración de disco personalizada en una selección de instancias para anular el disco de arranque o los discos adicionales que se especifican en instanceProperties, o para conectar discos adicionales. Esta anulación te permite combinar tipos de máquinas que tienen diferentes arquitecturas o admiten diferentes tipos de discos. También te permite especificar las imágenes o los discos de arranque necesarios para cada tipo de máquina.

Por ejemplo, puedes usar selecciones de instancias separadas para anular discos para diferentes requisitos:

  • Diferentes arquitecturas: Puedes combinar tipos de máquinas C4 (arquitectura x86) y C4A (arquitectura Arm). Debido a que los tipos de máquinas x86 y Arm requieren diferentes imágenes de arranque, puedes anular el disco de arranque para especificar una imagen compatible para cada arquitectura.
  • Diferentes tipos de discos: Puedes combinar tipos de máquinas N2 y N4. Debido a que N2 solo admite Persistent Disk para discos de arranque y N4 solo admite Google Cloud Hyperdisk, puedes anular la configuración del disco para especificar un tipo de disco compatible para cada serie de máquinas.

En ambos casos, puedes establecer la misma preferencia para ambos tipos de máquinas si asignas el mismo rango a las selecciones de instancias.

Si un disco en una selección de instancias tiene un deviceName que coincide con un disco en instanceProperties, Compute Engine anula la configuración de ese disco. Si el deviceName no coincide con ningún disco en instanceProperties, Compute Engine lo conecta como un disco adicional. Debes asegurarte de que la configuración de disco efectiva sea compatible con todos los tipos de máquinas en la selección de instancias.

En el siguiente diagrama, se muestra cómo Compute Engine combina las configuraciones de disco de instanceProperties y una selección de instancias:

Diagrama que muestra que los discos de una selección de instancias anulan los discos con nombres de dispositivo coincidentes en las propiedades de la instancia y se conectan como discos adicionales cuando los nombres de dispositivo no coinciden.

Para obtener instrucciones sobre cómo especificar la plataforma de CPU mínima y las anulaciones de disco cuando creas VMs de forma masiva, consulta Crea VMs con varios tipos de máquinas, plataforma de CPU mínima y disco anulaciones.

Para obtener más información sobre las limitaciones cuando usas anulaciones de selección de instancias, consulta la sección Limitaciones en este documento.

Ejemplo: Anulaciones de la plataforma de CPU mínima y de disco

Puedes usar anulaciones en una política de flexibilidad de instancias para aprovisionar VMs en series de máquinas que requieren diferentes plataformas de CPU, imágenes de arranque o tipos de discos.

Considera una solicitud de inserción masiva con la siguiente configuración base de instanceProperties que define un disco de arranque pd-balanced predeterminado:

"instanceProperties": {
  "disks": [
    {
      "autoDelete": true,
      "deviceName": "boot-disk",
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
        "diskSizeGb": "10",
        "diskType": "pd-balanced"
      }
    }
  ],
  "networkInterfaces": [{}]
}

La siguiente configuración de instanceFlexibilityPolicy en la misma solicitud anula la configuración base de instanceProperties especificando la plataforma de CPU mínima y las configuraciones de disco en tres selecciones de instancias:

"instanceFlexibilityPolicy": {
  "instanceSelections": {
    "first-preference": {
      "rank": 1,
      "machineTypes": ["n4-standard-4"],
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
            "diskSizeGb": "10",
            "diskType": "hyperdisk-balanced"
          }
        }
      ]
    },
    "second-preference": {
      "rank": 2,
      "machineTypes": ["c4a-standard-4"],
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12-arm64",
            "diskSizeGb": "10",
            "diskType": "hyperdisk-balanced"
          }
        },
        {
          "autoDelete": true,
          "deviceName": "data-disk",
          "boot": false,
          "initializeParams": {
            "diskSizeGb": "100",
            "diskType": "hyperdisk-balanced"
          }
        }
      ]
    },
    "third-preference": {
      "rank": 3,
      "machineTypes": ["n2-standard-4"],
      "minCpuPlatform": "Intel Ice Lake",
      "disks": [
        {
          "autoDelete": true,
          "deviceName": "boot-disk",
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-12",
            "diskSizeGb": "10",
            "diskType": "pd-ssd"
          }
        }
      ]
    }
  }
}

En este ejemplo, Compute Engine aplica las siguientes anulaciones según la selección de instancias que usa para crear VMs:

  • Primera preferencia (first-preference): Para las VMs n4-standard-4, la selección anula boot-disk para usar un disco hyperdisk-balanced en lugar del disco base pd-balanced.
  • Segunda preferencia (second-preference): Para las VMs c4a-standard-4 (Arm), la selección anula boot-disk para usar una imagen de arranque compatible con Arm (debian-12-arm64) en un disco hyperdisk-balanced y conecta un disco hyperdisk-balanced adicional de 100 GB llamado data-disk.
  • Tercera preferencia (third-preference): Para las VMs n2-standard-4, la selección establece minCpuPlatform como Intel Ice Lake y anula boot-disk para usar un disco pd-ssd.

Selección de zona cuando se define una forma de distribución objetivo

Cuando usas la flexibilidad de instancias con una solicitud bulkInsert regional, puedes especificar una forma de distribución objetivo para controlar cómo se distribuyen las VMs entre las zonas de la región. Compute Engine selecciona zonas para aprovisionar VMs en función de esta forma, de la siguiente manera:

  • ANY_SINGLE_ZONE: Compute Engine selecciona una sola zona que tiene la mayor capacidad para tipos de máquinas con una preferencia más alta.
  • BALANCED: Compute Engine distribuye las VMs de la manera más uniforme posible entre las zonas con recursos disponibles. Dentro de cada zona, Compute Engine prioriza los tipos de máquinas con una preferencia más alta.
  • ANY: Compute Engine selecciona zonas con recursos disponibles. Si se configuran rangos, Compute Engine prioriza las zonas para aprovisionar VMs con tipos de máquinas con una preferencia más alta.

Para obtener más información, consulta Crea VMs de forma masiva en una región.

Aprovisionamiento mínimo de VMs y flexibilidad de instancias

Si defines un valor para la cantidad mínima requerida de VMs (minCount) en la solicitud bulkInsert, la API intenta crear al menos esa cantidad de VMs. Si Compute Engine no puede aprovisionar la cantidad mínima requerida de VMs (minCount), falla toda la operación y Compute Engine no crea ninguna VM. Cuando usas minCount con la flexibilidad de instancias, Compute Engine prioriza el aprovisionamiento de VMs en función de la disponibilidad sobre el rango, de la siguiente manera:

  • Compute Engine prioriza el aprovisionamiento de la cantidad máxima de VMs hasta count, incluso si esto significa usar máquinas de menor preferencia. Por ejemplo, si tu solicitud especifica un mínimo de una VM requerida (minCount=1) y un máximo de 10 VMs (count=10), y si Compute Engine tiene capacidad para aprovisionar una VM de mayor preferencia o seis VMs de menor preferencia, Compute Engine aprovisiona las seis VMs de menor preferencia.
  • Si Compute Engine puede aprovisionar la misma cantidad máxima de VMs hasta count con diferentes selecciones de instancias, prioriza la selección con mayor preferencia. Por ejemplo, si tu solicitud especifica un mínimo de una VM requerida (minCount=1) y un máximo de 10 VMs (count=10), y si Compute Engine puede aprovisionar seis VMs con una selección de instancias de mayor o menor preferencia, Compute Engine aprovisiona las seis VMs de la selección de mayor preferencia.

Para obtener más información, consulta la propiedad minCount en bulkInsert.

Validación de inserción masiva y situaciones de error

Compute Engine realiza una validación inicial de los tipos de máquinas y su compatibilidad zonal, y excluye las entradas no válidas de la consideración. Si queda al menos una configuración válida después de esta verificación inicial, Compute Engine continúa con la creación de la VM.

Sin embargo, algunas validaciones de tu configuración solo pueden ocurrir después de que Compute Engine haya seleccionado las zonas y los tipos de máquinas que se usarán para el aprovisionamiento, según tu política de flexibilidad de instancias y la capacidad disponible. Si, durante esta etapa de validación posterior, se descubre que la combinación específica de tipo de máquina y zona elegida para el aprovisionamiento no es válida, falla toda la solicitud de inserción masiva con errores de validación. Esta falla puede ocurrir incluso si otras configuraciones dentro de instanceFlexibilityPolicy eran válidas inicialmente.

Limitaciones

Se aplican las siguientes limitaciones cuando usas la flexibilidad de instancias para la creación masiva de VM:

  • Solo puedes especificar la flexibilidad de instancias para las solicitudes bulkInsert regionales; no puedes usarla con solicitudes zonales.
  • La flexibilidad de instancias no admite VMs de inicio flexible ni reservas futuras.
  • No puedes usar la flexibilidad de instancias con las funciones de AI Hypercomputer ni con las GPUs A3 Ultra, A4 y más recientes.
  • Puedes especificar un máximo de 10 tipos de máquinas diferentes en un máximo de 10 selecciones de instancias diferentes.
  • Cuando anulas minCpuPlatform o disks en una selección de instancias, también se aplican las siguientes limitaciones:

¿Qué sigue?