Utiliser des VM imbriquées avec des clusters GKE Standard


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.

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'image COS_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 :

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 :

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.

Étapes suivantes