Neste documento, descrevemos como ativar a virtualização aninhada em uma instância de máquina virtual (VM) e como confirmar que é possível criar uma VM aninhada. Ative a virtualização aninhada em uma VM usando um dos seguintes métodos:
Recomendado. Ative a virtualização aninhada diretamente em uma VM nova ou atual definindo o campo
enableNestedVirtualization
comotrue
ao criar a VM ou atualizando a VM. Esse é o método recomendado porque não exige que você crie uma imagem personalizada ou use a chave de licença especial.Ative a virtualização aninhada usando a chave de licença especial criando um disco de inicialização, criando uma imagem personalizada com a chave de licença de virtualização aninhada especial e criando uma VM que use a imagem personalizada.
Antes de começar
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud.
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine da seguinte maneira.
Selecione a guia para como planeja usar as amostras nesta página:
gcloud
-
Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:
gcloud init
- Defina uma região e uma zona padrão.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.
Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:
gcloud init
-
Ativar a virtualização aninhada diretamente em uma nova VM
Ative a virtualização aninhada diretamente em uma VM usando o procedimento a seguir.
gcloud
Crie uma VM L1 com virtualização aninhada ativada usando o seguinte comando gcloud compute instances create
:
gcloud compute instances create VM_NAME \ --enable-nested-virtualization \ --zone=ZONE \ --min-cpu-platform="Intel Haswell"
Substitua:
VM_NAME
: o nome da nova VM L1 com a virtualização aninhada ativada.ZONE
: a zona da nova VM L1 com a virtualização aninhada ativada
REST
Crie uma VM L1 com virtualização aninhada ativada usando o seguinte 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 }, ... }
Substitua:
PROJECT_ID
: o ID do projeto;ZONE
: a zona da nova VM L1 com a virtualização aninhada ativadaVM_NAME
: o nome da nova VM L1 com a virtualização aninhada ativada.
Ativar a virtualização aninhada diretamente em uma VM
Ative a virtualização aninhada em uma VM atual usando o seguinte procedimento:
gcloud
Exporte as propriedades da VM usando o seguinte comando
gcloud compute instances export
:gcloud compute instances export VM_NAME \ --destination=YAML_FILE_PATH \ --zone=ZONE
Substitua:
VM_NAME
: o nome da VM da qual as propriedades serão exportadasYAML_FILE_PATH
: o caminho e o nome de um arquivo .yaml em que os dados de configuração exportados serão salvosZONE
: a zona que contém a VM.
No arquivo de configuração da VM que foi salvo em FILE_PATH, atualize o valor de
enableNestedVirtualization
. Se o valor não estiver no arquivo, adicione o seguinte:advancedMachineFeatures: enableNestedVirtualization: true
Atualize a VM com o valor de
enableNestedVirtualization
usando o seguinte comandogcloud compute instances update-from-file
:gcloud compute instances update-from-file VM_NAME \ --source=FILE_PATH \ --most-disruptive-allowed-action=RESTART \ --zone=ZONE
Substitua:
VM_NAME
: o nome da VM a ser atualizada.FILE_PATH
: o caminho para o arquivo de configuração da VM atualizado.ZONE
: a zona que contém a VM a ser atualizada.
REST
Atualize o valor de enableNestedVirtualization
usando o seguinte
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" }, ⋮ }
Substitua:
PROJECT_ID
: o ID do projetoZONE
: a zona que contém a VM.VM_NAME
: o nome da VM da qual exportar as propriedades
Ativar a virtualização aninhada usando a chave de licença especial
Para ativar a virtualização aninhada na VM, crie uma imagem personalizada com uma chave de licença especial que ativa VMX na VM L1. A chave de licença não gera cobrança adicional.
Crie um disco de inicialização a partir de uma imagem pública ou de uma imagem personalizada. O exemplo a seguir usa
debian-cloud
para o projeto de imagem edebian-10
para a família de imagens. Se você já tiver uma instância de VM com um disco atual, pule esta etapa.gcloud
gcloud compute disks create DISK_NAME \ --zone=ZONE \ --image-project=debian-cloud \ --image-family=debian-10
Substitua:
DISK_NAME
: o nome do novo disco.ZONE
: a zona em que o disco será criado
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", ... }
Substitua:
PROJECT_ID
: o ID do projeto;ZONE
: a zona em que o disco será criadoDISK_NAME
: o nome do novo disco.
Crie uma imagem personalizada com a chave de licença especial necessária para a virtualização aninhada.
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"
Substitua:
IMAGE_NAME
: o nome da nova imagemDISK_NAME
: o nome do disco criado anteriormente.ZONE
: a zona em que a imagem será criada
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", ... }
Substitua:
PROJECT_ID
: o ID do projeto;IMAGE_NAME
: o nome da nova imagemZONE
: a zona em que a imagem será criadaDISK_NAME
: o nome do disco criado anteriormente.
Se quiser, exclua o disco de origem depois de criar a imagem com a licença especial.
gcloud
gcloud compute disks delete DISK_NAME --zone=ZONE
Substitua:
DISK_NAME
: o nome do disco que será excluído.ZONE
: a zona que contém o disco a ser excluído.
REST
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
Substitua:
PROJECT_ID
: o ID do projeto;ZONE
: a zona que contém o disco a ser excluído.DISK_NAME
: o nome do disco que será excluído.
Crie uma VM que use a nova imagem com a licença especial. A plataforma mínima de CPU precisa ser
"Intel Haswell"
.gcloud
gcloud compute instances create VM_NAME \ --zone=ZONE \ --min-cpu-platform "Intel Haswell" \ --image IMAGE_NAME
Substitua:
VM_NAME
: O nome da VM.ZONE
: a zona em que a VM será criadaIMAGE_NAME
: o nome da imagem criada 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" } } ] ... }
Substitua:
PROJECT_ID
: o ID do projeto;VM_NAME
: O nome da VM.ZONE
: a zona em que a VM será criadaIMAGE_NAME
: o nome da imagem criada anteriormente.
Confirmar que a virtualização aninhada está ativada na VM
Conecte-se à instância de VM.
gcloud compute ssh VM_NAME
Substitua
VM_NAME
pelo nome da VM a ser conectada.Confirme se a virtualização aninhada está ativada. Qualquer resposta além de
0
confirma que a virtualização aninhada está ativada.grep -cw vmx /proc/cpuinfo