Abilita virtualizzazione nidificata


Questo documento descrive come attivare la virtualizzazione nidificata su un'istanza di una macchina virtuale (VM) e come verificare di poter creare una VM nidificata. Abilita la virtualizzazione nidificata su una VM utilizzando uno dei seguenti metodi:

  • Consigliato. Attiva la virtualizzazione nidificata direttamente su una VM nuova o esistente impostando il campo enableNestedVirtualization su true durante la creazione o l'aggiornamento della VM. Questo è il metodo consigliato perché non richiede di creare un'immagine personalizzata o di utilizzare la codice licenza speciale.

  • Attiva la virtualizzazione nidificata utilizzando la codice licenza speciale creando un disco di avvio, un'immagine personalizzata con la codice licenza speciale per la virtualizzazione nidificata e una VM che utilizza l'immagine personalizzata.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API. Google Cloud Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine selezionando una delle seguenti opzioni:

    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

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite all'interfaccia alla 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.

      Per ulteriori informazioni, consulta Eseguire l'autenticazione per l'utilizzo di REST nella Google Cloud documentazione sull'autenticazione.

      Attivare la virtualizzazione nidificata direttamente su una nuova VM

      Attiva la virtualizzazione nidificata direttamente su una VM utilizzando la procedura riportata di seguito.

      gcloud

      Crea una VM L1 con la virtualizzazione nidificata abilitata utilizzando il seguente comando gcloud compute instances create:

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

      Sostituisci quanto segue:

      • VM_NAME: il nome della nuova VM L1 con la virtualizzazione nidificata abilitata

      • ZONE: la zona per la nuova VM L1 con la virtualizzazione nidificata abilitata

      REST

      Crea una VM L1 con la virtualizzazione nidificata abilitata utilizzando il seguente instances.insertmetodo:

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

      Sostituisci quanto segue:

      • PROJECT_ID: l'ID progetto

      • ZONE: la zona per la nuova VM L1 con la virtualizzazione nidificata abilitata

      • VM_NAME: il nome della nuova VM L1 con la virtualizzazione nidificata abilitata

      Abilita la virtualizzazione nidificata direttamente su una VM esistente

      Per attivare la virtualizzazione nidificata su una VM esistente, segui la procedura riportata di seguito.

      gcloud

      1. Esporta le proprietà della VM utilizzando il seguente comando gcloud compute instances export:

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

        Sostituisci quanto segue:

        • VM_NAME: il nome della VM da cui esportare le proprietà

        • YAML_FILE_PATH: il percorso e il nome di un file .yaml in cui salvare i dati di configurazione esportati

        • ZONE: la zona che contiene la VM

      2. Nel file di configurazione della VM salvato in FILE_PATH, aggiorna il valore di enableNestedVirtualization. Se il valore non è presente nel file, aggiungi quanto segue:

        advancedMachineFeatures:
          enableNestedVirtualization: true
        
      3. Aggiorna la VM con il valore di enableNestedVirtualization utilizzando il seguente 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
        

        Sostituisci quanto segue:

        • VM_NAME: il nome della VM da aggiornare

        • FILE_PATH: il percorso del file di configurazione della VM aggiornato

        • ZONE: la zona che contiene la VM da aggiornare

      REST

      Aggiorna il valore di enableNestedVirtualization utilizzando il seguente metodo 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"
        },
        ⋮
      }
      

      Sostituisci quanto segue:

      • PROJECT_ID: l'ID del progetto

      • ZONE: la zona che contiene la VM

      • VM_NAME: il nome della VM da cui esportare le proprietà

      Attivare la virtualizzazione nidificata utilizzando il codice licenza speciale

      Puoi attivare la virtualizzazione nidificata sulla VM creando un'immagine personalizzata con una codice licenza speciale che attiva VMX sulla VM L1. La codice licenza non comporta costi aggiuntivi.

      1. Crea un disco di avvio da un'immagine pubblica o da un'immagine personalizzata. L'esempio seguente utilizza debian-cloud per il progetto di immagini e debian-10 per la famiglia di immagini. Se hai già un'istanza VM con un disco esistente, puoi saltare questo passaggio.

        gcloud

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

        Sostituisci quanto segue:

        • DISK_NAME: il nome del nuovo disco

        • ZONE: la zona in cui creare il 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",
          ...
        }
        

        Sostituisci quanto segue:

        • PROJECT_ID: l'ID progetto

        • ZONE: la zona in cui creare il disco

        • DISK_NAME: il nome del nuovo disco

      2. Crea un'immagine personalizzata con il codice licenza speciale necessario per la virtualizzazione nidificata.

        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"
        

        Sostituisci quanto segue:

        • IMAGE_NAME: il nome della nuova immagine

        • DISK_NAME: il nome del disco creato in precedenza

        • ZONE: la zona in cui creare l'immagine

        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",
          ...
        }
        

        Sostituisci quanto segue:

        • PROJECT_ID: l'ID progetto

        • IMAGE_NAME: il nome della nuova immagine

        • ZONE: la zona in cui creare l'immagine

        • DISK_NAME: il nome del disco creato in precedenza

      3. Se vuoi, elimina il disco di origine dopo aver creato l'immagine con la licenza speciale.

        gcloud

        gcloud compute disks delete DISK_NAME --zone=ZONE
        

        Sostituisci quanto segue:

        • DISK_NAME: il nome del disco da eliminare

        • ZONE: la zona contenente il disco da eliminare

        REST

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

        Sostituisci quanto segue:

        • PROJECT_ID: l'ID progetto

        • ZONE: la zona contenente il disco da eliminare

        • DISK_NAME: il nome del disco da eliminare

      4. Crea una VM che utilizzi la nuova immagine con la licenza speciale. La piattaforma CPU minima deve essere "Intel Haswell".

        gcloud

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

        Sostituisci quanto segue:

        • VM_NAME: il nome della VM

        • ZONE: la zona in cui creare la VM

        • IMAGE_NAME: il nome dell'immagine creata in precedenza

        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"
              }
            }
          ]
          ...
        }
        
        

        Sostituisci quanto segue:

        • PROJECT_ID: l'ID progetto

        • VM_NAME: il nome della VM

        • ZONE: la zona in cui creare la VM

        • IMAGE_NAME: il nome dell'immagine creata in precedenza

      Verifica che la virtualizzazione nidificata sia abilitata sulla VM

      1. Connetterti all'istanza VM.

        gcloud compute ssh VM_NAME
        

        Sostituisci VM_NAME con il nome della VM a cui connetterti.

      2. Verifica che la virtualizzazione nidificata sia attivata. Qualsiasi risposta diversa da 0 conferma che la virtualizzazione nidificata è attivata.

        grep -cw vmx /proc/cpuinfo
        

      Passaggi successivi