Utilizza VM nidificate con cluster GKE Standard


La pagina seguente spiega come creare cluster Google Kubernetes Engine (GKE) Standard con nodi che supportano la virtualizzazione nidificata. Le VM di Compute Engine utilizzano le istruzioni Intel VT-x per consentire l'esecuzione delle VM nidificate sulla VM sottostante del nodo GKE. Successivamente, puoi eseguire il deployment di pod che utilizzano strumenti come QEMU per creare VM nidificate. Puoi utilizzare le VM nidificate per eseguire carichi di lavoro specializzati come emulatori Android o carichi di lavoro che traggono vantaggio dalla VM come confine di isolamento.

Implicazioni in termini di prestazioni ridotte

Con la virtualizzazione nidificata basata sull'hardware, i carichi di lavoro in esecuzione sulle VM nidificate potrebbero riscontrare prestazioni ridotte rispetto alle configurazioni di virtualizzazione non nidificate. L'impatto sulle prestazioni dipenderà dal profilo di carico di lavoro specifico, incluse le caratteristiche di I/O e di utilizzo della memoria.

Inoltre, la creazione di VM nidificate sulle VM sottostanti dei nodi GKE potrebbe influire sulle prestazioni degli altri carichi di lavoro in esecuzione su quei nodi.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installa e initialize gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente eseguendo gcloud components update.

Requisiti e limitazioni

Considera le seguenti informazioni prima di abilitare la virtualizzazione nidificata con GKE e di consentire ai tuoi pod di creare VM nidificate:

  • Puoi configurare pool di nodi solo con VM nidificate con un numero limitato di serie di macchine VM. Consulta la riga virtualizzazione nidificata del confronto delle serie di macchine per verificare le serie di macchine supportate.
  • Devi utilizzare il tipo di immagine UBUNTU_CONTAINERD o COS_CONTAINERD con nodi che eseguono la versione 1.28.4-gke.1083000 o una versione successiva.
  • Puoi utilizzare la virtualizzazione nidificata solo con i cluster Standard, non con i cluster Autopilot.
  • Non puoi utilizzare il provisioning automatico dei nodi con pool di nodi nidificati abilitati per la virtualizzazione.
  • Non puoi utilizzare la virtualizzazione nidificata se al criterio dell'organizzazione viene applicato il vincolo Disabilita virtualizzazione nidificata delle VM.
  • Devi impostare securityContext.privileged:true affinché i pod possano interagire con le VM nidificate.

Abilita virtualizzazione nidificata

Puoi abilitare la virtualizzazione nidificata quando crei un cluster (abilitandolo per il pool di nodi predefinito) o quando crei un pool di nodi. Non puoi abilitare o disabilitare la funzionalità per un pool di nodi esistente.

Le istruzioni nelle sezioni seguenti creano pool di nodi con nodi con l'etichetta nested-virtualization=enabled. Dopo che GKE ha creato i nodi, puoi pianificare i pod che hanno creato VM nidificate sulla VM sottostante del nodo.

Abilita la virtualizzazione nidificata con un nuovo cluster Standard

Crea un nuovo cluster Standard con virtualizzazione nidificata abilitata per il pool di nodi predefinito. GKE crea solo il pool di nodi predefinito con la virtualizzazione nidificata abilitata. GKE non abilita automaticamente la funzionalità per tutti i nuovi pool di nodi creati per il cluster:

gcloud container clusters create CLUSTER_NAME \
    --enable-nested-virtualization \
    --node-labels=nested-virtualization=enabled \
    --machine-type=MACHINE_TYPE

Sostituisci quanto segue:

Facoltativamente, verifica che la virtualizzazione nidificata sia abilitata per un nodo nel pool di nodi.

Ora puoi pianificare i pod che creano VM nidificate sulla VM sottostante del nodo.

Abilita la virtualizzazione nidificata con un nuovo pool di nodi

Crea un nuovo pool di nodi con virtualizzazione nidificata abilitata per un cluster Standard esistente:

gcloud container node pools create NODEPOOL_NAME \
    --enable-nested-virtualization \
    --node-labels=nested-virtualization=enabled \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE

Sostituisci quanto segue:

Facoltativamente, verifica che la virtualizzazione nidificata sia abilitata per un nodo nel pool di nodi.

Ora puoi pianificare i pod che creano VM nidificate sulla VM sottostante del nodo.

Pianifica un pod su un nodo che supporta la virtualizzazione nidificata

Per pianificare un pod su un nodo con la virtualizzazione nidificata abilitata, aggiungi il seguente selettore di nodi alla specifica:

nodeSelector:
  nested-virtualization: enabled

Inoltre, affinché il pod possa connettersi a una VM nidificata, devi impostare il pod come privilegio configurando securityContext.privileged:true.

Passaggi successivi