Trae tu propia licencia con nodos de instancia única

Compute Engine ofrece la capacidad de usar tu propia licencia (BYOL) con nodos de instancia única para admitir los requisitos de licencia que limitan el uso de hardware físico. En particular, puedes usar nodos de instancia única a fin de importar una imagen personalizada en Compute Engine. Usa la imagen para iniciar una VM y habilita reinicios locales a fin de que la VM se reinicie en el mismo servidor físico siempre que sea posible. Si usas nodos de instancia única para alojar las VM, te aseguras de que estas se ejecuten en hardware dedicado por completo a la vez que se limita el uso principal físico. Compute Engine también ofrece informes de uso del servidor a fin de hacer un seguimiento de la información de hardware físico para el uso de la licencia.

Para obtener una descripción general de esta característica, incluidos los requisitos y las consideraciones sobre las cargas de trabajo, consulta la página Descripción general.

Antes de comenzar

Revisa el SO compatible y los requisitos de licencia

Antes de comenzar este proceso, asegúrate de que tu SO sea compatible y de que revisaste la sección Licencias y activación. Eres responsable de garantizar que tus acuerdos de licencia te permitan el uso de software en el entorno BYOL como se describe en este documento. También debes preparar tu imagen de invitado para BYOL según los acuerdos.

Si tienes preguntas o necesitas asistencia adicional, comunícate con tu distribuidor de licencias por preguntas sobre licencias y con Asistencia de Google Cloud por preguntas sobre esta característica.

Revisa regiones compatibles

Esta característica solo está disponible en ciertas regiones. Consulta Precios y disponibilidad para ver la lista completa.

Considera tu carga de trabajo

Ciertas cargas de trabajo son más adecuadas para esta característica que otras. Revisa las Consideraciones de cargas de trabajo para obtener recomendaciones generales.

Crea un proyecto y cuota de solicitud nuevos

Si aún no tienes un proyecto, crea un proyecto nuevo.

La cuota de CPU para los proyectos nuevos se restringe a 100 CPU. Puede que esto no sea suficiente para tus necesidades. Si necesitas una cuota mayor para tu proyecto, puedes solicitar ajustes de cuota a través de la página Cuotas en GCP Console. Puede que necesites aumentos de cuota para otros recursos como direcciones IP, según tu configuración.

Habilita la API de Cloud Build

Esta característica usa el servicio Cloud Build para importar y crear imágenes de Compute Engine. Debes habilitar la API de Cloud Build para usar esta función.

Habilita la API de Cloud Build

Compute Engine también otorga las siguientes funciones a la cuenta de servicio de Cloud Build para que pueda importar imágenes a Compute Engine:

  • roles/iam.serviceAccountTokenCreator
  • roles/compute.admin
  • roles/iam.serviceAccountUser

Habilita Stackdriver Logging para el registro de auditoría

Si es necesario informar sobre el uso del servidor físico para la licencia, habilita la API de Stackdriver Logging antes de iniciar VM en nodos de instancia única. Esto te permite importar y ver la información de uso del servidor con BigQuery (muy recomendado).

Habilita la API de Stackdriver Logging

Cuando configuras el Logging, puedes aprovechar BigQuery a fin de hacer seguimiento de la información relevante, como el uso del conteo de núcleos físicos, para tus necesidades de licencia. Para obtener más detalles, consulta la página sobre cómo determinar el uso del servidor.

Crea un archivo de disco virtual

Debes tener un archivo de disco virtual existente (VMDK, VHD) para importar la imagen a Compute Engine. No puedes instalar un sistema operativo de forma directa en una VM a partir de una imagen de instalación, como iso, img, DVD, USB y etcétera. Tampoco puedes actualizar de forma local el SO en una VM de Compute Engine.

Los pasos para crear un archivo de disco virtual son distintos en función del entorno. Consulta la documentación adecuada según tu sistema operativo.

Importa un archivo de disco virtual

Para iniciar una VM con tu propia licencia, importa un disco virtual que contenga el SO que deseas usar. Usa la herramienta de línea de comandos de gcloud para importar el archivo. La herramienta de gcloud admite la importación de VHD o VMDK desde un depósito de Cloud Storage o desde una estación de trabajo local. Si el disco virtual se aloja en la máquina local, el proceso de importación subirá primero el archivo a un depósito de Cloud Storage antes de importar la imagen a Compute Engine.

Antes de importar el disco de la máquina virtual, descarga y ejecuta nuestra herramienta de comprobación previa en la máquina virtual. Esta herramienta de comprobación previa verifica que no existan incompatibilidades cuando migras a GCP.

Para obtener una explicación completa de la herramienta de importación de imágenes, consulta la página sobre cómo importar un disco virtual.

Cuando estés listo, ejecuta el siguiente comando gcloud para importar el disco virtual:

gcloud compute images import [IMAGE_NAME] \
    --source-file [SOURCE_FILE] \
    --os [OS]

en el que:

  • [IMAGE_NAME] es el nombre que quieres darle a esta imagen.
  • [SOURCE_FILE] es un archivo de disco virtual, alojado de forma local o almacenado en Cloud Storage. Si tu archivo de disco virtual es local, puedes usar una ruta de acceso absoluta o relativa. Si tu archivo de disco virtual ya se almacenó en Cloud Storage, el archivo debe existir en un depósito de almacenamiento en el mismo proyecto que se usa para el proceso de importación y debes especificar la ruta completa del archivo en el formato gs://[BUCKET_NAME]/[OBJECT_NAME].

  • [OS] es el sistema operativo basado en Windows del SOURCE_FILE. Los siguientes SO basados en Windows son compatibles:

    • windows-2008r2-byol
    • windows-2012-byol
    • windows-2012r2-byol
    • windows-2016-byol
    • windows-2019-byol
    • windows-7-byol
    • windows-8-1-x64-byol
    • windows-10-byol

Ten en cuenta que los archivos almacenados en Cloud Storage y las imágenes almacenadas en Compute Engine generan cargos. Una vez que hayas verificado que la imagen se importó de forma adecuada y que inicia sin problemas como una instancia de Compute Engine, puedes borrar el archivo del disco virtual de Cloud Storage.

Si se especifica un archivo local para el --source-file, la operación de carga puede tardar decenas de minutos en ejecutarse, según el tamaño del disco virtual y la velocidad de la conexión de red.

Después de crear la imagen, puedes compartirla con usuarios fuera del proyecto o la organización mediante funciones o permisos de IAM.

gcloud projects add-iam-policy-binding [PROJECT_ID] \
    --member user:[USER_EMAIL] \
    --role roles/compute.imageUser

En este caso, [PROJECT_ID] es el proyecto que posee la imagen para la que deseas otorgar acceso.

Entonces, el usuario puede acceder a esta imagen si especifica el ID del proyecto en el que se encuentra la imagen en sus solicitudes. Como en el siguiente ejemplo:

gcloud compute instances create my-vm \
    --custom-cpu 4 \
    --custom-memory 8 \
    --image https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/[IMAGE_NAME] \
    --zone us-central1-a \
    --node-affinity-file node-affinity-prod.json \
    --restart-on-failure \
    --maintenance-policy terminate

Inicia una instancia de VM con tu propia licencia

Después de importar una imagen, puedes iniciar una instancia de VM en un nodo de instancia única con la imagen importada y habilitar la característica de reinicio local si especificas la propiedad restart-node-on-minimal-servers. Esta propiedad garantiza que, si ocurre un evento de mantenimiento, la VM se reinicia en el mismo servidor físico, si es posible. Si el mismo servidor físico no está disponible, se crea uno nuevo y se agrega al grupo de nodos. Compute Engine informa el ID del servidor del servidor nuevo.

Para las cargas de trabajo de BYOL que no están relacionadas con el uso físico del núcleo o del socket según la naturaleza de los términos de productos y licencias, puedes usar nodos de instancia única y omitir la función de reinicio local. Esto garantiza que tus instancias de VM se dirijan a hardware dedicado, pero no minimiza la cantidad de servidores físicos subyacentes usados.

Sigue estos pasos para iniciar la instancia de VM (descrita en detalle a continuación):

  1. Si es necesario, crea una plantilla de nodos y habilita el reinicio local con Google Cloud Platform Console, la herramienta de línea de comandos de gcloud o la API.

  2. Crea un grupo de nodos con la plantilla nueva.

  3. Por último, crea VM en el grupo de nodos con la imagen importada.

Después de que las VM se programen en un nodo, se adhieren a las mismas etiquetas de afinidad físicas a través de reinicios y eventos de mantenimiento. Esto significa que, aunque el servidor físico subyacente puede cambiar, puedes usar los selectores de etiquetas para garantizar que ciertas VM estén siempre en los mismos nodos (con la afinidad de nodos correspondiente) o que ciertas VM nunca compartan el mismo nodo (antiafinidad de nodos).

Para tu comodidad, se agrega de forma automática una etiqueta de afinidad adicional (similar al nombre del nodo y al nombre del grupo de nodos) a todos los nodos de instancia única configurados con la opción restart-node-on-minimal-servers. Puedes incluir esta etiqueta en tu archivo de afinidad para asegurarte de que tus VM solo se inicien en los nodos con la característica restart-node-on-minimal-server habilitada. La etiqueta luce de la siguiente manera:

  • Clave: compute.googleapis.com/node-server-binding-type
  • Valor: restart-node-on-minimal-server

Console

  1. Crea una plantilla de nodos con la opción de reinicio de servidores mínimos.

    1. Ve a la página Crear una plantilla de nodos.

      Ir a la página Crear una plantilla de nodos

    2. Ingresa un nombre para la plantilla.
    3. Especifica la región donde planeas ejecutar tu grupo de nodos.
    4. Especifica el tipo de nodo que quieres que usen tus grupos de nodos. También puedes especificar el nodo más pequeño disponible, lo que permite que los grupos de nodos se ejecuten en cualquier tipo de nodo disponible.
    5. Si lo deseas, puedes especificar las etiquetas de afinidad de nodo para las instancias. Por ejemplo, puedes especificar las etiquetas workload=front-end y environment=prod.
    6. Expande Configuración avanzada de reinicio de nodos.
    7. Selecciona Servidores mínimos.
    8. Crea la plantilla de nodos.
  2. Aprovisiona un grupo de nodos con la plantilla de nodos.

    1. Ve a la página Crear un grupo de nodos.

      Ir a la página Crear un grupo de nodos

    2. Ingresa un nombre para el grupo.
    3. Especifica la zona en la que quieres ejecutar tu grupo de nodos. Debes tener una plantilla de nodo en la misma región.
    4. Especifica la plantilla de nodo que quieres usar.
    5. Especifica la cantidad de nodos que quieres ejecutar en el grupo. Puedes cambiar esta cantidad más adelante.
    6. Haz clic en Crear para terminar de crear tu grupo de nodos.
  3. Crea una instancia que se ejecute dentro de tu grupo de nodos o en nodos específicos. Si usaste etiquetas de afinidad de nodo específicas, puedes crear una instancia con el proceso normal y especificar la afinidad de nodo en la configuración de Instancia única. Para este ejemplo, crea las instancias directamente dentro de la página de detalles de tu grupo de nodos.

    1. Ve a la página Nodos de instancia única.

      Ir a la página Nodos de instancia única

    2. Haz clic en el nombre del grupo de nodos en el que quieres crear una instancia.
    3. Haz clic en Crear instancia para crear una instancia en cualquier lugar dentro de este grupo de nodos. Si quieres que tu instancia se ejecute en un nodo específico dentro del grupo, haz clic en el nombre de un nodo individual en este grupo para ver sus detalles. Luego, haz clic en Crear instancia para crear la instancia en ese nodo individual.
    4. Establece la configuración para tu instancia. Debido a que ya seleccionaste tu grupo de nodos o un nodo específico, la región, la zona y las etiquetas de afinidad de nodo predeterminadas ya están especificadas.
    5. Selecciona la pestaña Administración.
    6. En Política de disponibilidad > Mantenimiento en el host, selecciona Finalizar.

    7. En Reinicio automático, selecciona Activado (recomendado).

    8. Haz clic en Crear para terminar de crear tu instancia.

gcloud

  1. Crea una plantilla de nodos y configura la marca restart-node-on-minimal-servers. Si lo deseas, puedes elegir las etiquetas de afinidad de nodo para las instancias. Como en el siguiente ejemplo:

    gcloud compute sole-tenancy node-templates create my-node-template \
        --node-type n1-node-96-624 \
        --region us-east1 \
        --node-affinity-labels workload=front-end,environment=prod \
        --server-binding restart-node-on-minimal-servers
    
  2. Aprovisiona un grupo de nodos con la plantilla de nodos. Por ejemplo, el siguiente comando crea un grupo de dos instancias con la plantilla de nodos que se creó en el paso anterior:

     gcloud compute sole-tenancy node-groups create my-node-group \
         --node-template my-node-template \
         --target-size 2 \
         --zone us-east1-b
    
  3. Crea un archivo de afinidad de nodos que contenga las etiquetas de afinidad correspondientes del grupo de nodos. Esto garantiza que la VM se cree solo en nodos que contienen todas estas etiquetas. Como en el siguiente ejemplo:

     // CREATE AFFINITY LABEL FILE
     cat > node-affinity-prod.json
     [{
       "key" : "workload",
       "operator" : "IN",
       "values" : ["front-end"]
       },
       {
       "key" : "environment",
       "operator" : "IN",
        "values" : ["prod"]
      },
      {
        "key" : "compute.googleapis.com/node-server-binding-type",
        "operator" : "IN",
        "values" : "restart-node-on-minimal-server"
      }]
    
  4. Inicia una instancia de VM y especifica el archivo de etiquetas de afinidad. Por ejemplo, la siguiente solicitud crea una VM con 4 CPU y 8 GB de memoria con la imagen importada en la zona us-east1-b. Además, configura la marca --restart-on-failure- y una política de mantenimiento de terminate, que en este momento es la única política aceptable para VM con tu propia licencia.

     gcloud compute instances create my-vm \
         --custom-cpu 4 --custom-memory 8 \
         --image my-imported-image \
         --zone us-east1-b \
         --node-affinity-file node-affinity-prod.json \
         --restart-on-failure --maintenance-policy terminate
    

API

  1. Crea una plantilla de nodos y configura la propiedad RESTART_NODE_ON_MINIMAL_SERVERS. También puedes elegir las etiquetas de afinidad de nodo para las instancias. Como en el siguiente ejemplo:

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/nodeTemplates
    
    {
       "name": "[TEMPLATE_NAME]",
       "nodeType": "[NODE_TYPE]"
       "nodeAffinityLabels": {
          "[KEY]": "[VALUE]"
       },
       "serverBinding":
       {
         "type": "RESTART_NODE_ON_MINIMAL_SERVERS"
       }
    }
    

    en el que:

    • [PROJECT_ID] es el ID del proyecto.
    • [TEMPLATE_NAME] es un nombre para la plantilla de nodo nueva.
    • [NODE_TYPE] es el tipo de nodo que quieres usar para esta plantilla. Por ejemplo, puedes especificar el tipo de nodo n1-node-96-624 para crear un nodo con 96 CPU virtuales y 624 GB de memoria.
    • [KEY]:[VALUE] es una lista de etiquetas de afinidad separadas por comas.
    • [REGION] es la región en la que se usará esta plantilla.
  2. Después de crear la plantilla de nodo, crea un grupo de nodos. Usa el método compute.nodeGroups.insert:

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/nodeGroups?initialNodeCount=[TARGET_SIZE]
    
    {
     "nodeTemplate": "regions/[REGION]/nodeTemplates/[TEMPLATE_NAME]",
     "name": "[GROUP_NAME]"
    }
    

    en el que:

    • [PROJECT_ID] es el ID del proyecto.
    • [ZONE] es la zona en la que se encuentra este grupo de nodos. Esta zona debe estar en la misma región que la plantilla de nodos que usas.
    • [TARGET_SIZE] es el número de nodos que quieres crear en el grupo.
    • [REGION] es la región donde se encuentra la plantilla de nodo.
    • [TEMPLATE_NAME] es un nombre para la plantilla de nodo nueva.
    • [GROUP_NAME] es un nombre para el grupo de nodos nuevo.
    • [TEMPLATE_NAME] es el nombre de la plantilla de nodos que quieres usar para crear este grupo.
  3. Después de crear el grupo de nodos, puedes crear instancias dentro del grupo de nodos con el método compute.instances.insert. Especifica una entrada nodeAffinities que apunte al nombre de tu grupo de nodos. Por ejemplo, puedes crear una instancia con un tipo personalizado de máquina:

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances
    
    {
     "machineType": "zones/[ZONE]/machineTypes/custom-[VCPUS]-[MEMORY]",
     "name": "[INSTANCE_NAME]",
     "scheduling": {
      "nodeAffinities": [
       {
        "key": "compute.googleapis.com/node-server-binding-type",
        "operator": "IN",
        "values": [
         "restart-node-on-minimal-server"
        ]
       }
      ]
     },
     "networkInterfaces": [
      {
       "network": "global/networks/[NETWORK]",
       "subnetwork": "regions/[REGION]/subnetworks/[SUBNETWORK]"
      }
     ],
     "disks": [
      {
       "boot": true,
       "initializeParams": {
        "sourceImage": "projects/[IMAGE_PROJECT]/global/images/family/[IMAGE_FAMILY]"
       }
      }
     ]
    }
    

    en la que:

    • [PROJECT_ID] es el ID del proyecto.
    • [INSTANCE_NAME] es el nombre de la instancia nueva.
    • [ZONE] es la zona en la que se encuentra tu grupo de nodos.
    • [REGION] es la región en la que se encuentran la plantilla de nodos y la subred.
    • [IMAGE_FAMILY] es una de las familias de imágenes disponibles.
    • [IMAGE_PROJECT] es el proyecto de imagen al que pertenece esa familia de imágenes.
    • [GROUP_NAME] es el nombre del grupo de nodos en el que quieres ubicar esta instancia.
    • [VCPUS] es la cantidad de CPU virtuales que quieres usar con esta instancia.
    • [MEMORY] es la cantidad de memoria para la instancia en MB. Por ejemplo, puedes especificar 5376MB.
    • [NETWORK] es el nombre de la red a la que quieres conectar tu instancia.
    • [SUBNETWORK] es el nombre de la subred a la que quieres conectar tu instancia.

Qué sigue

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Compute Engine