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 selecionando uma das seguintes opções:
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 as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
-
Ativar a virtualização aninhada diretamente em uma nova VM
Permissões exigidas para a tarefa
Para executar esta tarefa, é necessário ter as seguintes permissões:
-
Para ativar a virtualização aninhada diretamente em uma nova VM, você precisa das permissões
compute.instances.create
no projeto, pasta ou organização.
Ative a virtualização aninhada diretamente em uma VM usando o procedimento a seguir.
Crie uma VM L1 com virtualização aninhada ativada usando o seguinte comando gcloud compute instances create
:
gcloud compute instances createVM_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
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
Permissões exigidas para a tarefa
Para executar esta tarefa, é necessário ter as seguintes permissões:
-
Para ativar a virtualização aninhada diretamente em uma nova VM, você precisa das permissões
compute.instances.create
no projeto, pasta ou organização.
Ative a virtualização aninhada em uma VM atual usando o seguinte procedimento:
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.
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
Permissões exigidas para a tarefa
Para executar esta tarefa, é necessário ter as seguintes permissões:
compute.disks.create
no projeto, na pasta ou na organizaçãocompute.images.create
no projeto, na pasta ou na organizaçãocompute.disks.delete
no projeto, na pasta ou na organizaçãocompute.instances.create
no projeto, na pasta ou na organização
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 compute disks create
DISK_NAME \ --zone=ZONE \ --image-project=debian-cloud \ --image-family=debian-10Substitua:
DISK_NAME
: o nome do novo disco.ZONE
: a zona em que o disco será criado
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 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"Substitua:
IMAGE_NAME
: o nome da nova imagemDISK_NAME
: o nome do disco criado anteriormente.ZONE
: a zona em que a imagem será criada
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 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.
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 compute instances create
VM_NAME \ --zone=ZONE \ --min-cpu-platform "Intel Haswell" \ --imageIMAGE_NAME Substitua:
VM_NAME
: O nome da VM.ZONE
: a zona em que a VM será criadaIMAGE_NAME
: o nome da imagem criada anteriormente.
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