Cette page explique comment créer des clusters standards Google Kubernetes Engine (GKE) avec des nœuds compatibles avec la virtualisation imbriquée. Les VM Compute Engine utilisent les instructions Intel VT-x pour que les VM imbriquées puissent s'exécuter sur la VM sous-jacente d'un nœud GKE. Vous pouvez ensuite déployer des pods utilisant des outils tels que QEMU pour créer des VM imbriquées. Vous pouvez utiliser des VM imbriquées pour exécuter des charges de travail spécialisées telles que des émulateurs Android, ou des charges de travail qui bénéficient de la VM comme limite d'isolation.
Implications réduites en termes de performances
Avec la virtualisation imbriquée assistée par matériel, les charges de travail exécutées sur les VM imbriquées peuvent connaître des performances réduites par rapport aux configurations de virtualisation non imbriquées. L'impact sur les performances dépend du profil de charge de travail spécifique, y compris ses caractéristiques d'E/S et d'utilisation de la mémoire.
En outre, la création de VM imbriquées sur les VM sous-jacentes des nœuds GKE peut affecter les performances des autres charges de travail exécutées sur ces nœuds.
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API Google Kubernetes Engine. Activer l'API Google Kubernetes Engine
- Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande
gcloud components update
.
- Assurez-vous que votre règle d'administration accepte la création de VM imbriquées.
- Examinez les restrictions applicables aux VM imbriquées.
Conditions requises et limites
Tenez compte des informations suivantes avant d'activer la virtualisation imbriquée avec GKE et d'autoriser vos pods à créer des VM imbriquées:
- Vous ne pouvez configurer des pools de nœuds avec des VM imbriquées qu'avec un nombre limité de séries de machines de VM. Consultez la ligne Virtualisation imbriquée de la comparaison des séries de machines pour vérifier les séries de machines compatibles.
- Vous devez utiliser le type d'image
UBUNTU_CONTAINERD
ou le type d'imageCOS_CONTAINERD
avec des nœuds exécutant la version 1.28.4-gke.1083000 ou ultérieure. - Vous ne pouvez utiliser la virtualisation imbriquée qu'avec des clusters standards, et non avec des clusters Autopilot.
- Vous ne pouvez pas utiliser le provisionnement automatique des nœuds avec des pools de nœuds imbriqués sur lesquels la virtualisation est activée.
- Vous ne pouvez pas utiliser la virtualisation imbriquée si la contrainte Désactiver la virtualisation imbriquée sur la VM est appliquée dans votre règle d'administration.
- Vous devez définir
securityContext.privileged:true
pour que les pods puissent interagir avec des VM imbriquées.
Activez la virtualisation imbriquée
Vous pouvez activer la virtualisation imbriquée lorsque vous créez un cluster (en l'activant pour le pool de nœuds par défaut) ou lorsque vous créez un pool de nœuds. Vous ne pouvez pas activer ni désactiver cette fonctionnalité pour un pool de nœuds existant.
Les instructions des sections suivantes créent des pools de nœuds avec des nœuds portant le libellé nested-virtualization=enabled
. Une fois que GKE a créé les nœuds, vous pouvez planifier les pods qui ont créé des VM imbriquées sur la VM sous-jacente du nœud.
Activer la virtualisation imbriquée avec un nouveau cluster standard
Créer un cluster standard avec la virtualisation imbriquée activée pour le pool de nœuds par défaut. GKE ne crée le pool de nœuds par défaut qu'avec la virtualisation imbriquée activée. GKE n'active pas automatiquement cette fonctionnalité pour tous les nouveaux pools de nœuds créés pour le cluster:
gcloud container clusters create CLUSTER_NAME \
--enable-nested-virtualization \
--node-labels=nested-virtualization=enabled \
--machine-type=MACHINE_TYPE
Remplacez les éléments suivants :
CLUSTER_NAME
: nom du cluster.MACHINE_TYPE
: type de machine compatible (consultez la page sur la virtualisation imbriquée).
Vous pouvez également vérifier que la virtualisation imbriquée est activée pour un nœud du pool de nœuds.
Vous pouvez maintenant programmer des pods qui créent des VM imbriquées sur la VM sous-jacente du nœud.
Activer la virtualisation imbriquée avec un nouveau pool de nœuds
Créez un pool de nœuds avec la virtualisation imbriquée activée pour un cluster Standard existant:
gcloud container node pools create NODEPOOL_NAME \
--enable-nested-virtualization \
--node-labels=nested-virtualization=enabled \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE
Remplacez les éléments suivants :
NODEPOOL_NAME
: nom du pool de nœuds dans lequel la virtualisation imbriquée est activée.CLUSTER_NAME
: nom du cluster.MACHINE_TYPE
: type de machine compatible (consultez la page sur la virtualisation imbriquée).
Vous pouvez également vérifier que la virtualisation imbriquée est activée pour un nœud du pool de nœuds.
Vous pouvez maintenant programmer des pods qui créent des VM imbriquées sur la VM sous-jacente du nœud.
Programmer un pod sur un nœud compatible avec la virtualisation imbriquée
Pour planifier un pod sur un nœud avec la virtualisation imbriquée activée, ajoutez le sélecteur de nœud suivant à la spécification:
nodeSelector:
nested-virtualization: enabled
En outre, pour que le pod se connecte à une VM imbriquée, vous devez le définir comme privilégié en configurant securityContext.privileged:true
.