Habilitar virtualização aninhada


Este documento descreve como habilitar a virtualização aninhada em uma instância de máquina virtual (VM) e como confirmar se você pode criar uma VM aninhada. Habilite a virtualização aninhada em uma VM usando um dos seguintes métodos:

  • Recomendado . Habilite a virtualização aninhada diretamente em uma VM nova ou existente definindo o campo enableNestedVirtualization como true ao criar a VM ou atualizando a VM. Este é o método recomendado porque não requer a criação de uma imagem personalizada ou o uso da chave de licença especial.

  • Habilite 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 especial de virtualização aninhada e, em seguida, criando uma VM que usa a imagem personalizada.

Antes de começar

  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Habilite a virtualização aninhada diretamente em uma nova VM

Habilite a virtualização aninhada diretamente em uma VM usando o procedimento a seguir.

gcloud

Crie uma VM L1 com virtualização aninhada habilitada 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 o seguinte:

  • VM_NAME : o nome da nova VM L1 com virtualização aninhada habilitada

  • ZONE : a zona para a nova VM L1 com virtualização aninhada habilitada

DESCANSAR

Crie uma VM L1 com virtualização aninhada habilitada 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 o seguinte:

  • PROJECT_ID : o ID do projeto

  • ZONE : a zona para a nova VM L1 com virtualização aninhada habilitada

  • VM_NAME : o nome da nova VM L1 com virtualização aninhada habilitada

Habilite a virtualização aninhada diretamente em uma VM existente

Habilite a virtualização aninhada em uma VM existente usando o procedimento a seguir.

gcloud

  1. 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 o seguinte:

    • VM_NAME : o nome da VM da qual exportar propriedades

    • YAML_FILE_PATH : o caminho e o nome do arquivo .yaml no qual salvar os dados de configuração exportados

    • ZONE : a zona que contém a VM

  2. 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
    
  3. Atualize a VM com o valor de enableNestedVirtualization usando o seguinte comando gcloud compute instances update-from-file :

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

    Substitua o seguinte:

    • 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

DESCANSAR

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 o seguinte:

  • PROJECT_ID : o ID do projeto

  • ZONE : a zona que contém a VM

  • VM_NAME : o nome da VM da qual exportar propriedades

Habilite a virtualização aninhada usando a chave de licença especial

Você pode habilitar a virtualização aninhada na VM criando uma imagem personalizada com uma chave de licença especial que habilita o VMX na VM L1. A chave de licença não acarreta custos adicionais.

  1. Crie um disco de inicialização a partir de uma imagem pública ou personalizada. O exemplo a seguir usa debian-cloud para o projeto de imagem e debian-10 para a família de imagens. Se você já tiver uma instância de VM com um disco existente, ignore esta etapa.

    gcloud

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

    Substitua o seguinte:

    • DISK_NAME : o nome do novo disco

    • ZONE : a zona para criar o disco

    DESCANSAR

    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 o seguinte:

    • PROJECT_ID : o ID do projeto

    • ZONE : a zona para criar o disco

    • DISK_NAME : o nome do novo disco

  2. Crie uma imagem personalizada com a chave de licença especial necessária para 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 o seguinte:

    • IMAGE_NAME : o nome da nova imagem

    • DISK_NAME : o nome do disco criado anteriormente

    • ZONE : a zona para criar a imagem

    DESCANSAR

    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 o seguinte:

    • PROJECT_ID : o ID do projeto

    • IMAGE_NAME : o nome da nova imagem

    • ZONE : a zona para criar a imagem

    • DISK_NAME : o nome do disco criado anteriormente

  3. Opcionalmente, exclua o disco de origem após criar a imagem com a licença especial.

    gcloud

    gcloud compute disks delete DISK_NAME --zone=ZONE
    

    Substitua o seguinte:

    • DISK_NAME : o nome do disco a ser excluído

    • ZONE : a zona que contém o disco a ser excluído

    DESCANSAR

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

    Substitua o seguinte:

    • PROJECT_ID : o ID do projeto

    • ZONE : a zona que contém o disco a ser excluído

    • DISK_NAME : o nome do disco a ser excluído

  4. Crie uma VM que use a nova imagem com a licença especial. A plataforma mínima de CPU deve ser "Intel Haswell" .

    gcloud

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

    Substitua o seguinte:

    • VM_NAME : o nome da VM

    • ZONE : a zona para criar a VM

    • IMAGE_NAME : o nome da imagem criada anteriormente

    DESCANSAR

    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 o seguinte:

    • PROJECT_ID : o ID do projeto

    • VM_NAME : o nome da VM

    • ZONE : a zona para criar a VM

    • IMAGE_NAME : o nome da imagem criada anteriormente

Confirme se a virtualização aninhada está habilitada na VM

  1. Conecte-se à instância de VM.

    gcloud compute ssh VM_NAME
    

    Substitua VM_NAME pelo nome da VM à qual se conectar.

  2. Confirme se a virtualização aninhada está habilitada. Qualquer resposta diferente de 0 confirma que a virtualização aninhada está habilitada.

    grep -cw vmx /proc/cpuinfo
    

O que vem a seguir