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 sottostante 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 carichi di lavoro che traggono vantaggio dalla VM come limite di isolamento , ad esempio le microVM che utilizzano i container Kata open source.
Per un tutorial sull'utilizzo dei container Kata open source con GKE Agent Sandbox, consulta Abilitare i container Kata su GKE.
Implicazioni sulle prestazioni ridotte
Con la virtualizzazione nidificata assistita dall'hardware, i carichi di lavoro in esecuzione sulle VM nidificate potrebbero subire una riduzione delle prestazioni rispetto alle configurazioni di virtualizzazione non nidificate. L'impatto sulle prestazioni dipenderà dal profilo del 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 di altri carichi di lavoro in esecuzione su questi 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
- Per utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il
gcloud components updatecomando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
- Assicurati che la policy dell'organizzazione supporti la creazione di VM nidificate.
- Esamina le limitazioni delle VM nidificate restrictions.
Requisiti e limitazioni
Prima di abilitare la virtualizzazione nidificata con GKE e consentire ai pod di creare VM nidificate, tieni presente le seguenti informazioni:
- Puoi configurare i node pool con VM nidificate solo con un numero limitato di serie di macchine VM. Consulta la riga Virtualizzazione nidificata del confronto tra serie di macchine per verificare le serie di macchine supportate.
- Devi utilizzare il tipo di immagine
UBUNTU_CONTAINERDo il tipo di immagineCOS_CONTAINERDcon 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 node pool abilitati per la virtualizzazione nidificata.
- Non puoi utilizzare la virtualizzazione nidificata se il vincolo Disabilita la virtualizzazione nidificata della VM è applicato in modo forzato alla policy dell'organizzazione.
- Devi impostare
securityContext.privileged:trueper consentire ai pod di interagire con le VM nidificate.
Abilita virtualizzazione nidificata
Puoi abilitare la virtualizzazione nidificata quando crei un cluster, abilitandola 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 node pool con nodi con l'etichetta nested-virtualization=enabled. Dopo che GKE crea 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 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 abilita automaticamente la funzionalità per tutti i nuovi node pool creati per il cluster:
Console
- Nellaconsole, vai alla pagina Crea un cluster Kubernetes. Google Cloud
- Configura il cluster.
- Nel menu di navigazione, seleziona default-pool in NODE POOL. Quindi, seleziona Nodi.
- Nella sezione Configurazione macchina, scegli un tipo di macchina supportato (vedi la riga Virtualizzazione nidificata ).
- Dopo la sezione Prenotazioni, seleziona la casella di controllo Abilita virtualizzazione nidificata.
- Per creare il cluster, fai clic su Crea.
gcloud
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).
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 la virtualizzazione nidificata abilitata per un cluster Standard esistente:
Console
Nellaconsole, vai alla pagina Cluster Kubernetes. Google Cloud
Per aprire la pagina dei dettagli del cluster, fai clic sul nome del cluster in cui vuoi creare un nuovo pool di nodi con la virtualizzazione nidificata abilitata.
Configura il pool di nodi.
Fai clic sulla scheda Nodi.
Nell'intestazione della sezione Node pool, fai clic su add_box Crea node pool gestito dall'utente.
Nel menu di navigazione, seleziona Nodi.
Nella sezione Configurazione macchina, scegli un tipo di macchina supportato (vedi la riga Virtualizzazione nidificata ).
Dopo la sezione Prenotazioni, seleziona la casella di controllo Abilita virtualizzazione nidificata.
Per creare il pool di nodi, fai clic su Crea.
gcloud
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 supportato (vedi la riga Virtualizzazione nidificata).
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 si connetta a una VM nidificata, devi impostare il pod come privilegiato configurando securityContext.privileged:true.