Provisionner des VM sur des nœuds à locataire unique

Cette page explique comment provisionner des VM sur des nœuds à locataire unique, des serveurs physiques qui n'exécutent des VM qu'à partir d'un seul projet. Avant de provisionner des VM sur des nœuds à locataire unique, consultez la présentation des nœuds à locataire unique.

Avant de commencer

Créer un modèle de nœud à locataire unique

Avant de créer un groupe de nœuds et de provisionner des VM à locataire unique, vous devez créer un modèle de nœud à locataire unique. Un modèle de nœud est une ressource régionale qui définit les propriétés (telles que le type de nœud, les libellés d'affinité, les disques SSD locaux, les accélérateurs et la sursollicitation des processeurs) de chaque nœud d'un groupe de nœuds.

Pour configurer et créer un modèle de nœud à l'aide de la console Cloud de Confiance , de la Google Cloud CLI ou de l'API REST Compute Engine, consultez Créer un modèle de nœud à locataire unique.

Créer un groupe de nœuds à locataire unique

Après avoir créé un modèle de nœud, vous devez créer un groupe de nœuds à locataire unique. Un groupe de nœuds est un cluster homogène de nœuds à locataire unique dans une zone spécifique qui hérite des propriétés de son modèle. Vous pouvez configurer des règles de maintenance de l'hôte, l'autoscaling et des paramètres de partage interprojets sur le groupe de nœuds.

Pour configurer et créer un groupe de nœuds à l'aide de la console Cloud de Confiance , de Google Cloud CLI ou de l'API REST Compute Engine, consultez Créer un groupe de nœuds à locataire unique.

Provisionner une VM à locataire unique

Après avoir créé un groupe de nœuds basé sur un modèle de nœud précédemment créé, vous pouvez provisionner des VM individuelles sur un groupe de nœuds à locataire unique.

Pour provisionner une VM sur un nœud ou un groupe de nœuds spécifique ayant des libellés d'affinité correspondant à ceux que vous avez précédemment attribués au modèle de nœud, suivez la procédure standard de création d'une instance de VM, puis attribuez des libellés d'affinité à la VM.

Vous pouvez également utiliser la procédure suivante pour provisionner une VM sur un nœud à locataire unique à partir de la page des détails du groupe de nœuds. En fonction du groupe de nœuds sur lequel vous provisionnez des VM, Compute Engine attribue des libellés d'affinité.

Console

  1. Dans la console Cloud de Confiance , accédez à la page Nœuds à locataire unique.

    Accéder à la page Nœuds à locataire unique

  2. Cliquez sur Groupes de nœuds.

  3. Cliquez sur le nom du groupe de nœuds pour provisionner une instance de VM. Ensuite, si vous le souhaitez, pour provisionner une VM sur un nœud à locataire unique spécifique, cliquez sur le nom de celui-ci pour provisionner la VM.

  4. Cliquez sur Créer une instance pour provisionner une instance de VM sur ce groupe de nœuds et notez les valeurs appliquées automatiquement aux champs Nom, Région et Zone, puis modifiez ces valeurs si nécessaire.

  5. Sélectionnez une configuration de machine en spécifiant la famille de machines, la série et le type de machine. Choisissez la série correspondant au type de nœud à locataire unique.

  6. Modifiez les paramètres de disque de démarrage, de pare-feu et autres valeurs si nécessaire.

  7. Cliquez sur Location unique et notez les libellés d'affinité de nœuds automatiquement attribués, puis cliquez sur Parcourir pour procéder à des ajustements si nécessaire.

  8. Cliquez sur Gestion, puis choisissez l'une des options suivantes pour le paramètre Pendant la maintenance de l'hôte :

    • Migrer l'instance de VM (recommandé) : la VM est migrée vers un autre nœud du groupe de nœuds lors des événements de maintenance.

    • Interrompre : la VM est arrêtée pendant les événements de maintenance.

  9. Choisissez l'une des options suivantes pour le redémarrage automatique :

    • Activé (recommandé) : redémarre automatiquement les VM si elles sont arrêtées lors d'événements de maintenance.

    • Désactivé : ne redémarre pas automatiquement les VM après un événement de maintenance.

  10. Cliquez sur Créer pour terminer la création de votre VM à locataire unique.

gcloud

Exécutez la commande gcloud compute instances create pour provisionner une VM sur un groupe de nœuds à locataire unique :

gcloud compute instances create VM_NAME \
  [--zone=ZONE \]
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT \
  --node-group=GROUP_NAME \
  --machine-type=MACHINE_TYPE \
  [--maintenance-policy=MAINTENANCE_POLICY \]
  [--accelerator type=GPU_TYPE,count=GPU_COUNT \]
  [--local-ssd interface=SSD_INTERFACE \]
  [--restart-on-failure]

L'option --restart-on-failure indique si les VM à locataire unique redémarrent en cas d'arrêt. Cette option est activée par défaut. Utilisez --no-restart-on-failure pour la désactiver.

Remplacez l'élément suivant :

  • VM_NAME : nom de la nouvelle VM à locataire unique.

  • ZONE : zone dans laquelle provisionner la VM à locataire unique.

  • IMAGE_FAMILY : famille d'images de l'image à utiliser pour créer la VM.

  • IMAGE_PROJECT : projet d'image de la famille d'images.

  • GROUP_NAME : nom du groupe de nœuds sur lequel provisionner la VM.

  • MACHINE_TYPE : type de machine de la VM à locataire unique. Exécutez la commande gcloud compute machine-types list pour obtenir la liste des types de machines disponibles pour le projet.

  • MAINTENANCE_POLICY : spécifie le comportement de redémarrage des VM à locataire unique lors d'événements de maintenance. Définissez l'une des options suivantes :

    • MIGRATE : migration de VM vers un autre nœud du groupe de nœuds lors d'événements de maintenance.

    • TERMINATE : VM arrêtée pendant les événements de maintenance.

  • GPU_TYPE : type de GPU. Défini sur l'un des types d'accélérateurs spécifiés lors de la création du modèle de nœud.

  • GPU_COUNT : nombre de GPU du total spécifié par le modèle de nœud à associer à cette VM. La valeur par défaut est 1.

  • SSD_INTERFACE : type d'interface SSD locale. Vous ne pouvez définir cette option que pour les instances créées à partir d'un modèle de nœud compatible avec les disques SSD locaux. Si vous spécifiez cette valeur lors de la création de l'instance et que le modèle de nœud n'est pas compatible avec le disque SSD local, la création de l'instance échoue. Variable définie sur nvme si les pilotes d'image du disque de démarrage sont optimisés pour le NVMe. Sinon, la variable est définie sur scsi. Spécifiez cette option ainsi qu'une valeur correspondante une fois pour chaque partition SSD locale.

REST

Utilisez la méthode instances.insert pour provisionner une VM sur un groupe de nœuds à locataire unique :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/VM_ZONE/instances
{ "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME", "scheduling": { "onHostMaintenance": MAINTENANCE_POLICY, "automaticRestart": RESTART_ON_FAILURE, "nodeAffinities": [ { "key": "compute.googleapis.com/node-group-name", "operator": "IN", "values": [ "GROUP_NAME" ] } ] }, "networkInterfaces": [ { "network": "global/networks/NETWORK", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" } ], "guestAccelerators": [ { "acceleratorType": GPU_TYPE, "acceleratorCount": GPU_COUNT } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }, { "type":"SCRATCH", "initializeParams":{ "diskType":"zones/LOCAL_SSD_ZONE/diskTypes/local-ssd" }, "autoDelete":true, "interface":"SSD_INTERFACE" } ] }

Remplacez l'élément suivant :

  • PROJECT_ID : ID du projet.

  • VM_ZONE : zone dans laquelle provisionner la VM à locataire unique.

  • MACHINE_TYPE_ZONE : zone du type de machine.

  • MACHINE_TYPE : type de machine de la VM à locataire unique. Utilisez la méthode machineTypes.list pour obtenir la liste des types de machines disponibles pour le projet.

  • VM_NAME : nom de la nouvelle VM à locataire unique.

  • MAINTENANCE_POLICY : spécifie le comportement de redémarrage des VM à locataire unique lors d'événements de maintenance. Définissez l'une des options suivantes :

    • MIGRATE : migration de VM vers un autre nœud du groupe de nœuds lors d'événements de maintenance.

    • TERMINATE : VM arrêtée pendant les événements de maintenance.

  • RESTART_ON_FAILURE : indique si les VM à locataire unique redémarrent en cas d'arrêt. La valeur par défaut est true.

  • GROUP_NAME : nom du groupe de nœuds sur lequel provisionner la VM.

  • NETWORK : URL de la ressource réseau pour cette VM.

  • REGION : région contenant le sous-réseau de cette VM.

  • SUBNETWORK : URL de la ressource de sous-réseau pour cette VM.

  • GPU_TYPE : type de GPU. Défini sur l'un des types d'accélérateurs spécifiés lors de la création du modèle de nœud.

  • GPU_COUNT : nombre de GPU du total spécifié par le modèle de nœud à associer à cette VM. La valeur par défaut est 1.

  • IMAGE_PROJECT : projet d'image de la famille d'images.

  • IMAGE_FAMILY : famille d'images de l'image à utiliser pour créer la VM.

  • LOCAL_SSD_ZONE : zone du disque SSD local.

  • SSD_INTERFACE : type d'interface SSD locale. Définie sur NVME si les pilotes d'image du disque de démarrage sont optimisés pour le NVMe. Sinon, la valeur est définie sur SCSI.

Provisionner un groupe de VM à locataire unique

Les groupes d'instances gérés (MIG) vous permettent de provisionner un groupe de VM à locataire unique identiques. Les libellés d'affinité vous permettent de spécifier le nœud ou le groupe de nœuds à locataire unique sur lequel provisionner le groupe de VM à locataire unique.

Pour les MIG régionaux, vous devez créer des groupes de nœuds dans chacune des zones du MIG régional et spécifier des affinités de nœuds pour ces groupes de nœuds dans le modèle d'instance du MIG régional.

gcloud

  1. Exécutez la commande gcloud compute instance-templates create afin de créer un modèle de groupe d'instances géré destiné à un groupe de VM à créer sur un groupe de nœuds à locataire unique :

    gcloud compute instance-templates create INSTANCE_TEMPLATE \
      --machine-type=MACHINE_TYPE \
      --image-project=IMAGE_PROJECT \
      --image-family=IMAGE_FAMILY \
      --node-group=GROUP_NAME \
      [--accelerator type=GPU_TYPE,count=GPU_COUNT \]
      [--local-ssd interface=SSD_INTERFACE]
    

    Remplacez les éléments suivants :

    • INSTANCE_TEMPLATE : nom du nouveau modèle d'instance.

    • MACHINE_TYPE : type de machine de la VM à locataire unique. Exécutez la commande gcloud compute machine-types list pour obtenir la liste des types de machines disponibles pour le projet.

    • IMAGE_PROJECT : projet d'image de la famille d'images.

    • IMAGE_FAMILY : famille d'images de l'image à utiliser pour créer la VM.

    • GROUP_NAME : nom du groupe de nœuds sur lequel provisionner la VM. Si vous souhaitez utiliser ce modèle d'instance pour créer un MIG régional couvrant plusieurs zones, utilisez l'option --node-affinity-file pour spécifier une liste de valeurs pour les groupes de nœuds du MIG régional.

    • GPU_TYPE : type de GPU. Défini sur l'un des types d'accélérateurs spécifiés lors de la création du modèle de nœud.

    • GPU_COUNT : nombre de GPU du total spécifié par le modèle de nœud à associer à cette VM. La valeur par défaut est 1.

    • SSD_INTERFACE : type d'interface SSD locale. Définie sur nvme si les pilotes d'image du disque de démarrage sont optimisés pour le NVMe. Sinon, la valeur est définie sur scsi. Spécifiez cette option ainsi qu'une valeur correspondante une fois pour chaque partition SSD locale.

  2. Exécutez la commande gcloud compute instance-groups managed create pour créer un modèle de groupe d'instances géré dans votre groupe de nœuds à locataire unique :

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
      --size=SIZE \
      --template=INSTANCE_TEMPLATE \
      --zone=ZONE
    

    Remplacez l'élément suivant :

    • INSTANCE_GROUP_NAME : Nom de ce groupe d'instances.

    • SIZE : nombre de VM à inclure dans ce groupe d'instances. Votre groupe de nœuds doit disposer de suffisamment de ressources pour pouvoir prendre en charge les instances de ce groupe d'instances géré. Utilisez l'autoscaler de groupe d'instances géré pour gérer automatiquement la taille des groupes d'instances gérés.

    • INSTANCE_TEMPLATE : nom du modèle d'instance à utiliser pour créer ce MIG. Le modèle doit comporter un ou plusieurs libellés d'affinité de nœuds pointant vers les groupes de nœuds appropriés.

    • ZONE : zone dans laquelle créer le groupe d'instances géré. Pour un MIG régional, remplacez l'option --zone par l'option --region et spécifiez une région. Ajoutez également l'option --zones pour spécifier toutes les zones dans lesquelles les groupes de nœuds existent.

REST

  1. Exécutez la commande instanceTemplates.insert pour créer un modèle de groupe d'instances géré dans votre groupe de nœuds à locataire unique :

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/TEMPLATE_ZONE/instance-templates
    { "name": "INSTANCE_TEMPLATE", "properties": { "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "scheduling": { "nodeAffinities": [ { "key": "compute.googleapis.com/node-group-name", "operator": "IN", "values": [ "GROUP_NAME" ] } ] }, "networkInterfaces": [ { "network": "global/networks/NETWORK", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" } ], "guestAccelerators": [ { "acceleratorType": GPU_TYPE, "acceleratorCount": GPU_COUNT } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }, { "type":"SCRATCH", "initializeParams":{ "diskType":"zones/LOCAL_SSD_ZONE/diskTypes/local-ssd" }, "autoDelete":true, "interface":"SSD_INTERFACE" } ] } }

    Remplacez l'élément suivant :

    • PROJECT_ID : ID du projet.

    • TEMPLATE_ZONE : zone dans laquelle créer le modèle d'instance.

    • INSTANCE_TEMPLATE : nom du nouveau modèle d'instance.

    • MACHINE_TYPE_ZONE : zone du type de machine.

    • MACHINE_TYPE : type de machine de la VM à locataire unique. Utilisez la méthode machineTypes.list pour obtenir la liste des types de machines disponibles pour le projet.

    • GROUP_NAME : nom du groupe de nœuds sur lequel provisionner la VM. Si vous souhaitez utiliser ce modèle d'instance pour créer un MIG régional existant dans plusieurs zones, spécifiez une liste de groupes de nœuds qui existent dans les mêmes zones que celles du MIG régional.

    • NETWORK : URL de la ressource réseau pour ce modèle d'instance.

    • REGION : région contenant le sous-réseau de ce modèle d'instance.

    • SUBNETWORK : URL de la ressource de sous-réseau pour ce modèle d'instance.

    • GPU_TYPE : type de GPU. Défini sur l'un des types d'accélérateurs spécifiés lors de la création du modèle de nœud.

    • GPU_COUNT : nombre de GPU du total spécifié par le modèle de nœud à associer à cette VM. La valeur par défaut est 1.

    • IMAGE_PROJECT : projet d'image de la famille d'images.

    • IMAGE_FAMILY : famille d'images de l'image à utiliser pour créer la VM.

    • LOCAL_SSD_ZONE : zone du disque SSD local.

    • SSD_INTERFACE : type d'interface SSD locale. Définie sur NVME si les pilotes d'image du disque de démarrage sont optimisés pour le NVMe. Sinon, la valeur est définie sur SCSI.

  2. Utilisez la méthode instanceGroupManagers.insert pour créer un MIG dans votre groupe de nœuds à locataire unique en partant du modèle d'instance créé précédemment. Si vous souhaitez créer un MIG régional, utilisez la méthode regionInstanceGroupManagers.insert et spécifiez la région et les zones de tous les groupes de nœuds comme indiqué dans le modèle d'instance.

    Par exemple, pour créer un MIG zonal, exécutez la requête suivante :

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    {
      "baseInstanceName": "NAME_PREFIX",
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE"
    }
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet.

    • ZONE : zone dans laquelle créer le groupe d'instances géré.

    • NAME_PREFIX : nom du préfixe de chacune des instances du groupe d'instances géré.

    • INSTANCE_GROUP_NAME : nom du groupe d'instances.

    • SIZE : nombre de VM à inclure dans ce groupe d'instances. Votre groupe de nœuds doit disposer de suffisamment de ressources pour pouvoir prendre en charge les instances de ce groupe d'instances géré. Utilisez l'autoscaler de groupe d'instances géré pour gérer automatiquement la taille des groupes d'instances gérés.

    • INSTANCE_TEMPLATE : nom du modèle d'instance à utiliser pour créer ce groupe. Le modèle doit comporter un libellé d'affinité de nœud pointant vers le groupe de nœuds approprié.

Configurer des libellés d'affinité de nœuds

Les libellés d'affinité de nœud vous permettent de regrouper logiquement des groupes de nœuds et de planifier des VM sur un ensemble spécifique de groupes de nœuds. Vous pouvez également utiliser des libellés d'affinité de nœuds pour planifier des VM sur des groupes de nœuds dans différentes zones, tout en conservant les groupes de nœuds dans un groupe logique. La procédure suivante montre comment utiliser des libellés d'affinité pour associer des VM à un groupe de nœuds spécifique utilisé pour les charges de travail de production. Cet exemple montre comment planifier une seule VM, mais vous pouvez également utiliser des groupes d'instances gérés pour planifier un groupe de VM.

gcloud

  1. Exécutez la commande gcloud compute sole-tenancy node-templates create afin de créer un modèle de nœud avec un ensemble de libellés d'affinité pour une charge de travail de production :

    gcloud compute sole-tenancy node-templates create prod-template \
      --node-type=n1-node-96-624 \
      --node-affinity-labels workload=frontend,environment=prod
    
  2. Exécutez la commande gcloud compute sole-tenancy node-templates describe pour afficher les libellés d'affinité de nœuds attribués au modèle de nœud.

  3. Exécutez la commande gcloud compute sole-tenancy node-groups create pour créer un groupe de nœuds utilisant le modèle de production :

    gcloud compute sole-tenancy node-groups create prod-group \
      --node-template=prod-template \
      --target-size=1
    
  4. Créez un fichier node-affinity-prod.json pour spécifier l'affinité de vos VM de production. Par exemple, vous pouvez créer un fichier spécifiant que les VM ne s'exécutent que sur des nœuds avec les affinités workload=frontend et environment=prod. Créez le fichier d'affinité de nœuds à l'aide de Cloud Shell ou créez-le à l'emplacement de votre choix.

    [
      {
        "key" : "workload",
        "operator" : "IN",
        "values" : ["frontend"]
      },
      {
        "key" : "environment",
        "operator" : "IN",
        "values" : ["prod"]
      }
    ]
    
  5. Utilisez le fichier node-affinity-prod.json avec la commande gcloud compute instances create pour planifier une VM sur le groupe de nœuds avec les libellés d'affinité correspondants.

    gcloud compute instances create prod-vm \
      --node-affinity-file node-affinity-prod.json \
      --machine-type=n1-standard-2
    
  6. Exécutez la commande gcloud compute instances describe et vérifiez le champ scheduling pour visualiser les affinités de nœuds attribuées à la VM.

Configurer des libellés d'anti-affinité de nœuds

Les libellés d'affinité de nœuds peuvent être configurés en tant que libellés d'anti-affinité pour empêcher les VM de s'exécuter sur des nœuds spécifiques. Par exemple, vous pouvez utiliser des libellés d'anti-affinité pour éviter que les VM que vous utilisez à des fins de développement soient planifiées sur les mêmes nœuds que votre VM de production. L'exemple suivant montre comment utiliser des libellés d'affinité pour empêcher les VM de s'exécuter sur des groupes de nœuds spécifiques. Cet exemple montre comment planifier une VM unique, mais vous pouvez également utiliser des groupes d'instances gérés pour planifier un groupe de VM.

gcloud

  1. Spécifiez l'affinité de vos VM de développement en créant un objet node-affinity-dev.json avec Cloud Shell ou en le créant à l'emplacement de votre choix. Par exemple, créez un fichier qui configure les VM pour qu'elles s'exécutent sur n'importe quel groupe de nœuds avec l'affinité workload=frontend, tant qu'il ne s'agit pas d'un groupe de production (environment=prod) :

    [
      {
        "key" : "workload",
        "operator" : "IN",
        "values" : ["frontend"]
      },
      {
        "key" : "environment",
        "operator" : "NOT_IN",
        "values" : ["prod"]
      }
    ]
    
  2. Utilisez le fichier node-affinity-dev.json avec la commande gcloud compute instances create pour créer la VM de développement :

    gcloud compute instances create dev-vm \
      --node-affinity-file=node-affinity-dev.json \
      --machine-type=n1-standard-2
    
  3. Exécutez la commande gcloud compute instances describe et vérifiez le champ scheduling pour visualiser les anti-affinités de nœuds attribuées à la VM.

Étapes suivantes