La page suivante 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 des instructions Intel VT-x afin 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 qui utilisent 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 bénéficiant de la VM en tant que limite d'isolation.
Réduction de l'impact sur les performances
Avec la virtualisation imbriquée assistée par matériel, les charges de travail exécutées sur les VM imbriquées peuvent enregistrer une baisse de performances par rapport aux configurations de virtualisation non imbriquées. L'impact sur les performances dépendra du profil de charge de travail spécifique, y compris de ses caractéristiques d'E/S et d'utilisation de mémoire.
De plus, la création de VM imbriquées sur les VM sous-jacentes des nœuds GKE peut avoir un impact sur les performances d'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 autorise la création de VM imbriquées.
- Consultez les restrictions concernant les 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 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 sur lesquels la virtualisation imbriquée 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 à votre règle d'administration.
- Vous devez définir
securityContext.privileged:true
pour que les pods interagissent avec les 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 ayant créé des VM imbriquées sur la VM sous-jacente du nœud.
Activer la virtualisation imbriquée avec un nouveau cluster Standard
Créez 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 que si la virtualisation imbriquée est activée. GKE n'active pas automatiquement la 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 (voir la ligne sur la virtualisation imbriquée).
Vous pouvez éventuellement vérifier que la virtualisation imbriquée est activée pour un nœud du pool de nœuds.
Vous pouvez désormais planifier 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 sur lequel la virtualisation imbriquée est activée.CLUSTER_NAME
: nom du cluster.MACHINE_TYPE
: type de machine compatible (voir la ligne "Virtualisation imbriquée").
Vous pouvez éventuellement vérifier que la virtualisation imbriquée est activée pour un nœud du pool de nœuds.
Vous pouvez désormais planifier des pods qui créent des VM imbriquées sur la VM sous-jacente du nœud.
Planifier un pod sur un nœud compatible avec la virtualisation imbriquée
Pour planifier un pod sur un nœud sur lequel la virtualisation imbriquée est 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 avec des privilèges en configurant securityContext.privileged:true
.