En esta página, se describe cómo aprovisionar VM en nodos de usuario único, que son servidores físicos que ejecutan VM solo desde un proyecto único. Antes de aprovisionar VM en nodos de usuario único, lee la descripción general de nodos de usuario único.
Antes de comenzar
- Antes de aprovisionar VMs en nodos de usuario único, verifica tu cuota. Según la cantidad y el tamaño de los nodos que reservas, es posible que debas solicitar una cuota adicional.
- Crea una plantilla de nodo de usuario único.
- Crea un grupo de nodo de usuario único.
-
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:
Selecciona la pestaña según cómo planeas usar las muestras de esta página:
Console
Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud , no necesitas configurar la autenticación.
gcloud
-
Instala Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:
gcloud initSi usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
- Configura una región y una zona predeterminadas.
REST
Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.
Instala Google Cloud CLI.
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la 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 .
Crea una plantilla de nodo de usuario único
Antes de crear un grupo de nodos y aprovisionar VMs de usuario único, debes crear una plantilla de nodo de usuario único. Una plantilla de nodo es un recurso regional que define las propiedades (como el tipo de nodo, las etiquetas de afinidad, las SSD locales, los aceleradores y el exceso de compromiso de CPU) para cada nodo de un grupo de nodos.
Para configurar y crear una plantilla de nodo con la consola de Google Cloud , Google Cloud CLI o la API de REST de Compute Engine, consulta Crea una plantilla de nodo de usuario único.
Crea un grupo de nodo de usuario único
Después de crear una plantilla de nodos, debes crear un grupo de nodos de usuario único. Un grupo de nodos es un clúster homogéneo de nodos de usuario único en una zona específica que hereda propiedades de su plantilla. Puedes configurar las políticas de mantenimiento de hosts, el ajuste de escala automático y la configuración de uso compartido entre proyectos en el grupo de nodos.
Para configurar y crear un grupo de nodos con la consola de Google Cloud , Google Cloud CLI o la API de REST de Compute Engine, consulta Crea un grupo de nodos de usuario único.
Aprovisiona una VM de usuario único
Después de crear un grupo de nodos a partir de una plantilla de nodo, puedes aprovisionar VM individuales en un grupo de nodos de usuario único.
Para aprovisionar una VM en un nodo o grupo de nodos específico con etiquetas de afinidad que coincidan con las que asignaste antes a la plantilla de nodo, sigue el procedimiento estándar para crear una instancia de VM y asigna etiquetas de afinidad a la VM.
Como alternativa, puedes usar el siguiente procedimiento para aprovisionar una VM en un nodo de usuario único desde la página de detalles del grupo de nodos. Según el grupo de nodos en el que aprovisionas VM, Compute Engine asigna las etiquetas de afinidad.
Consola
En la consola de Google Cloud , ve a la página Nodos de usuario único.
Haz clic en Grupos de nodos.
Haz clic en el Nombre del grupo de nodos para aprovisionar una instancia de VM y, de forma opcional, haz clic en el nombre del nodo de usuario único específico a fin de aprovisionar la VM en este.
Haz clic en Crear instancia para aprovisionar una instancia de VM en este grupo de nodos, toma nota de los valores que se aplicaron de forma automática en el Nombre, la Región y la Zona y modifica esos valores según sea necesario.
Para seleccionar una opción de Configuración de la máquina, especifica los valores de Familia de máquinas, Serie y Tipo de máquina. Elige la opción de Serie que corresponda al tipo de nodo de usuario único.
Modifica el Disco de arranque, el Firewall y otras opciones de configuración según sea necesario.
Haz clic en Usuario único, observa las Etiquetas de afinidad de nodo que se asignaron de forma automática y usa Explorar para ajustarlas según sea necesario.
Haz clic en Administración y, en Mantenimiento en el host, elige una de las siguientes opciones:
Migrar instancia de VM (recomendado): La VM se migra a otro nodo del grupo de nodos durante los eventos de mantenimiento.
Finalizar instancia de VM: la VM se detiene durante los eventos de mantenimiento.
Elige una de las siguientes opciones para el Reinicio automático:
Activado (recomendado): se reinician las VM de forma automática si se detienen por eventos de mantenimiento.
Desactivado: las VM no se reinician de forma automática después de un evento de mantenimiento.
Haz clic en Crear para terminar de crear tu VM de usuario único.
gcloud
Usa el comando gcloud compute instances
create para aprovisionar una VM en un grupo de nodos de usuario único:
gcloud compute instances create VM_NAME \ [--zone=ZONE \] --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --node-group=GROUP_NAME \ --machine-type=MACHINE_TYPE \ [--maintenance-policy=MAINTENANCE_POLICY \] [--accelerator type=GPU_TYPE,count=GPU_COUNT \] [--local-ssd interface=SSD_INTERFACE \] [--restart-on-failure]
La marca --restart-on-failure indica si las VM de usuario único se reiniciarán después de detenerse. Esta marca está habilitada de forma predeterminada. Usa --no-restart-on-failure para inhabilitarla.
Reemplaza lo siguiente:
VM_NAME: es el nombre de la nueva VM de usuario único.ZONE: Es la zona en la que se aprovisionará la VM de usuario único.IMAGE_FAMILY: Es la familia de imágenes de la imagen que se usará para crear la VM.IMAGE_PROJECT: Es el proyecto de imagen de la familia de imágenes.GROUP_NAME: Es el nombre del grupo de nodos en el que se aprovisionará la VM.MACHINE_TYPE: Es el tipo de máquina de la VM de usuario único. Usa el comandogcloud compute machine-types lista fin de obtener una lista de los tipos de máquinas disponibles para el proyecto.MAINTENANCE_POLICY: Especifica el comportamiento de reinicio de las VM de usuario único durante los eventos de mantenimiento. Establécela en uno de los siguientes valores:MIGRATE: La VM migra a otro nodo en el grupo de nodos durante los eventos de mantenimiento.TERMINATE: La VM se detuvo durante eventos de mantenimiento.
GPU_TYPE: Es el tipo de GPU. Establece esta opción en uno de los tipos de acelerador especificados cuando se creó la plantilla de nodo.GPU_COUNT: La cantidad de GPU del total especificado por la plantilla de nodos que se adjuntarán a esta VM El valor predeterminado es1.SSD_INTERFACE: Es el tipo de interfaz de SSD local. Solo puedes establecer esto para instancias creadas a partir de una plantilla de nodo compatible con SSD local. Si especificas esta opción mientras creas la instancia y la plantilla de nodo no es compatible con SSD local, la creación de la instancia fallará. Configúrala comonvmesi los controladores de imagen de disco de arranque están optimizados para NVMe. De lo contrario, configúrala comoscsi. Especifica esta marca y un valor correspondiente una vez para cada partición de SSD local.
REST
Usa el método instances.insert para aprovisionar una VM en un grupo de nodos de usuario único:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/VM_ZONE/instances
{ "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME", "scheduling": { "onHostMaintenance": MAINTENANCE_POLICY, "automaticRestart": RESTART_ON_FAILURE, "nodeAffinities": [ { "key": "compute.googleapis.com/node-group-name", "operator": "IN", "values": [ "GROUP_NAME" ] } ] }, "networkInterfaces": [ { "network": "global/networks/NETWORK", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" } ], "guestAccelerators": [ { "acceleratorType": GPU_TYPE, "acceleratorCount": GPU_COUNT } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }, { "type":"SCRATCH", "initializeParams":{ "diskType":"zones/LOCAL_SSD_ZONE/diskTypes/local-ssd" }, "autoDelete":true, "interface":"SSD_INTERFACE" } ] }
Reemplaza lo siguiente:
PROJECT_ID: El ID del proyecto.VM_ZONE: Es la zona en la que se aprovisionará la VM de usuario único.MACHINE_TYPE_ZONE: Es la zona del tipo de máquina.MACHINE_TYPE: Es el tipo de máquina de la VM de usuario único. Usa el métodomachineTypes.lista fin de obtener una lista de los tipos de máquinas disponibles para el proyecto.VM_NAME: es el nombre de la nueva VM de usuario único.MAINTENANCE_POLICY: Especifica el comportamiento de reinicio de las VM de usuario único durante los eventos de mantenimiento. Establécela en uno de los siguientes valores:MIGRATE: La VM migra a otro nodo en el grupo de nodos durante los eventos de mantenimiento.TERMINATE: La VM se detuvo durante eventos de mantenimiento.
RESTART_ON_FAILURE: Indica si las VM de usuario única se reinician después de la detención. La ruta predeterminada estrue.GROUP_NAME: Es el nombre del grupo de nodos en el que se aprovisionará la VM.NETWORK: Es la URL del recurso de red para esta VM.REGION: Es la región que contiene la subred para esta VM.SUBNETWORK: Es la URL del recurso de subred para esta VM.GPU_TYPE: Es el tipo de GPU. Establece esta opción en uno de los tipos de acelerador especificados cuando se creó la plantilla de nodo.GPU_COUNT: Es la cantidad de GPU del total especificado por la plantilla de nodos que se adjuntarán a esta VM El valor predeterminado es1.IMAGE_PROJECT: Es el proyecto de imagen de la familia de imágenes.IMAGE_FAMILY: Es la familia de imágenes de la imagen que se usará para crear la VM.LOCAL_SSD_ZONE: Es la zona del SSD local.SSD_INTERFACE: Es el tipo de interfaz de SSD local. Configúralo comoNVMEsi los controladores de imagen de disco de arranque están optimizados para NVMe. De lo contrario, configúralo comoSCSI.
Aprovisiona un grupo de VM de usuario único
Los grupos de instancias administrados (MIG) te permiten aprovisionar un grupo de VM de usuario único idénticas. Las etiquetas de afinidad te permiten especificar el nodo de usuario único o grupo de nodos en el que se aprovisionará el grupo de VM de usuario único.
Para los MIG regionales, debes crear grupos de nodos en cada una de sus zonas y especificar afinidades de nodos para esos grupos en la plantilla de instancias del MIG regional.
gcloud
Usa el comando
gcloud compute instance-templates createa fin de crear una plantilla de grupo de instancias administrado para que un grupo de VM se cree en un grupo de nodos de usuario único:gcloud compute instance-templates create INSTANCE_TEMPLATE \ --machine-type=MACHINE_TYPE \ --image-project=IMAGE_PROJECT \ --image-family=IMAGE_FAMILY \ --node-group=GROUP_NAME \ [--accelerator type=GPU_TYPE,count=GPU_COUNT \] [--local-ssd interface=SSD_INTERFACE]
Reemplaza lo siguiente:
INSTANCE_TEMPLATE: Es el nombre de la plantilla de instancias nueva.MACHINE_TYPE: Es el tipo de máquina de la VM de usuario único. Usa el comandogcloud compute machine-types lista fin de obtener una lista de los tipos de máquinas disponibles para el proyecto.IMAGE_PROJECT: Es el proyecto de imagen de la familia de imágenes.IMAGE_FAMILY: Es la familia de imágenes de la imagen que se usará para crear la VM.GROUP_NAME: Es el nombre del grupo de nodos en el que se aprovisionará la VM. Como alternativa, si deseas usar esta plantilla de instancias para crear un MIG regional que exista en más de una zona, usa la marca--node-affinity-filea fin de realizar las siguientes acciones: especificar una lista de valores para los grupos de nodos del MIG regionalGPU_TYPE: Es el tipo de GPU. Establece esta opción en uno de los tipos de acelerador especificados cuando se creó la plantilla de nodo.GPU_COUNT: Es la cantidad de GPU del total especificado por la plantilla de nodos que se adjuntarán a esta VM El valor predeterminado es1.SSD_INTERFACE: Es el tipo de interfaz de SSD local. Configúralo comonvmesi los controladores de imagen de disco de arranque están optimizados para NVMe. De lo contrario, configúralo comoscsi. Especifica esta marca y un valor correspondiente una vez para cada partición de SSD local.
Usa el comando
gcloud compute instance-groups managed createpara crear un grupo de instancias administrado dentro de tu grupo de nodos de usuario único:gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --size=SIZE \ --template=INSTANCE_TEMPLATE \ --zone=ZONE
Reemplaza lo siguiente:
INSTANCE_GROUP_NAME: El nombre de este grupo de instanciasSIZE: es la cantidad de VM que se incluirán en este grupo de instancias. Tu grupo de nodos debe tener suficientes recursos para admitir las instancias en este grupo de instancias administrado Usa el escalador automático de grupos de instancias administrados para administrar de forma automática el tamaño de los grupos de instancias administrados.INSTANCE_TEMPLATE: Es el nombre de la plantilla de instancias que se usará para crear este MIG. La plantilla debe tener una o más etiquetas de afinidad de nodos que apunten a los grupos de nodos adecuados.ZONE: Es la zona en la que se creará el grupo de instancias administrado. En un MIG regional, reemplaza la marca--zonepor la marca--regiony especifica una región. También agrega la marca--zonespara especificar todas las zonas en las que existen los grupos de nodos.
REST
Usa el método
instanceTemplates.insertpara crear una plantilla de grupo de instancias administrado dentro de tu grupo de nodos de usuario único:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/TEMPLATE_ZONE/instance-templates { "name": "INSTANCE_TEMPLATE", "properties": { "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "scheduling": { "nodeAffinities": [ { "key": "compute.googleapis.com/node-group-name", "operator": "IN", "values": [ "GROUP_NAME" ] } ] }, "networkInterfaces": [ { "network": "global/networks/NETWORK", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" } ], "guestAccelerators": [ { "acceleratorType": GPU_TYPE, "acceleratorCount": GPU_COUNT } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }, { "type":"SCRATCH", "initializeParams":{ "diskType":"zones/LOCAL_SSD_ZONE/diskTypes/local-ssd" }, "autoDelete":true, "interface":"SSD_INTERFACE" } ] } }Reemplaza lo siguiente:
PROJECT_ID: El ID del proyecto.TEMPLATE_ZONE: Es la zona en la que se creará la plantilla de instancias.INSTANCE_TEMPLATE: Es el nombre de la planilla nuevaMACHINE_TYPE_ZONE: Es la zona del tipo de máquina.MACHINE_TYPE: Es el tipo de máquina de la VM de usuario único. Usa el métodomachineTypes.lista fin de obtener una lista de los tipos de máquinas disponibles para el proyecto.GROUP_NAME: Es el nombre del grupo de nodos en el que se aprovisionará la VM. Si deseas usar esta plantilla de instancias para crear un MIG regional que existe en más de una zona, especifica una lista de grupos de nodos que existen en las mismas zonas que las del MIG regional.NETWORK: Es la URL del recurso de red para esta plantilla de instancias.REGION: Es la región que contiene la subred para esta plantilla de instancias.SUBNETWORK: Es la URL del recurso de subred para esta plantilla de instancias.GPU_TYPE: Es el tipo de GPU. Establece esta opción en uno de los tipos de acelerador especificados cuando se creó la plantilla de nodo.GPU_COUNT: La cantidad de GPU del total especificado por la plantilla de nodos que se adjuntarán a esta VM El valor predeterminado es1.IMAGE_PROJECT: Es el proyecto de imagen de la familia de imágenes.IMAGE_FAMILY: Es la familia de imágenes de la imagen que se usará para crear la VM.LOCAL_SSD_ZONE: Es la zona del SSD local.SSD_INTERFACE: Es el tipo de interfaz de SSD local. Configúralo comoNVMEsi los controladores de imagen de disco de arranque están optimizados para NVMe. De lo contrario, configúralo comoSCSI.
Usa el método
instanceGroupManagers.insertpara crear un MIG dentro del grupo de nodos de usuario único en función de la plantilla de instancias creada con anterioridad. O bien, si deseas crear un MIG regional, usa el métodoregionInstanceGroupManagers.inserty especifica la región y las zonas de todos los grupos de nodos como se especifica en el plantilla de instancias.Por ejemplo, para crear un MIG zonal, usa la siguiente solicitud:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "baseInstanceName": "NAME_PREFIX", "name": "INSTANCE_GROUP_NAME", "targetSize": SIZE, "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE" }Reemplaza lo siguiente:
PROJECT_ID: El ID del proyecto.ZONE: Es la zona en la que se creará el grupo de instancias administrado.NAME_PREFIX: Es el nombre del prefijo para cada una de las instancias en el grupo de instancias administrado.INSTANCE_GROUP_NAME: es el nombre del grupo de instancias.SIZE: es la cantidad de VM que se incluirán en este grupo de instancias. Tu grupo de nodos debe tener suficientes recursos para admitir las instancias en este grupo de instancias administrado Usa el escalador automático de grupos de instancias administrados para administrar de forma automática el tamaño de los grupos de instancias administrados.INSTANCE_TEMPLATE: Es la URL de la plantilla de instancias que se usará para crear este grupo. La plantilla debe tener una etiqueta de afinidad de nodo que apunte al grupo de nodos adecuado.
Configura etiquetas de afinidad de nodo
Las etiquetas de afinidad de nodo te permiten agrupar grupos de nodos de forma lógica y programar VM en un conjunto específico de grupos de nodos. También puedes usar etiquetas de afinidad de nodo para programar VM en grupos de nodos en diferentes zonas y mantener los grupos de nodos en un grupo lógico. El siguiente procedimiento es un ejemplo del uso de etiquetas de afinidad para asociar VM con un grupo de nodos específico que se usa en cargas de trabajo de producción. En este ejemplo, se muestra cómo programar una sola VM, pero también puedes usar grupos de instancias administrados para programar un grupo de VM.
gcloud
Usa el comando
gcloud compute sole-tenancy node-templates createa fin de crear una plantilla de nodo con un conjunto de etiquetas de afinidad para una carga de trabajo de producción:gcloud compute sole-tenancy node-templates create prod-template \ --node-type=n1-node-96-624 \ --node-affinity-labels workload=frontend,environment=prod
Usa el comando
gcloud compute sole-tenancy node-templates describepara ver las etiquetas de afinidad de nodo asignadas a la plantilla de nodo.Usa el comando
gcloud compute sole-tenancy node-groups createpara crear un grupo de nodos que use la plantilla de producción:gcloud compute sole-tenancy node-groups create prod-group \ --node-template=prod-template \ --target-size=1
Para las VM de producción, crea un archivo
node-affinity-prod.jsona fin de especificar la afinidad de las VM de producción. Por ejemplo, puedes crear un archivo que especifique que las VM se ejecutan solo en nodos con las afinidadesworkload=frontendyenvironment=prod. Crea el archivo de afinidad de nodo mediante Cloud Shell o créalo en la ubicación que elijas.[ { "key" : "workload", "operator" : "IN", "values" : ["frontend"] }, { "key" : "environment", "operator" : "IN", "values" : ["prod"] } ]Usa el archivo
node-affinity-prod.jsoncon el comandogcloud compute instances createpara programar una VM en el grupo de nodos con etiquetas de afinidad coincidentes.gcloud compute instances create prod-vm \ --node-affinity-file node-affinity-prod.json \ --machine-type=n1-standard-2
Usa el comando
gcloud compute instances describey verifica el camposchedulingpara ver las afinidades de nodo asignadas a la VM.
Configura etiquetas de antiafinidad de nodo
Las etiquetas de afinidad de nodo se pueden configurar como etiquetas de antiafinidad para evitar que las VM se ejecuten en nodos específicos. Por ejemplo, puedes usar etiquetas de antiafinidad para evitar que las VM que usas con fines de desarrollo se programen en los mismos nodos que tu VM de producción. En el siguiente ejemplo, se muestra cómo usar etiquetas de afinidad para evitar que las VM se ejecuten en grupos de nodos específicos. En este ejemplo, se muestra cómo programar una sola VM, pero también puedes usar grupos de instancias administrados para programar un grupo de VM.
gcloud
En el caso de las VM de desarrollo, debes especificar su afinidad. Para ello, crea un
node-affinity-dev.jsoncon Cloud Shell o créalo en una ubicación que elijas. Por ejemplo, crea un archivo que configure las VM para que se ejecuten en cualquier grupo de nodos con la afinidadworkload=frontend, siempre que no seaenvironment=prod:[ { "key" : "workload", "operator" : "IN", "values" : ["frontend"] }, { "key" : "environment", "operator" : "NOT_IN", "values" : ["prod"] } ]Usa el archivo
node-affinity-dev.jsoncon el comandogcloud compute instances createpara crear la VM de desarrollo:gcloud compute instances create dev-vm \ --node-affinity-file=node-affinity-dev.json \ --machine-type=n1-standard-2
Usa el comando
gcloud compute instances describey verifica el camposchedulingpara ver las antiafinidades de nodo asignadas a la VM.
¿Qué sigue?
- Para obtener información sobre los precios de los nodos de usuario único, consulta Precios de nodos de usuario único.
Para obtener información sobre cómo habilitar el ajuste de escala automático en grupos de nodos de usuario único, consulta Escalador automático de grupo de nodos.
Para obtener más información sobre cómo usar licencias existentes en Google Cloud, consulta Usa licencias existentes.
Para obtener más información sobre los nodos de usuario único, consulta Nodos de usuario único.