Habilitar la virtualización anidada


En este documento se describe cómo habilitar la virtualización anidada en una instancia de máquina virtual (VM) y cómo confirmar que puedes crear una VM anidada. Habilita la virtualización anidada en una VM mediante uno de los siguientes métodos:

  • Recomendado. Habilita la virtualización anidada directamente en una máquina virtual nueva o en una que ya tengas. Para ello, asigna el valor true al campo enableNestedVirtualization al crear la máquina virtual o actualízala. Este es el método recomendado porque no requiere que crees una imagen personalizada ni que uses la clave de licencia especial.

  • Para habilitar la virtualización anidada, usa la clave de licencia especial creando un disco de arranque, una imagen personalizada con la clave de licencia especial de virtualización anidada y, a continuación, una VM que use la imagen personalizada.

Antes de empezar

  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos 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:

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Habilitar la virtualización anidada directamente en una máquina virtual nueva

Habilita la virtualización anidada directamente en una VM siguiendo este procedimiento.

gcloud

Crea una VM de nivel 1 con la virtualización anidada habilitada mediante el siguiente gcloud compute instances create comando:

gcloud compute instances create VM_NAME \
  --enable-nested-virtualization \
  --zone=ZONE \
  --min-cpu-platform="Intel Haswell"

Haz los cambios siguientes:

  • VM_NAME: el nombre de la nueva VM de nivel 1 con la virtualización anidada habilitada

  • ZONE: la zona de la nueva VM L1 con virtualización anidada habilitada

REST

Crea una VM de nivel 1 con la virtualización anidada habilitada mediante el siguiente instances.insert método:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  ...
  "name": "VM_NAME",
  ...
  "minCpuPlatform": "Intel Haswell",
  "advancedMachineFeatures": {
    "enableNestedVirtualization": true
  },
  ...
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto

  • ZONE: la zona de la nueva VM L1 con virtualización anidada habilitada

  • VM_NAME: el nombre de la nueva VM de nivel 1 con la virtualización anidada habilitada

Habilitar la virtualización anidada directamente en una VM

Para habilitar la virtualización anidada en una VM, sigue este procedimiento.

gcloud

  1. Exporta las propiedades de la VM con el siguiente comando gcloud compute instances export:

    gcloud compute instances export VM_NAME \
      --destination=YAML_FILE_PATH \
      --zone=ZONE
    

    Haz los cambios siguientes:

    • VM_NAME: el nombre de la VM de la que se van a exportar las propiedades

    • YAML_FILE_PATH: la ruta y el nombre de archivo de un archivo .yaml en el que guardar los datos de configuración exportados

    • ZONE: la zona que contiene la VM

  2. En el archivo de configuración de la VM que has guardado en FILE_PATH, actualiza el valor de enableNestedVirtualization. Si el valor no está en el archivo, añada lo siguiente:

    advancedMachineFeatures:
      enableNestedVirtualization: true
    
  3. Actualiza la VM con el valor de enableNestedVirtualization mediante el siguiente gcloud compute instances update-from-filecomando:

    gcloud compute instances update-from-file VM_NAME \
      --source=FILE_PATH \
      --most-disruptive-allowed-action=RESTART \
      --zone=ZONE
    

    Haz los cambios siguientes:

    • VM_NAME: el nombre de la VM que se va a actualizar

    • FILE_PATH: la ruta al archivo de configuración de la VM actualizado

    • ZONE: la zona que contiene la VM que se va a actualizar

REST

Actualiza el valor de enableNestedVirtualization con el siguiente método instances.update:

PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART

{
  ⋮
  "advanced_machine_features": {
    ⋮
    "enableNestedVirtualization": "true"
  },
  ⋮
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto

  • ZONE: la zona que contiene la VM

  • VM_NAME: el nombre de la VM de la que se van a exportar las propiedades

Habilitar la virtualización anidada con la clave de licencia especial

Puedes habilitar la virtualización anidada en una VM creando una imagen personalizada con una clave de licencia especial que habilite VMX en la VM de nivel 1. La clave de licencia no conlleva cargos adicionales.

  1. Crea un disco de arranque a partir de una imagen pública o de una imagen personalizada. En el siguiente ejemplo se usa debian-cloud para el proyecto de imagen y debian-10 para la familia de imágenes. Si ya tienes una instancia de VM con un disco, puedes saltarte este paso.

    gcloud

    gcloud compute disks create DISK_NAME \
      --zone=ZONE \
      --image-project=debian-cloud \
      --image-family=debian-10
    

    Haz los cambios siguientes:

    • DISK_NAME: el nombre del nuevo disco

    • ZONE: la zona en la que se creará el disco.

    REST

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    
    {
      ...
      "name": "DISK_NAME",
      "sourceImage": "projects/debian-cloud/global/images/family/debian-10",
      ...
    }
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID del proyecto

    • ZONE: la zona en la que se creará el disco.

    • DISK_NAME: el nombre del nuevo disco

  2. Crea una imagen personalizada con la clave de licencia especial que se necesita para la virtualización anidada.

    gcloud

    gcloud compute images create IMAGE_NAME \
      --source-disk DISK_NAME \
      --source-disk-zone ZONE \
      --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
    

    Haz los cambios siguientes:

    • IMAGE_NAME: el nombre de la nueva imagen

    • DISK_NAME: el nombre del disco creado anteriormente

    • ZONE: la zona en la que se creará la imagen

    REST

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images
    
    {
      ...
      "licenses": ["projects/vm-options/global/licenses/enable-vmx"],
      "name": "IMAGE_NAME",
      "sourceDisk": "zones/ZONE/disks/DISK_NAME",
      ...
    }
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID del proyecto

    • IMAGE_NAME: el nombre de la nueva imagen

    • ZONE: la zona en la que se creará la imagen

    • DISK_NAME: el nombre del disco creado anteriormente

  3. También puedes eliminar el disco de origen después de crear la imagen con la licencia especial.

    gcloud

    gcloud compute disks delete DISK_NAME --zone=ZONE
    

    Haz los cambios siguientes:

    • DISK_NAME: el nombre del disco que se va a eliminar

    • ZONE: la zona que contiene el disco que se va a eliminar.

    REST

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID del proyecto

    • ZONE: la zona que contiene el disco que se va a eliminar.

    • DISK_NAME: el nombre del disco que se va a eliminar

  4. Crea una VM que use la nueva imagen con la licencia especial. La plataforma de CPU mínima debe ser "Intel Haswell".

    gcloud

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --min-cpu-platform "Intel Haswell" \
        --image IMAGE_NAME
    

    Haz los cambios siguientes:

    • VM_NAME: el nombre de la VM

    • ZONE: la zona en la que se creará la VM

    • IMAGE_NAME: el nombre de la imagen creada anteriormente

    REST

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    
    {
      ...
      "name": "VM_NAME",
      "minCpuPlatform": "Intel Haswell",
      "disks": [
        {
          "initializeParams": {
            "sourceImage": "IMAGE_NAME"
          }
        }
      ]
      ...
    }
    
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID del proyecto

    • VM_NAME: el nombre de la VM

    • ZONE: la zona en la que se creará la VM

    • IMAGE_NAME: el nombre de la imagen creada anteriormente

Confirma que la virtualización anidada esté habilitada en la VM

  1. Conéctate a la instancia de VM.

    gcloud compute ssh VM_NAME
    

    Sustituye VM_NAME por el nombre de la VM a la que quieras conectarte.

  2. Confirma que la virtualización anidada está habilitada. Si se devuelve cualquier otra respuesta, 0 se confirma que la virtualización anidada está habilitada.

    grep -cw vmx /proc/cpuinfo
    

Siguientes pasos