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:
Recomendada. Para habilitar la virtualización anidada directamente en una VM nueva o existente, configura el campo
enableNestedVirtualization
comotrue
mientras creas la VM o actualízala. Este es el método recomendado, ya que no requiere que crees una imagen personalizada ni uses la clave de licencia especial.A fin de habilitar la virtualización anidada, usa la clave de licencia especial. Para ello, crea un disco de arranque, crea una imagen personalizada con la clave de licencia de virtualización anidada especial y, luego, crea una VM que use esta imagen personalizada.
Antes de comenzar
-
Si aún no lo hiciste, configura la autenticación.
La autenticación es el proceso mediante el cual se 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:
Select the tab for how you plan to use the samples on this page:
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
-
Habilita la virtualización anidada directamente en una VM nueva
Permisos necesarios para esta tarea
Para realizar esta tarea, debes tener los siguientes permisos:
-
Para habilitar la virtualización anidada directamente en una VM nueva, necesitas los permisos
compute.instances.create
en el proyecto, la carpeta o la organización.
Habilita la virtualización anidada directamente en una VM mediante el siguiente procedimiento.
Crea una VM L1 con virtualización anidada habilitada mediante el siguiente comando gcloud compute instances create
:
gcloud compute instances createVM_NAME \ --enable-nested-virtualization \ --zone=ZONE \ --min-cpu-platform="Intel Haswell"
Reemplaza lo siguiente:
VM_NAME
: Es el nombre de la VM L1 nueva con la virtualización anidada habilitada.ZONE
: Es la zona para la nueva VM L1 con la virtualización anidada habilitada.
Crea una VM L1 con la virtualización anidada habilitada mediante el siguiente método instances.insert
:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /zones/ZONE /instances { ... "name": "VM_NAME ", ... "minCpuPlatform": "Intel Haswell", "advancedMachineFeatures": { "enableNestedVirtualization": true }, ... }
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyectoZONE
: Es la zona para la nueva VM L1 con la virtualización anidada habilitada.VM_NAME
: Es el nombre de la VM L1 nueva con la virtualización anidada habilitada.
Habilita la virtualización anidada en una VM existente.
Permisos necesarios para esta tarea
Para realizar esta tarea, debes tener los siguientes permisos:
-
Para habilitar la virtualización anidada directamente en una VM nueva, necesitas los permisos
compute.instances.create
en el proyecto, la carpeta o la organización.
Habilita la virtualización anidada en una VM existente mediante el siguiente método :
Exporta las propiedades de la VM mediante el siguiente comando
gcloud compute instances export
:gcloud compute instances export
VM_NAME \ --destination=YAML_FILE_PATH \ --zone=ZONE Reemplaza lo siguiente:
VM_NAME
: El nombre de la VM desde la que se exportarán las propiedadesYAML_FILE_PATH
: La ruta de acceso y el nombre de un archivo .yaml en el que se guardarán los datos de configuración exportadosZONE
: La zona que contiene la VM
En el archivo de configuración de VM que se guardó en FILE_PATH, actualiza el valor de
enableNestedVirtualization
. Si el valor no está en el archivo, agrega lo siguiente:advancedMachineFeatures: enableNestedVirtualization: true
Actualiza la VM con el valor de
enableNestedVirtualization
mediante el siguiente comandogcloud compute instances update-from-file
:gcloud compute instances update-from-file
VM_NAME \ --source=FILE_PATH \ --most-disruptive-allowed-action=RESTART \ --zone=ZONE Reemplaza lo siguiente:
VM_NAME
: El nombre de la VM que se actualizaráFILE_PATH
: La ruta de acceso al archivo de configuración de VM actualizadaZONE
: la zona que contiene la VM que se actualizará
Actualiza el valor de enableNestedVirtualization
mediante 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" }, ⋮ }
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyectoZONE
: La zona que contiene la VMVM_NAME
: El nombre de la VM desde la que se exportarán las propiedades
Habilita la virtualización anidada con la clave de licencia especial
Permisos necesarios para esta tarea
Para realizar esta tarea, debes tener los siguientes permisos:
compute.disks.create
en el proyecto, la carpeta o la organizacióncompute.images.create
en el proyecto, la carpeta o la organizacióncompute.disks.delete
en el proyecto, la carpeta o la organizacióncompute.instances.create
en el proyecto, la carpeta o la organización
Puedes habilitar la virtualización anidada en VM si creas una imagen personalizada con una clave de licencia especial que habilita VMX en la VM L1. La clave de licencia no tiene cargos adicionales.
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 ydebian-10
para la familia de imágenes. Si ya tienes una instancia de VM con un disco existente, puedes omitir este paso.gcloud compute disks create
DISK_NAME \ --zone=ZONE \ --image-project=debian-cloud \ --image-family=debian-10Reemplaza lo siguiente:
DISK_NAME
: Es el nombre del disco nuevo.ZONE
: Es la zona en la que se creará la VM.
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", ... }Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyectoZONE
: Es la zona en la que se creará la VM.DISK_NAME
: Es el nombre del disco nuevo.
Crea una imagen personalizada con la clave de licencia especial que se requiere para la virtualización anidada.
gcloud compute images create
IMAGE_NAME \ --source-diskDISK_NAME \ --source-disk-zoneZONE \ --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"Reemplaza lo siguiente:
IMAGE_NAME
: Es el nombre de la imagen nueva.DISK_NAME
: Es el nombre del disco que se creó antes.ZONE
: Es la zona en la que se creará la VM.
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 ", ... }Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyectoIMAGE_NAME
: Es el nombre de la imagen nueva.ZONE
: Es la zona en la que se creará la VM.DISK_NAME
: Es el nombre del disco que se creó antes.
De forma opcional, borra el disco de origen después de crear la imagen con la licencia especial.
gcloud compute disks delete
DISK_NAME --zone=ZONE Reemplaza lo siguiente:
DISK_NAME
: Es el nombre del disco que se borrará.ZONE
: Es la zona que contiene el disco que se borrará.
DELETE https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /zones/ZONE /disks/DISK_NAME Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyectoZONE
: Es la zona que contiene el disco que se borrará.DISK_NAME
: Es el nombre del disco que se borrará.
Crea una VM que use la imagen nueva con la licencia especial. La plataforma de CPU mínima debe ser
"Intel Haswell"
.gcloud compute instances create
VM_NAME \ --zone=ZONE \ --min-cpu-platform "Intel Haswell" \ --imageIMAGE_NAME Reemplaza lo siguiente:
VM_NAME
: El nombre de la VMZONE
: Es la zona en la que se creará la VM.IMAGE_NAME
: Es el nombre de la imagen que se creó antes.
POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /zones/ZONE /instances { ... "name": "VM_NAME ", "minCpuPlatform": "Intel Haswell", "disks": [ { "initializeParams": { "sourceImage": "IMAGE_NAME " } } ] ... }Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyectoVM_NAME
: El nombre de la VMZONE
: Es la zona en la que se creará la VM.IMAGE_NAME
: Es el nombre de la imagen que se creó antes.
Confirma que la virtualización anidada esté habilitada en la VM
Conectarte a la instancia de VM
gcloud compute ssh
VM_NAME Reemplaza
VM_NAME
por el nombre de la instancia a la que deseas conectarte.Confirma que esté habilitada la virtualización anidada. Cualquier respuesta que no sea
0
confirmará que la virtualización anidada está habilitada.grep -cw vmx /proc/cpuinfo