Crea una instancia de VM personalizada

Compute Engine ofrece tipos predefinidos de máquinas que puedes usar cuando creas una instancia de VM. Un tipo predefinido de máquina tiene una cantidad predeterminada de CPU virtuales y de memoria, y se cobra a un precio determinado.

Si los tipos predefinidos de máquinas no satisfacen tus necesidades, puedes crear una instancia de VM con una configuración de hardware virtualizada y personalizada. Específicamente, puedes crear una instancia de VM con una cantidad personalizada de CPU virtuales y memoria mediante el uso efectivo de un tipo personalizado de máquina. Los tipos personalizados de máquinas están disponibles en la familia de máquinas de uso general. Cuando creas una VM personalizada, implementas una VM personalizada de la familia de máquinas E2, N2, N2D o N1.

Las VM personalizadas son ideales en las siguientes situaciones:

  • Las cargas de trabajo que no son adecuadas para los tipos predefinidos de máquina
  • Las cargas de trabajo que requieren mayor procesamiento o memoria, pero no necesitan todas las actualizaciones que proporciona el próximo nivel de tipo de máquina.

Antes de comenzar

Precios

Google cobra por las VM personalizadas en función de la cantidad de CPU virtuales y las horas de memoria que usa la VM. Esto difiere de cómo se cobran los tipos predefinidos de máquinas. Consulta los precios de VM para obtener más información.

Las VM personalizadas están sujetas al mismo cargo mínimo de 1 minuto al que está sujeta cualquier otra instancia, pero los descuentos por uso continuo de los tipos personalizados de máquinas se calculan de manera diferente. Si deseas obtener más información, consulta los descuentos por uso continuo para VM personalizadas.

Expresa la memoria en GB o MB

En las herramientas y la documentación de Google Cloud, la memoria del tipo de máquina se calcula en gigabytes (GB), donde 1 GB es 230 bytes. Esta unidad de medida también se conoce como gibibyte (GiB). Cuando conviertes la memoria de GB en MB, 1 GB es igual a 1024 MB.

En la API, siempre debes proporcionar la memoria en megabytes. Si usas la herramienta de línea de comandos de gcloud, puedes proporcionar la memoria total para una instancia en gigabytes o megabytes. Sin embargo, la herramienta de gcloud espera que el valor de la memoria sea un número entero, por lo que no puedes proporcionar un número de punto flotante. Por ejemplo, para expresar 5.75 GB, convierte 5.75 GB en MB. En este caso, 5.75 GB es igual a 5888 MB.

Crea una instancia de VM con un tipo personalizado de máquina

Antes de crear una instancia de VM, asegúrate de leer y comprender las especificaciones personalizadas para crear este tipo de máquina.

Console

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

    Ir a Crear una instancia

  2. En Zona, selecciona la zona en la que deseas alojar esta instancia. La lista Series se filtra para incluir solo las familias de tipos de máquinas disponibles en la zona seleccionada.

  3. En Configuración de la máquina, selecciona De uso general.

  4. En la lista Series, selecciona N1 en Primera generación para tipos personalizados de máquinas N1 o E2, N2, o N2D para los tipos personalizados de máquinas de Segunda generación.

  5. En la lista Tipo de máquina, selecciona Personalizado.

  6. Para especificar la cantidad de CPU virtuales y memoria de la instancia de VM, arrastra los controles deslizantes o ingresa los valores en los cuadros de texto. Console mostrará un costo estimado para la instancia a medida que cambies la cantidad de CPU virtuales y la memoria.

  7. Guarda los cambios y continúa con la creación de la VM.

gcloud

El comando gcloud para tipos personalizados de máquinas difiere de manera leve según la familia de tipos de máquina.

Para los tipos de máquina N1, usa el comando gcloud compute instances create y, además, incluye una de las siguientes opciones:

  • Las marcas --custom-cpu y --custom-memory
  • La marca --machine-type=custom-[NUMBER_OF_CPUS]-[NUMBER_OF_MB]

Por ejemplo, el siguiente comando crearía una instancia que ejecuta un tipo de máquina N1 con 4 CPU virtuales y 5 GB de memoria total:

gcloud compute instances create example-instance \
    --custom-cpu=4 --custom-memory=5

Para los tipos de máquinas N2, usa el comando gcloud compute instances create e incluye una de las siguientes opciones:

  • Las marcas --custom-cpu, --custom-memory y --custom-vm-type
  • La marca --machine-type=n2-custom-NUMBER_OF_CPUS-NUMBER_OF_MB

Cuando uses la marca --custom-memory, especifica la cantidad total de memoria en GB o MB. La propiedad debe ser un número entero, por lo que puedes convertir ese valor en MB si deseas especificar incrementos de 0.25 GB para la memoria.

Para especificar un valor incremental, como 2.5 GB de memoria, convierte el valor en MB y proporciónalo seguido del sufijo MB. En el siguiente ejemplo, se crea una instancia que ejecuta un tipo de máquina N2:

gcloud compute instances create example-instance \
    --custom-cpu=6 --custom-memory=3072MB --custom-vm-type=n2

Como alternativa, puedes especificar un tipo personalizado de máquina con el siguiente formato:

gcloud compute instances create example-instance \
    --machine-type n2-custom-NUMBER_OF_CPUS-NUMBER_OF_MB

Reemplaza los siguientes elementos:

  • NUMBER_OF_CPUS: Es la cantidad de CPU que deseas.
  • NUMBER_OF_MB: Es la cantidad de memoria, en MB.

Por ejemplo:

gcloud compute instances create example-instance --machine-type=n2-custom-6-3072

Para los tipos de máquina N2D o E2, usa el comando gcloud compute instances create e incluye una de las siguientes opciones:

  • Las marcas --custom-cpu, --custom-memory y --custom-vm-type
  • La marca --machine-type=n2d-custom-NUMBER_OF_CPUS-NUMBER_OF_MB
  • La marca --machine-type=e2-custom-NUMBER_OF_CPUS-NUMBER_OF_MB

Para los tipos personalizados de máquinas con núcleo compartido E2, usa el mismo comando gcloud compute instances create e incluye el tamaño de la máquina con núcleo compartido: micro, small o medium

  • La marca --machine-type=e2-custom SHARED_CORE_MACHINE_SIZE-NUMBER_OF_MB

Por ejemplo:

gcloud compute instances create example-instance \
    --machine-type=e2-custom-medium-NUMBER_OF_MB

Cuando uses la marca --custom-memory, especifica la cantidad total de memoria en GB o MB. La propiedad debe ser un número entero, por lo que puedes convertir ese valor en MB si deseas especificar incrementos de 0.25 GB para la memoria.

Para especificar un valor incremental, como 2.5 GB de memoria, convierte el valor en MB y proporciónalo seguido del sufijo MB. En el siguiente ejemplo, se crea una instancia que ejecuta un tipo de máquina E2:

gcloud compute instances create example-instance \
    --custom-cpu=6 --custom-memory=3072MB --custom-vm-type=e2

Como alternativa, puedes especificar un tipo personalizado de máquina con el siguiente formato:

gcloud compute instances create example-instance \
    --machine-type=e2-custom-NUMBER_OF_CPUS-NUMBER_OF_MB

Reemplaza lo siguiente:

  • NUMBER_OF_CPUS: Es la cantidad de CPU que deseas.
  • NUMBER_OF_MB: Es la cantidad de memoria, en MB.

Por ejemplo:

gcloud compute instances create example-instance --machine-type=e2-custom-6-3072

API

En la API, crea la solicitud de creación de instancias como lo harías normalmente, pero cuando especifiques un valor machineType, usa uno de los siguientes formatos. Reemplaza NUMBER_OF_CPUS por la cantidad de CPU y AMOUNT_OF_MEMORY_MB por la cantidad de memoria que deseas. Proporciona la memoria en unidades de MB.

  • Usa lo siguiente para los tipos de máquinas N1:

    zones/ZONE/machineTypes/custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY_MB
    
  • Usa lo siguiente para los tipos de máquinas N2:

    zones/ZONE/machineTypes/n2-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY_MB
    
  • Usa lo siguiente para los tipos de máquinas N2D:

    zones/ZONE/machineTypes/n2d-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY_MB
    
  • Usa lo siguiente para los tipos de máquina E2:

    zones/ZONE/machineTypes/e2-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY_MB
    
  • Usa lo siguiente para los tipos personalizados de máquinas con núcleo compartido E2:

    zones/ZONE/machineTypes/e2-custom-SHARED_CORE_MACHINE_SIZE-AMOUNT_OF_MEMORY_MB
    

Por ejemplo, la siguiente URL crearía una instancia con 4 CPU virtuales y 5 GB (5120 MB) de memoria:

zones/us-central1-f/machineTypes/custom-4-5120

De manera similar, puedes crear instancias interrumpibles y grupos de instancias con tipos personalizados de máquinas.

Agrega memoria extendida a un tipo de máquina

En función de la máquina, cada tipo de máquina tiene una cantidad específica de memoria de forma predeterminada. Por ejemplo, si creas una VM N1 personalizada, puede tener hasta 6.5 GB de memoria por CPU virtual. En las VM N2 personalizadas, esta cantidad aumenta hasta 8 GB de memoria por CPU virtual.

Esta cantidad de memoria podría no ser suficiente para algunas cargas de trabajo. Puedes obtener más memoria por CPU virtual además del límite predeterminado por un costo adicional. Esto se conoce como memoria extendida.

Con la memoria extendida, puedes agregar memoria a un tipo de máquina sin limitaciones por CPU virtual. Puedes agregar memoria extendida hasta ciertos límites según el tipo de máquina:

  • Para los tipos de máquina N1, puedes agregar hasta un total de 624 GB de memoria por VM.
  • Para los tipos de máquinas N2, puedes agregar hasta un total de 640 GB de memoria por VM.
  • Para los tipos de máquinas N2D, puedes agregar hasta un total de 768 GB de memoria por VM.
  • La memoria extendida no está disponible para los tipos de máquina E2.

Si necesitas más memoria, debes usar uno de los tipos de máquinas con megamemoria, que te permiten crear instancias de VM con un total de 1.4 TB en cada una.

Determina si necesitas memoria extendida

Ciertas cargas de trabajo necesitan más cantidad de memoria que la predeterminada por CPU virtual para ofrecer resultados óptimos. Las cargas de trabajo que se basan en bases de datos de estadísticas de alto rendimiento en la memoria, incluidas las bases de datos relacionales y NoSQL, como MS SQL Server, MongoDB y MemcacheD/Redis, pertenecen a esta categoría. Las licencias basadas en CPU virtuales de los sistemas operativos y las pilas de software también dificultan la selección de una configuración de memoria de VM óptima con los tipos predefinidos de máquinas. Con la memoria extendida, puedes agregar tanta memoria como las VM necesiten para obtener la mejor relación entre precio y rendimiento.

Precios

Cuando usas un tipo personalizado de máquina, toda cantidad de memoria, incluida la cantidad predeterminada por CPU virtual, se cobra según los precios de tipos personalizados de máquinas N1 o los precios de tipos personalizados de máquinas N2. Tipos personalizados de máquinas E2 y con núcleo compartido E2: Comparten el mismo esquema de precios.

Para la memoria superior a la predeterminada, Compute Engine cobra por la memoria extendida según el precio de la memoria personalizada extendida N1 o el precio de la memoria personalizada extendida N2. El precio por la memoria extendida es diferente al precio de la memoria por debajo del umbral predeterminado.

Los precios de la memoria extendida varían según la región. Las instancias que se ejecutan con memoria extendida están sujetas a la misma carga mínima de 1 minuto a la que está sujeta cualquier otra instancia. La memoria extendida también califica para descuentos de uso continuo.

Para obtener más información, consulta Descuentos por uso continuo para tipos personalizados de máquinas y Precios de memoria personalizada extendida.

Limitaciones

  • Solo puedes agregar memoria extendida a los tipos personalizados de máquinas. No se admiten los tipos predefinidos de máquinas.
  • No hay límite para la memoria por CPU virtual que puedes agregar, pero hay una cantidad máxima de memoria que puedes agregar a cada instancia de VM. Para los tipos de máquina N1, puedes agregar hasta 624 GB de memoria. Para los tipos de máquinas N2, puedes agregar hasta 640 GB de memoria. Para los tipos de máquinas N2D, puedes agregar hasta 768 GB de memoria.
  • Los tipos de máquinas N2 y N2D solo están disponibles en regiones y zonas específicas.
  • Debes especificar la memoria en incrementos de 256 MB.
  • Los descuentos por compromiso de uso no se aplican a la memoria extendida.

Agrega memoria extendida durante la creación de la instancia

Para crear una instancia de VM con memoria extendida, sigue las instrucciones que se detallan a continuación.

Console

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

    Ir a Crear una instancia

  2. En Zona, selecciona la zona en la que deseas alojar esta instancia. La lista Series se filtra para incluir solo las familias de tipos de máquinas disponibles en la zona seleccionada.

  3. En Configuración de la máquina, selecciona De uso general.

  4. Desde la lista desplegable Serie, seleccionaN1 en Primera generación para los tipos personalizados de máquinas N1 o N2, o N2D para los tipos personalizados de máquinas de Segunda generación.

  5. En el menú desplegable Tipo de máquina, selecciona Personalizado.

  6. Especifica la cantidad de CPU virtuales que deseas.

  7. Para agregar memoria extendida, selecciona Extender memoria y, luego, especifica la cantidad de memoria que deseas.

  8. Guarda los cambios y continúa con la creación de la VM.

gcloud

Para los tipos de máquinas N1, usa el comando de gcloud y el subcomando instances create, seguido de la marca --custom-extensions a fin de habilitar la memoria extendida. Luego especifica la memoria total que deseas con el parámetro --custom- memory.

gcloud compute instances create example-instance  \
    --custom-extensions --custom-cpu=2 --custom-memory=15

Para los tipos de máquinas N2, usa el comando de gcloud con el subcomando instances create. Establece las marcas --custom-extensions, --custom-cpu y --custom-memory, seguidas de la marca --custom-vm-type para especificar el tipo de máquina N2:

gcloud compute instances create example-instance \
    --custom-extensions --custom-cpu=2 --custom-memory=16 \
    --custom-vm-type=n2

Para los tipos de máquinas N2D, usa el comando gcloud con el subcomando instances create. Establece las marcas --custom-extensions, --custom-cpu y --custom-memory, seguidas de la marca --custom-vm-type para especificar el tipo de máquina N2D:

gcloud compute instances create example-instance \
    --custom-extensions --custom-cpu=2 --custom-memory=16 \
    --custom-vm-type=n2d

API

En la API, construye tu solicitud de creación de instancias como lo harías normalmente, pero cuando especifiques un valor machineType, usa uno de los siguientes formatos:

  • Usa lo siguiente para los tipos de máquina N1:

    zones/ZONE/machineTypes/custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    
  • Usa lo siguiente para los tipos de máquinas N2:

    zones/ZONE/machineTypes/n2-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    
  • Usa lo siguiente para los tipos de máquinas N2D:

    zones/ZONE/machineTypes/n2d-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    

Reemplaza los siguientes elementos:

  • NUMBER_OF_CPUS: Es la cantidad de CPU virtuales.
  • AMOUNT_OF_MEMORY: La memoria, en MB.

Por ejemplo, lo siguiente especifica un tipo de máquina N2 con 2 CPU virtuales y 20 GB de memoria:

zones/ZONE/machineTypes/n2-custom-2-20480-ext

Agrega memoria extendida a una instancia de VM existente

Para agregar más memoria a una instancia existente, primero debes detener la instancia. Después de que la instancia se detenga, sigue las instrucciones a continuación para agregar más memoria a la VM.

Console

  1. En Google Cloud Console, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Elige la instancia detenida que deseas modificar de la lista de instancias.

  3. Haz clic en Editar en la parte superior de la página.

  4. En Configuración de la máquina, selecciona De uso general.

  5. En la lista Tipo de máquina, selecciona Personalizado.

  6. Selecciona la cantidad de CPU virtuales que deseas.

  7. Para agregar memoria extendida, selecciona Extender memoria y, luego, especifica la cantidad de memoria que deseas.

  8. Guarda los cambios.

gcloud

Con la herramienta de línea de comandos de gcloud, usa el subcomando instances set-machine-type, seguido de la marca --custom-extensions y el parámetro --custom-memory existente.

Por ejemplo, para agregar 2 GB de memoria a una instancia de VM llamada example-instance, que actualmente tiene un tipo de máquina N1 con 2 CPU virtuales, 13 GB, en la zona us-central1-b, usa el siguiente comando:

gcloud compute instances set-machine-type example-instance \
   --zone=us-central1-b --custom-cpu=2 \
   --custom-memory=15 --custom-extensions

API

En la API, realiza una solicitud POST al método setMachineType con el tipo de máquina deseado en el cuerpo de la solicitud. Usa uno de los siguientes formatos:

  • Usa lo siguiente para los tipos de máquina N1:

    zones/ZONE/machineTypes/custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    
  • Usa lo siguiente para los tipos de máquinas N2:

    zones/ZONE/machineTypes/n2-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    
  • Usa lo siguiente para los tipos de máquinas N2D:

    zones/ZONE/machineTypes/n2d-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    

Reemplaza los siguientes elementos:

  • NUMBER_OF_CPUS: Es la cantidad de CPU virtuales.
  • AMOUNT_OF_MEMORY: La memoria, en MB.

Por ejemplo, la siguiente solicitud usa un tipo de máquina con 2 CPU virtuales y 15 GB de memoria:

zones/ZONE/machineTypes/custom-2-15360-ext

Por ejemplo:

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

{
    machineType: "zones/us-central1-f/machineTypes/custom-2-15360-ext"
}

¿Qué sigue?