Isoler vos charges de travail GKE à l'aide de nœuds à locataire unique


Cette page explique comment isoler vos charges de travail exécutées sur des clusters Google Kubernetes Engine (GKE) standards à l'aide de nœuds à locataire unique Compute Engine, qui sont des serveurs physiques dédiés qui n'exécutent que les VM d'un projet spécifique. Vous pouvez utiliser des nœuds à locataire unique pour séparer physiquement vos VM des VM d'autres projets, ou pour regrouper vos VM sur le même matériel hôte.

Cette fonctionnalité n'est pas compatible avec GKE Autopilot. Pour en savoir plus sur les limites de sécurité Autopilot, consultez la section Limites de sécurité dans Autopilot.

Pour utiliser des nœuds à locataire unique dans GKE, vous devez créer un groupe de nœuds à locataire unique dans Compute Engine et utiliser ce groupe pour créer un pool de nœuds GKE. Vous pouvez créer des pools de nœuds à l'aide de nœuds à locataire unique d'un projet du cluster GKE ou de nœuds à locataire unique partagés utilisant des ressources de l'ensemble des projets de votre organisation. Par exemple, vous pouvez désigner un projet propriétaire dans votre organisation dans lequel vous créez des groupes de nœuds à locataire unique et des projets client dans lesquels vous disposez de clusters avec des pools de nœuds utilisant ces groupes de nœuds du projet propriétaire.

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.

Demander des quotas supplémentaires

Les nœuds à locataire unique sont volumineux (par exemple, 96 processeurs virtuels et 624 Go de mémoire), et les quotas par défaut du projet sont trop faibles pour les gérer.

Vous devez demander une augmentation de quota pour les processeurs de l'API Compute Engine sur la page Quotas pour créer des nœuds à locataire unique. Pour en savoir plus sur les demandes d'augmentation, consultez la section Quotas.

Le nombre de processeurs dont vous avez besoin dépend des éléments suivants :

  • Votre utilisation actuelle du quota de processeurs.
  • La taille du groupe de nœuds.
  • Le modèle de nœud.

Examinez le nombre de cœurs de votre type de nœud à locataire unique et demandez une limite de processeur équivalente à au moins cette quantité, de préférence avec 10 processeurs supplémentaires afin de vous assurer que votre projet dispose d'une capacité suffisante.

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

Un modèle de nœud à locataire unique est une ressource régionale qui définit et applique des propriétés à chaque nœud lors de la création d'un groupe de nœuds. Pour plus d'informations, consultez la section Types de nœuds.

Si vous utilisez des nœuds à locataire unique partagés, veillez à suivre ces instructions dans le projet propriétaire du groupe de nœuds, et non dans le projet client du cluster.

Console

  1. Accédez à la page Nœuds à locataire unique dans la console Google Cloud.

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

  2. Cliquez sur Créer un modèle de nœud.

  3. Spécifiez un Nom et une Région pour votre modèle de nœud.

  4. Sélectionnez un Type de nœud.

  5. Ajoutez éventuellement un ou plusieurs libellés d'affinité de nœuds.

  6. Cliquez sur Créer pour créer le modèle de nœud.

gcloud

Exécutez la commande gcloud compute sole-tenancy node-templates create pour créer un modèle de nœud :

gcloud compute sole-tenancy node-templates create TEMPLATE_NAME \
    --node-type=NODE_TYPE \
    --node-affinity-labels=AFFINITY_LABELS \
    --region=COMPUTE_REGION

Remplacez l'élément suivant :

  • TEMPLATE_NAME : nom du nouveau modèle de nœud.
  • NODE_TYPE : type de nœud pour les nœuds à locataire unique créés à partir de ce modèle. Exécutez la commande gcloud compute sole-tenancy node-types list pour obtenir la liste des types de nœuds disponibles dans chaque zone.
  • AFFINITY_LABELS : clés et valeurs, [KEY=VALUE,...] pour les libellés d'affinité. Les libellés d'affinité vous permettent de regrouper logiquement des nœuds et des groupes de nœuds. Ensuite, lorsque vous provisionnez des VM, vous pouvez spécifier des libellés d'affinité sur les VM pour les planifier sur un ensemble spécifique de nœuds ou de groupes de nœuds. Pour en savoir plus, consultez la section Affinité et anti-affinité de nœuds.
  • COMPUTE_REGION : région dans laquelle créer le modèle de nœud. Vous pouvez utiliser ce modèle pour créer des groupes de nœuds dans n'importe quelle zone de cette région.

Le résultat ressemble à ce qui suit :

Created [https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/nodeTemplates/template-name].

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

Un groupe de nœuds est un ensemble de nœuds à locataire unique dans une zone spécifique à partir du même modèle de nœud à locataire unique. Pour les clusters et les pools de nœuds régionaux disponibles dans plusieurs zones, vous devez créer un groupe de nœuds portant le même nom dans chaque zone. Assurez-vous de disposer d'un quota suffisant avant de passer à cette étape.

Si vous utilisez des nœuds à locataire unique partagés, veillez à suivre ces instructions dans le projet propriétaire du groupe de nœuds, et non dans le projet client du cluster.

Console

Pour créer un groupe de nœuds à locataire unique, procédez comme suit :

  1. Accédez à la page Nœuds à locataire unique dans la console Google Cloud.

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

  2. Cliquez sur Créer un groupe de nœuds.

  3. Spécifiez un Nom pour votre modèle de nœud.

  4. Sélectionnez la même Région que celle dans laquelle vous avez créé votre modèle de nœud, puis sélectionnez une Zone dans cette Région.

  5. Sélectionnez votre Modèle de nœud.

  6. Vous pouvez également activer le Mode autoscaling.

  7. Spécifiez le Nombre de nœuds souhaité pour le groupe.

  8. Modifiez éventuellement la Stratégie de maintenance.

  9. Pour partager le groupe de nœuds à locataire unique, configurez les paramètres de partage en spécifiant l'une des options suivantes dans la section Configurer les paramètres de partage :

    • Partager ce groupe de nœuds avec tous les projets de l'organisation
    • Partager ce groupe de nœuds avec les projets sélectionnés au sein de l'organisation
  10. Cliquez sur Créer pour créer le groupe de nœuds.

gcloud

Créez un groupe de nœuds à partir du modèle :

gcloud compute sole-tenancy node-groups create GROUP_NAME \
    --zone COMPUTE_ZONE \
    --node-template TEMPLATE_NAME --target-size TARGET_SIZE \
    --share-settings=SHARE_SETTING \
    --share-with=PROJECTS

Remplacez l'élément suivant :

  • GROUP_NAME : nom que vous souhaitez pour votre nouveau groupe de nœuds.
  • COMPUTE_ZONE : zone où se trouve le groupe de nœuds. Cette zone doit appartenir à la même région que le modèle de nœud que vous utilisez.
  • TEMPLATE_NAME : nom du modèle de nœud que vous utilisez.
  • TARGET_SIZE : nombre de nœuds à créer dans le groupe.
  • SHARE_SETTING : paramètre de partage pour le groupe de nœuds. Définissez la valeur sur projects pour le partager avec des projets spécifiques ou sur organization pour le partager avec l'ensemble de l'organisation.
  • PROJECTS : liste des ID ou des numéros de projets avec lesquels partager le groupe de nœuds. Obligatoire uniquement si vous définissez SHARE_SETTING sur projects.

Créer un pool de nœuds à locataire unique GKE

Maintenant que vous avez créé un groupe de nœuds à locataire unique dans Compute Engine, vous pouvez créer un pool de nœuds à locataire unique.

Si vous disposez déjà d'un cluster GKE, vous pouvez y ajouter un pool de nœuds à locataire unique. Si ce n'est pas le cas, créez un cluster avec gcloud container clusters create.

Si vous utilisez un cluster régional ou si votre pool de nœuds est disponible dans plusieurs zones, vous devez créer un groupe de nœuds portant le même nom dans chacune de ces zones. Si vous ne pouvez pas réutiliser le nom dans chaque zone, créez des pools de nœuds distincts pour chacune d'elles.

Créer un pool de nœuds avec un groupe de nœuds à locataire unique d'un projet du cluster

Pour créer un pool de nœuds avec un groupe de nœuds d'un projet du cluster, transmettez le nom du groupe de nœuds à locataire unique. Si vous souhaitez utiliser un groupe de nœuds à locataire unique partagé ou des libellés d'affinité de nœuds personnalisés que vous avez configurés lors de la création du modèle de nœud à locataire unique, suivez les instructions permettant de créer un pool de nœuds avec un nœud à locataire unique partagé en utilisant un fichier d'affinité de nœud.

Créez un pool de nœuds avec un groupe de nœuds spécifié :

Pour les pools de nœuds zonaux :

  gcloud container node-pools create NODE_POOL_NAME \
      --node-group GROUP_NAME --cluster CLUSTER_NAME \
      --zone COMPUTE_ZONE --machine-type=MACHINE_TYPE \
      --node-locations=COMPUTE_ZONE

Pour les pools de nœuds régionaux :

  gcloud container node-pools create NODE_POOL_NAME \
      --node-group GROUP_NAME --cluster CLUSTER_NAME \
      --region COMPUTE_REGION --machine-type=MACHINE_TYPE \
      --node-locations=COMPUTE_ZONE1,COMPUTE_ZONE2

Remplacez l'élément suivant :

  • NODE_POOL_NAME : nom du nouveau pool de nœuds.
  • GROUP_NAME : nom du groupe de nœuds à locataire unique existant que vous souhaitez utiliser.
  • CLUSTER_NAME : nom du cluster dans lequel vous créez le pool de nœuds.
  • COMPUTE_REGION : la même région que votre cluster.
  • MACHINE_TYPE : le type de machine du pool de nœuds.
  • COMPUTE_ZONE1, COMPUTE_ZONE2,[...] : zones des groupes de nœuds à locataire unique.

Pour obtenir la liste complète des options facultatives que vous pouvez spécifier, consultez la documentation sur gcloud container node-pools create.

Créer un pool de nœuds avec un nœud à locataire unique partagé en utilisant un fichier d'affinité de nœud

Pour créer un pool de nœuds à l'aide d'un groupe de nœuds à locataire unique partagé, vous devez utiliser des libellés d'affinité de nœuds. Vous pouvez également utiliser l'affinité de nœuds pour choisir des groupes de nœuds d'un même projet.

Pour référencer des libellés, suivez les instructions permettant de créer un pool de nœuds, en remplaçant l'option --node-group par --sole-tenant-node-affinity-file. Transmettez un fichier JSON avec ces libellés. Par exemple, examinez la commande suivante :

  gcloud container node-pools create sole-tenant-node-pool \
      --sole-tenant-node-affinity-file /path/to/affinity/file --cluster my-cluster \
      --region us-central1 --machine-type n1-standard-4  \
      --node-locations=us-central1-a,us-central1-b,us-central1-c

Les sections suivantes décrivent les cas d'utilisation des libellés d'affinité de nœuds avec des nœuds à locataire unique.

Spécifier le nom d'un groupe de nœuds d'un projet

Pour utiliser des groupes de nœuds à locataire unique à partir d'un projet spécifique et d'un nom de groupe de nœuds, spécifiez ces valeurs dans le fichier d'affinité de nœud. Vous pouvez utiliser cette affinité si vous créez un pool de nœuds multizone dans lequel les noms de groupes de nœuds de chaque zone doivent correspondre. Pour utiliser n'importe quel groupe de nœuds du projet propriétaire spécifié, omettez l'intégralité du bloc compute-googleapis.com/node-group-name du fichier JSON.

Consultez l'exemple ci-dessous :

[
  {
    "key" : "compute.googleapis.com/project",
    "operator" : "IN",
    "values" : ["OWNER_PROJECT"]
  },
  {
    "key" : "compute.googleapis.com/node-group-name",
    "operator" : "IN",
    "values" : ["GROUP_NAME"]
  },
]

Spécifier des libellés personnalisés

Vous pouvez également utiliser l'affinité et l'anti-affinité de nœuds pour créer un pool de nœuds à l'aide de groupes de nœuds dotés de libellés personnalisés. Des libellés d'affinité par défaut sont automatiquement attribués à chaque groupe de nœuds. Vous pouvez référencer les libellés par défaut comme dans les exemples précédents ou utiliser des libellés personnalisés désignés lors de la création du modèle de nœud. Vous pouvez utiliser des libellés personnalisés pour isoler ou regrouper des charges de travail.

Consultez l'exemple ci-dessous :

[
  {
    "key" : "compute.googleapis.com/project",
    "operator" : "IN",
    "values" : ["OWNER_PROJECT"]
  },
  {
    "key" : "workload",
    "operator" : "IN",
    "values" : ["frontend"]
  },
]

Limites

Lorsque vous créez un pool de nœuds avec des nœuds à locataire unique, vous êtes responsable de la gestion de la capacité sous-jacente des groupes de nœuds à locataire unique. Examinez l'interaction des fonctionnalités suivantes avec les groupes de nœuds à locataire unique :

  • Vous pouvez activer l'autoscaling des clusters, bien qu'il soit limité par la capacité du groupe de nœuds sous-jacent. Vous pouvez configurer l'autoscaler de groupe de nœuds dans Compute Engine pour gérer automatiquement la taille de vos groupes de nœuds à locataire unique.
  • Vous ne pouvez pas activer le provisionnement automatique des nœuds pour votre cluster si vous utilisez des nœuds à locataire unique.
  • Vous pouvez utiliser n'importe quelle stratégie de mise à niveau de nœuds. Vous devez néanmoins vous assurer de disposer d'une capacité suffisante pour prendre en charge le pool de nœuds à l'aide de la stratégie choisie pour celui-ci.

Étapes suivantes