La pagina seguente spiega come creare cluster Google Kubernetes Engine (GKE) standard con nodi che supportano la virtualizzazione nidificata. Le VM Compute Engine utilizzano le istruzioni Intel VT-x in modo che le VM nidificate possano essere eseguite sulla VM di base di un nodo GKE. Poi, 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 gli emulatori Android o i carichi di lavoro che beneficiano della VM come confine di isolamento.
Implicazioni della riduzione del rendimento
Con la virtualizzazione nidificata assistita dall'hardware, i carichi di lavoro in esecuzione sulle VM nidificate potrebbero registrare prestazioni ridotte rispetto alle configurazioni di virtualizzazione non nidificate. L'entità dell'impatto sulle prestazioni dipenderà dal profilo specifico del carico di lavoro, incluse le sue caratteristiche di I/O e utilizzo della memoria.
Inoltre, la creazione di VM nidificate sulle VM sottostanti dei nodi GKE potrebbe influire sulle prestazioni di altri carichi di lavoro in esecuzione su questi nodi.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installa e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo
gcloud components update
.
- Assicurati che i criteri della tua organizzazione supportino la creazione di VM nidificate.
- Esamina le limitazioni delle VM nidificate.
Requisiti e limitazioni
Tieni presente le seguenti informazioni prima di attivare la virtualizzazione nidificata con GKE e consentire ai pod di creare VM nidificate:
- Puoi configurare pool di nodi con VM nidificate solo 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 il tipo di immagineCOS_CONTAINERD
con i nodi che eseguono la versione 1.28.4-gke.1083000 o successive. - Puoi utilizzare la virtualizzazione nidificata solo con i cluster standard, non con i cluster Autopilot.
- Non puoi utilizzare il provisioning automatico dei nodi con i pool di nodi con virtualizzazione nidificata abilitata.
- Non puoi utilizzare la virtualizzazione nidificata se il vincolo Disattiva la virtualizzazione nidificata della VM è applicato per il criterio dell'organizzazione.
- Devi impostare
securityContext.privileged:true
per consentire ai pod di interagire con le VM nidificate.
Abilita virtualizzazione nidificata
Puoi attivare la virtualizzazione nidificata quando crei un cluster, attivandola per il pool di nodi predefinito, o quando crei un pool di nodi. Non puoi attivare o disattivare la funzionalità per un pool di nodi esistente.
Le istruzioni riportate 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 di base del nodo.
Abilita la virtualizzazione nidificata con un nuovo cluster standard
Crea un nuovo cluster standard con la virtualizzazione nidificata abilitata per il pool di nodi predefinito. GKE crea solo il pool di nodi predefinito con la virtualizzazione nidificata abilitata. GKE non attiva 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:
CLUSTER_NAME
: il nome del cluster.MACHINE_TYPE
: un tipo di macchina supportato (vedi la riga Virtualizzazione nidificata).
Se vuoi, controlla che la virtualizzazione nidificata sia attivata per un nodo nel pool di nodi.
Ora puoi pianificare i pod che creano VM nidificate sulla VM di base del nodo.
Abilita la virtualizzazione nidificata con un nuovo pool di nodi
Crea un nuovo pool di nodi con la 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:
NODEPOOL_NAME
: il nome del pool di nodi in cui è abilitata la virtualizzazione nidificata.CLUSTER_NAME
: il nome del cluster.MACHINE_TYPE
: un tipo di macchina di supporto (vedi la riga Virtualizzazione nidificata).
Se vuoi, controlla che la virtualizzazione nidificata sia attivata per un nodo nel pool di nodi.
Ora puoi pianificare i pod che creano VM nidificate sulla VM di base del nodo.
Pianificare 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 si connetta a una VM nidificata, devi impostarlo come privilegiato configurando securityContext.privileged:true
.