Usa VM nidificate con i cluster GKE Standard


La pagina seguente spiega come creare Google Kubernetes Engine (GKE) Cluster standard con nodi che supportano i cluster nidificati la virtualizzazione. Le VM di Compute Engine utilizzano Intel VT-x in modo che le VM nidificate possano essere eseguite sull'infrastruttura una VM sottostante. Quindi, puoi eseguire il deployment di pod che utilizzano strumenti come QEMU per creare VM nidificate. Puoi utilizzare VM nidificate per eseguire carichi di lavoro specializzati come come emulatori Android o carichi di lavoro che traggono vantaggio dalla VM come un isolamento confine.

Implicazioni in termini di prestazioni ridotte

Con la virtualizzazione nidificata con assistenza hardware, i carichi di lavoro in esecuzione Le VM potrebbero subire una ridotta prestazioni rispetto alle configurazioni di virtualizzazione non nidificate. La quantità di l'impatto sulle prestazioni dipenderà dal profilo del carico di lavoro specifico, inclusi i suoi Caratteristiche di I/O e utilizzo della memoria.

Inoltre, la creazione di VM nidificate sui nodi GKE sottostante Le VM potrebbero influire sulle prestazioni di altri carichi di lavoro in esecuzione sui nodi.

Prima di iniziare

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

  • Attiva l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, install e poi inizializzare con 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 consentire ai tuoi pod di creare VM nidificate:

  • Puoi configurare pool di nodi solo con VM nidificate con un numero limitato di di macchine virtuali. Guarda la riga Virtualizzazione nidificata in Macchina confronto tra serie per confermare 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 successive.
  • Puoi utilizzare la virtualizzazione nidificata solo con i cluster Standard, non Autopilot.
  • Non puoi utilizzare nodo provisioning automatico con pool di nodi abilitati per la virtualizzazione nidificata.
  • Non puoi utilizzare la virtualizzazione nidificata se Disabilita la virtualizzazione nidificata delle VM vincolo viene applicata in modo forzato per i criteri dell'organizzazione.
  • Devi impostare securityContext.privileged:true affinché i pod possano interagire 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 la funzionalità per un pool di nodi esistente.

Le istruzioni nelle sezioni seguenti creano pool di nodi con nodi con etichetta nested-virtualization=enabled. Dopo che GKE ha creato puoi pianificare i pod che hanno creato VM nidificate sull'infrastruttura VM.

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 esegue automaticamente abilita 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 attivata per un nodo nel pool di nodi.

Ora puoi pianificare pod che creano VM nidificate 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 pool esistente Cluster standard:

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 attivata per un nodo nel pool di nodi.

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

Pianifica un pod su un nodo che supporta la virtualizzazione nidificata

Per pianificare un pod su un nodo in cui è abilitata la virtualizzazione nidificata, aggiungi seguente selettore di nodi alla specifica:

nodeSelector:
  nested-virtualization: enabled

Inoltre, affinché il pod si connetta con una VM nidificata, devi impostarlo come privilegiati configurando securityContext.privileged:true.

Passaggi successivi