Gestisci il vincolo di virtualizzazione nidificata

Questo documento descrive come verificare se la virtualizzazione nidificata è abilitata e come modificare il vincolo booleano che controlla se la virtualizzazione nidificata è abilitata per la tua organizzazione, il tuo progetto o la tua cartella.

Un vincolo booleano all'interno di una policy dell'organizzazione determina se puoi creare VM nidificate. Il vincolo booleano per la virtualizzazione nidificata è una restrizione, il che significa che, quando viene applicato, indica alla policy dell'organizzazione di limitare la creazione di VM nidificate. L'applicazione di questo vincolo impedisce a Compute Engine di esporre le estensioni di virtualizzazione alle VM (VM L1). Ciò significa che, sebbene tu possa comunque creare VM L1 con configurazioni che abilitano la virtualizzazione nidificata, non puoi eseguire VM nidificate (VM L2) su queste VM L1. Per saperne di più sui vincoli booleani, consulta Informazioni sui vincoli.

Il vincolo Disattiva la virtualizzazione nidificata della VM non viene applicato per impostazione predefinita, quindi non devi modificare alcun vincolo booleano per abilitare la virtualizzazione nidificata. Tuttavia, Google consiglia di impostare esplicitamente il valore del vincolo in modo che la tua organizzazione, le tue cartelle e i tuoi progetti non si basino sull'impostazione predefinita. Se il tuo progetto non è subordinato a un'organizzazione, il vincolo non viene applicato per impostazione predefinita e non puoi modificarlo.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Seleziona la scheda relativa alla modalità di utilizzo degli esempi in questa pagina:

    Console

    Quando utilizzi la Google Cloud console per accedere a Google Cloud servizi e API, non devi configurare l'autenticazione.

    gcloud

    1. Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:

      gcloud init

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  • Imposta una regione e una zona predefinite.
  • REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Autenticati per usare REST nella Google Cloud documentazione sull'autenticazione di.

Verifica se la virtualizzazione nidificata è consentita

Verifica se la virtualizzazione nidificata è consentita per un'organizzazione, una cartella o per un progetto utilizzando la Google Cloud console, Google Cloud CLI o REST.

Console

Verifica se puoi creare VM nidificate nella tua organizzazione, nella tua cartella o nel tuo progetto controllando se il vincolo booleano per la disattivazione della virtualizzazione nidificata non è applicato. Se il vincolo Disattiva la virtualizzazione nidificata della VM non viene applicato dalla policy dell'organizzazione, puoi creare VM nidificate.

  1. Nella Google Cloud console, vai alla pagina Policy dell'organizzazione.

    Vai a Policy dell'organizzazione

  2. Nel selettore di organizzazione, cartella e progetto, seleziona l'entità per cui visualizzare le policy dell'organizzazione.

  3. Seleziona il vincolo Disattiva la virtualizzazione nidificata della VM per aprire la pagina Dettagli policy.

  4. Visualizza il valore di Applicazione:

    • Se il valore è Non applicato, la virtualizzazione nidificata è abilitata e puoi creare VM nidificate.

    • Se il valore è Applicato, la virtualizzazione nidificata è disabilitata, e non puoi creare VM nidificate.

gcloud

Verifica il valore del compute.disableNestedVirtualization booleano vincolo utilizzando il gcloud resource-manager org-policies describe comando.

Se l'output di Google Cloud CLI non mostra un valore per booleanPolicy, la virtualizzazione nidificata è consentita e puoi creare VM nidificate.

Se il valore di output di Google Cloud CLI per booleanPolicy è enforced: true, la policy dell'organizzazione sta applicando il vincolo di disattivazione della virtualizzazione nidificata e non puoi creare VM nidificate.

gcloud resource-manager org-policies \
  describe constraints/compute.disableNestedVirtualization \
  (--organization=ORGANIZATION_ID | --folder=FOLDER_ID |
  --project=PROJECT_ID) --effective

Sostituisci esattamente uno dei seguenti elementi:

  • ORGANIZATION_ID: l'ID dell'organizzazione di cui ottenere il valore del vincolo. Per un elenco delle organizzazioni accessibili e dei relativi ID, esegui il gcloud organizations list comando.

  • FOLDER_ID: l'ID della cartella di cui ottenere il valore del vincolo. Per un elenco delle cartelle accessibili e dei relativi ID, esegui il gcloud resource-manager folders list comando.

  • PROJECT_ID: l'ID del progetto di cui ottenere il valore del vincolo. Per un elenco dei progetti accessibili e dei relativi ID, esegui il comando gcloud projects list.

REST

Utilizza REST per verificare il valore del vincolo booleano compute.disableNestedVirtualization, che determina se puoi creare VM nidificate nella tua organizzazione, nella tua cartella o nel tuo progetto.

Se la risposta REST non restituisce un valore per "booleanPolicy" per il vincolo, la virtualizzazione nidificata non è disattivata e puoi creare VM nidificate.

Se il valore di "booleanPolicy" nell'output è "enforced": true, allora la virtualizzazione nidificata è disattivata e non puoi creare VM nidificate.

POST https://cloudresourcemanager.googleapis.com/v1/RESOURCE/RESOURCE_ID:getOrgPolicy

{
  "constraint": "compute.disableNestedVirtualization"
}

Sostituisci quanto segue:

  • RESOURCE: la risorsa per cui ottenere la policy dell'organizzazione. Imposta uno dei seguenti valori:

  • RESOURCE_ID: l'organizzazione, la cartella o il progetto su cui verificare lo stato del vincolo di disattivazione della virtualizzazione nidificata

Da una VM Linux, puoi eseguire il comando grep -c vmx /proc/cpuinfo per verificare se le estensioni di virtualizzazione sono disponibili per la VM. Se questo comando restituisce 0, le estensioni di virtualizzazione non sono disponibili e non puoi eseguire VM nidificate. Un motivo potrebbe essere che il vincolo Disattiva la virtualizzazione nidificata della VM viene applicato da una policy dell'organizzazione. Se tenti di avviare una VM nidificata utilizzando KVM, potresti visualizzare un messaggio di errore simile al seguente: Could not access KVM kernel module: No such file or directory.

Modifica la policy dell'organizzazione per la virtualizzazione nidificata

Se disponi del ruolo appropriato, puoi controllare se un'organizzazione, una cartella o un progetto può creare VM nidificate. Controlla questa applicazione utilizzando il vincolo booleano per la virtualizzazione nidificata.

Utilizza la Google Cloud console, Google Cloud CLI o REST per abilitare la virtualizzazione nidificata per un'organizzazione, una cartella o un progetto.

Console

Per abilitare la virtualizzazione nidificata, disattiva l'applicazione del vincolo booleano Disattiva la virtualizzazione nidificata della VM e, per disattivare la virtualizzazione nidificata, attiva l'applicazione del vincolo booleano.

  1. Nella Google Cloud console, vai alla pagina Policy dell'organizzazione.

    Vai a Policy dell'organizzazione

  2. Nel selettore di organizzazione, cartella e progetto, seleziona l'entità per cui modificare le policy dell'organizzazione.

  3. Seleziona il vincolo Disattiva la virtualizzazione nidificata della VM per aprire la pagina Dettagli policy.

  4. Fai clic su Modifica, quindi seleziona Personalizza.

  5. In Applicazione, seleziona una delle seguenti opzioni di applicazione per il vincolo booleano Disattiva la virtualizzazione nidificata della VM:

    • Attiva: abilita l'applicazione forzata e disattiva la virtualizzazione nidificata
    • Disattiva: disabilita l'applicazione forzata e abilita la virtualizzazione nidificata
  6. Fai clic su Salva.

gcloud

Utilizza il gcloud resource-manager org-policies comando per abilitare o disabilitare l'applicazione del vincolo booleano della policy dell'organizzazione compute.disableNestedVirtualization.

Se disattivi il vincolo compute.disableNestedVirtualization utilizzando il comando disable-enforce, puoi creare VM con la virtualizzazione nidificata abilitata.

Se abiliti il vincolo utilizzando il comando enable-enforce, non puoi creare VM con la virtualizzazione nidificata abilitata.

gcloud resource-manager org-policies \
  ( disable-enforce | enable-enforce ) compute.disableNestedVirtualization \
  (--organization=ORGANIZATION_ID | --folder=FOLDER_ID |
  --project=PROJECT_ID)

Sostituisci esattamente uno dei seguenti elementi:

  • ORGANIZATION_ID: l'ID dell'organizzazione di cui modificare il valore del vincolo. Per un elenco delle organizzazioni accessibili e dei relativi ID, esegui il gcloud organizations list comando.

  • FOLDER_ID: l'ID della cartella di cui modificare il valore del vincolo. Per un elenco delle cartelle accessibili e dei relativi ID, esegui il gcloud resource-manager folders list comando.

  • PROJECT_ID: l'ID del progetto di cui modificare il valore del vincolo. Per un elenco dei progetti accessibili e dei relativi ID, esegui il comando gcloud projects list.

REST

Utilizza REST per modificare il valore del vincolo booleano compute.disableNestedVirtualization, che determina se puoi creare VM nidificate nella tua organizzazione, nella tua cartella o nel tuo progetto.

POST https://cloudresourcemanager.googleapis.com/v1/RESOURCE/RESOURCE_ID:setOrgPolicy

{
  "policy": {
    "booleanPolicy": {
      "enforced": ENFORCE
    },
    "constraint": "constraints/compute.disableNestedVirtualization"
  }
}

Sostituisci quanto segue:

  • RESOURCE: la risorsa di cui modificare la policy dell'organizzazione. Imposta uno dei seguenti valori:

  • RESOURCE_ID: l'organizzazione, la cartella o il progetto su cui verificare lo stato del vincolo di disattivazione della virtualizzazione nidificata

  • ENFORCE: determina se la policy dell'organizzazione applica il vincolo booleano compute.disableNestedVirtualization. Imposta uno dei seguenti valori:

    • true: per applicare il vincolo. Con questa impostazione non puoi creare VM con la virtualizzazione nidificata abilitata.

    • false: per non applicare il vincolo. Con questa impostazione, puoi creare VM con la virtualizzazione nidificata abilitata.

Passaggi successivi