Chiffrer les données de charge de travail GPU en cours d'utilisation avec des nœuds Confidential GKE Node

Vous pouvez chiffrer les données de charge de travail GPU en cours d'utilisation en exécutant les charges de travail sur des nœuds Confidential Google Kubernetes Engine chiffrés. Cette page explique aux ingénieurs en sécurité et aux opérateurs comment améliorer la sécurité des données dans les charges de travail accélérées, telles que les tâches d'IA/ML. Vous devez connaître les concepts suivants :

À propos de l'exécution de charges de travail GPU sur des nœuds Confidential GKE Node

Vous pouvez demander des nœuds Confidential GKE Node pour vos charges de travail GPU à l'aide de l'une des méthodes suivantes :

Limites

Le mode Autopilot n'est compatible qu'avec les GPU NVIDIA H100 (80 Go) avec les nœuds Confidential GKE Node.

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 la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la gcloud components update commande. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.

Conditions requises

Quelle que soit la méthode de configuration des nœuds Confidential GKE Node que vous choisissez, vous devez respecter toutes les exigences suivantes :

  • Les nœuds doivent se trouver dans une zone compatible avec NVIDIA Confidential Computing. Pour en savoir plus, consultez la section Afficher les zones compatibles.
  • Les nœuds doivent utiliser un type de machine, une technologie informatique confidentielle et un GPU compatibles. Pour en savoir plus, consultez la section Configurations compatibles.
  • Vous devez disposer d'un quota préemptif pour les GPU que vous souhaitez utiliser dans les emplacements de vos nœuds. Par exemple, si vous utilisez des GPU NVIDIA H100 (80 Go), vous devez disposer d'un quota pour compute.googleapis.com/preemptible_nvidia_h100_gpus. Pour en savoir plus sur la gestion de votre quota, consultez la section Afficher et gérer les quotas.

En plus de ces exigences, vous devez respecter des conditions spécifiques en fonction de la méthode de configuration des nœuds Confidential GKE Node que vous choisissez, comme décrit dans le tableau suivant :

Méthode de configuration Conditions requises Limites
ComputeClasses
  • Vous ne pouvez pas utiliser le démarrage flexible avec le provisionnement en file d'attente avec ComputeClasses.
  • Vous ne pouvez pas utiliser les fonctionnalités de partage de GPU telles que le temps partagé ou les GPU multi-instances.
Configuration manuelle en mode Standard
  • Utilisez des Spot VM, des VM préemptives, le démarrage flexible (bêta) ou le démarrage flexible avec le provisionnement en file d'attente.
  • Utilisez l'une des versions GKE suivantes :
    • Installation manuelle du pilote de GPU: 1.32.2-gke.1297000 ou version ultérieure.
    • Installation automatique du pilote de GPU: 1.33.3-gke.1392000 ou version ultérieure.
    • Démarrage flexible avec provisionnement en file d'attente : 1.32.2-gke.1652000 ou version ultérieure.
  • Vous ne pouvez pas utiliser le démarrage flexible (bêta) si vous activez les nœuds Confidential GKE Node pour l'ensemble du cluster.
  • Vous ne pouvez pas utiliser les fonctionnalités de partage de GPU telles que le temps partagé ou les GPU multi-instances.

Rôles requis

Pour obtenir les autorisations nécessaires pour créer des nœuds Confidential GKE Node, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le Cloud de Confiance projet :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Utiliser ComputeClasses pour exécuter des charges de travail GPU confidentielles

Vous pouvez définir la configuration de vos nœuds Confidential GKE Node dans une ComputeClass. Les ComputeClasses sont des ressources personnalisées Kubernetes qui vous permettent de définir de manière déclarative les configurations de nœuds pour l'autoscaling et la planification GKE. Vous pouvez suivre les étapes de cette section dans n'importe quel cluster Autopilot ou Standard exécutant GKE version 1.33.3-gke.1392000 ou ultérieure.

Pour utiliser une ComputeClass afin d'exécuter des charges de travail GPU sur des nœuds Confidential GKE Node, procédez comme suit :

  1. Enregistrez le fichier manifeste ComputeClass suivant en tant que fichier YAML :

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTECLASS_NAME
    spec:
      nodePoolConfig:
        confidentialNodeType: CONFIDENTIAL_COMPUTE_TECHNOLOGY
      priorityDefaults:
        location:
          zones: ['ZONE1','ZONE2']
      priorities:
      - gpu:
          type: GPU_TYPE
          count: GPU_COUNT
          driverVersion: default
        spot: true
      activeMigration:
        optimizeRulePriority: true
      nodePoolAutoCreation:
        enabled: true
      whenUnsatisfiable: DoNotScaleUp
    

    Remplacez les éléments suivants :

    • COMPUTECLASS_NAME : nom de la ComputeClass.
    • CONFIDENTIAL_COMPUTE_TECHNOLOGY: technologie informatique confidentielle à utiliser, telle que TDX. Choisissez une technologie compatible avec le GPU que vous souhaitez utiliser.

    • ZONE1,ZONE2 : liste de zones séparées par une virgule dans lesquelles créer des nœuds, par exemple ['us-central1-a','us-central1-b']. Spécifiez les zones compatibles avec la technologie informatique confidentielle et le type de machine que vous souhaitez utiliser. Pour en savoir plus, consultez la section Afficher les zones compatibles.

    • GPU_TYPE: type de GPU à utiliser, tel que nvidia-h100-80gb.

    • GPU_COUNT: nombre de GPU à associer à chaque nœud. Spécifiez une valeur compatible avec Confidential VM pour le type de GPU. Par exemple, si vous choisissez le type de GPU nvidia-h100-80gb, alors vous devez spécifier la valeur 1 dans ce champ.

  2. Créez la ComputeClass :

    kubectl apply -f PATH_TO_MANIFEST
    

    Remplacez PATH_TO_MANIFEST par le chemin d'accès au fichier manifeste ComputeClass.

  3. Pour exécuter votre charge de travail GPU sur des nœuds Confidential GKE Node, sélectionnez la ComputeClass dans le fichier manifeste de la charge de travail. Par exemple, enregistrez le fichier manifeste de déploiement suivant, qui sélectionne une ComputeClass et des GPU, en tant que fichier YAML :

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: confidential-gpu-deployment
      labels:
        app: conf-gpu
    spec:
      selector:
        matchLabels:
          app: conf-gpu
      replicas: 1
      template:
        metadata:
          labels:
            app: conf-gpu
        spec:
          nodeSelector:
            cloud.google.com/compute-class: COMPUTECLASS_NAME
          containers:
          - name: example-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            resources:
              limits:
                cpu: "4"
                memory: "16Gi"
                nvidia.com/gpu: GPU_REQUEST
              requests:
                cpu: "4"
                memory: "16Gi"
    

    Remplacez les éléments suivants :

    • COMPUTECLASS_NAME: nom de la ComputeClass que vous avez créée.
    • GPU_REQUEST: nombre de GPU à utiliser dans le conteneur. Spécifiez une valeur inférieure ou égale à celle que vous avez spécifiée dans le champ gpu.count de la ComputeClass.
  4. Créez le déploiement :

    kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
    

    Remplacez PATH_TO_DEPLOYMENT_MANIFEST par le chemin d'accès au fichier manifeste de déploiement.

Lorsque vous créez votre charge de travail GPU, GKE utilise la configuration de la ComputeClass pour créer des nœuds Confidential GKE Node avec des GPU associés.

Configurer manuellement des nœuds Confidential GKE Node dans GKE Standard

Vous pouvez exécuter des charges de travail GPU sur des nœuds Confidential GKE Node dans des clusters ou des pools de nœuds en mode Standard.

Activer les nœuds Confidential GKE Node dans les nouveaux clusters Standard

Vous pouvez activer les nœuds Confidential GKE Node pour l'ensemble de votre cluster Standard, de sorte que chaque pool de nœuds GPU que vous créez utilise la même technologie informatique confidentielle. Lorsque vous créez un cluster en mode Standard qui utilise des nœuds Confidential GKE Node pour les charges de travail GPU, assurez-vous de spécifier les paramètres de cluster suivants :

  • Emplacement : région ou zone compatible avec NVIDIA Confidential Computing. Pour en savoir plus, consultez la section Afficher les zones compatibles.
  • Type d'informatique confidentielle : technologie Confidential Computing compatible avec les GPU. Pour en savoir plus, consultez la section Configurations compatibles.
  • Version du cluster : l'une des versions suivantes, selon la façon dont vous souhaitez installer vos pilotes de GPU :

    • Installation manuelle du pilote de GPU : 1.32.2-gke.1297000 ou version ultérieure.
    • Installation automatique du pilote de GPU : 1.33.3-gke.1392000 ou version ultérieure.

Vous pouvez éventuellement configurer des GPU pour le pool de nœuds par défaut que GKE crée dans votre cluster. Toutefois, nous vous recommandons d'utiliser un pool de nœuds distinct pour vos GPU, afin qu'au moins un pool de nœuds du cluster puisse exécuter n'importe quelle charge de travail.

Pour en savoir plus, consultez la section Activer les nœuds Confidential GKE Node sur des clusters Standard.

Utiliser des nœuds Confidential GKE Node avec des GPU dans des pools de nœuds Standard

Si les nœuds Confidential GKE Node ne sont pas activés dans votre cluster, vous pouvez les activer dans des pools de nœuds GPU spécifiques, nouveaux ou existants. Le plan de contrôle et les pools de nœuds doivent répondre aux exigences de la section Disponibilité. Lorsque vous configurez le pool de nœuds, vous pouvez choisir d'installer les pilotes de GPU automatiquement ou manuellement.

  • Pour créer un pool de nœuds GPU qui utilise des nœuds Confidential GKE Node, sélectionnez l'une des options suivantes :

    Console

    1. Dans la Cloud de Confiance console, accédez à la page Clusters Kubernetes :

      Accéder à la page "Clusters Kubernetes"

    2. Cliquez sur le nom du cluster en mode Standard à modifier.

    3. Cliquez sur l'onglet Nœuds.

    4. Cliquez sur Créer un pool de nœuds géré par l'utilisateur. La page Ajouter un pool de nœuds s'ouvre.

    5. Dans le volet Détails du pool de nœuds, procédez comme suit :

      1. Sélectionnez Spécifier les emplacements de nœuds.
      2. Sélectionnez uniquement les zones compatibles listées dans la section Disponibilité.
      3. Assurez-vous que la version du plan de contrôle est l'une des versions qui est listée dans la section Disponibilité.
    6. Dans le menu de navigation, cliquez sur Nœuds.

    7. Dans le volet Configurer les paramètres des nœuds, procédez comme suit :

      1. Dans la section Configuration de la machine, cliquez sur GPU.
      2. Dans le menu Type de GPU, sélectionnez un type de GPU compatible avec informatique confidentielle.
      3. Dans le menu Nombre de GPU, sélectionnez le nombre de GPU à associer à chaque nœud. Sélectionnez une valeur compatible avec le type de GPU que vous avez choisi. Par exemple, si vous avez choisi des GPU NVIDIA H100 (80 Go), sélectionnez 1.
      4. Assurez-vous que l'option Activer le partage de GPU n'est pas sélectionnée.
      5. Dans la section Installation du pilote de GPU, sélectionnez l'une des options suivantes :

        • Gérée par Google : GKE installe automatiquement un pilote. Si vous sélectionnez cette option, dans la liste déroulante Version, sélectionnez l'une des versions de pilote suivantes :

          • Par défaut : installe la version de pilote par défaut pour la version de GKE du nœud. Nécessite GKE version 1.33.3-gke.1392000 ou ultérieure.
          • Dernière version : installe la dernière version de pilote pour la version de GKE du nœud. Nécessite GKE version 1.33.3-gke.1392000 ou ultérieure.
        • Gérée par l'utilisateur : ignore l'installation automatique du pilote. Si vous sélectionnez cette option, vous devez installer manuellement un pilote de GPU compatible. Nécessite la version 1.32.2-gke.1297000 ou ultérieure.

      6. Dans la section Type de machine, assurez-vous que le type de machine est un type de machine GPU compatible avec Confidential VM pour le type de GPU sélectionné.

      7. Sélectionnez Activer les nœuds sur les Spot VM ou configurez des VM à démarrage flexible avec le provisionnement en file d'attente.

    8. Lorsque vous êtes prêt à créer le pool de nœuds, cliquez sur Créer.

    gcloud

    Vous pouvez créer des pools de nœuds GPU qui exécutent des nœuds Confidential GKE Node sur des Spot VM ou à l'aide de VM à démarrage flexible avec le provisionnement en file d'attente.

    • Créez un pool de nœuds GPU qui exécute des nœuds Confidential GKE Node sur des Spot VM :

      gcloud container node-pools create NODE_POOL_NAME \
          --cluster=CLUSTER_NAME \
          --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY \
          --location=LOCATION \
          --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \
          --spot \
          --accelerator=type=GPU_TYPE,count=GPU_COUNT,gpu-driver-version=DRIVER_VERSION \
          --machine-type=MACHINE_TYPE
      

      Remplacez les éléments suivants :

      • NODE_POOL_NAME : nom de votre nouveau pool de nœuds.
      • CLUSTER_NAME : nom de votre cluster existant.
      • CONFIDENTIAL_COMPUTE_TECHNOLOGY: technologie informatique confidentielle à utiliser, telle que TDX. Choisissez une technologie compatible avec le GPU que vous souhaitez utiliser.
      • LOCATION : emplacement de votre nouveau pool de nœuds. L'emplacement doit être compatible avec l'utilisation de GPU dans des nœuds Confidential GKE Node.
      • NODE_LOCATION1,NODE_LOCATION2,...: liste de zones séparées par une virgule dans lesquelles exécuter les nœuds. Spécifiez les zones compatibles avec la technologie informatique confidentielle et le type de machine que vous souhaitez utiliser. Pour en savoir plus, consultez la section Afficher les zones compatibles.
      • GPU_TYPE: type de GPU à utiliser, tel que nvidia-h100-80gb.
      • GPU_COUNT: nombre de GPU à associer à chaque nœud. Spécifiez une valeur compatible avec Confidential VM pour le type de GPU. Par exemple, si vous choisissez le type de GPU nvidia-h100-80gb, vous devez spécifier la valeur 1 dans ce champ.

      • DRIVER_VERSION: version du pilote de GPU à installer. Spécifiez une des valeurs suivantes :

        • default: installe la version de pilote par défaut pour la version de GKE du nœud. Nécessite GKE version 1.33.3-gke.1392000 ou ultérieure.
        • latest: installe la dernière version de pilote pour la version de GKE du nœud. Nécessite GKE version 1.33.3-gke.1392000 ou ultérieure.
        • disabled : ignore l'installation automatique du pilote. Si vous spécifiez cette valeur, vous devez installer manuellement un pilote de GPU compatible. Nécessite la version 1.32.2-gke.1297000 ou ultérieure.
      • MACHINE_TYPE: type de machine à utiliser pour les nœuds. Spécifiez un type de machine GPU compatible avec Confidential VM pour le type de GPU sélectionné.
    • Créez un pool de nœuds GPU qui exécute des nœuds Confidential GKE Node à l'aide de VM à démarrage flexible avec le provisionnement en file d'attente :

      gcloud container node-pools create NODE_POOL_NAME \
          --cluster=CLUSTER_NAME \
          --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \
          --machine-type=MACHINE_TYPE \
          --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY \
          --location=LOCATION \
          --flex-start --enable-queued-provisioning \
          --enable-autoscaling --num-nodes=0 --total-max-nodes=TOTAL_MAX_NODES \
          --location-policy=ANY --reservation-affinity=none --no-enable-autorepair \
          --accelerator=type=GPU_TYPE,count=GPU_COUNT,gpu-driver-version=DRIVER_VERSION
      

      Remplacez TOTAL_MAX_NODES par le nombre maximal de nœuds que le pool de nœuds peut mettre à l'échelle automatiquement.

      Pour en savoir plus sur les options de configuration du démarrage flexible avec le provisionnement en file d'attente, consultez la section Exécuter une charge de travail à grande échelle avec le démarrage flexible et le provisionnement en file d'attente.

  • Pour mettre à jour vos pools de nœuds existants afin d'utiliser informatique confidentielle, consultez la section Mettre à jour un pool de nœuds existant.

Installer manuellement des pilotes de GPU compatibles avec les nœuds Confidential GKE Node

Si vous n'avez pas activé l'installation automatique du pilote lorsque vous avez créé ou mis à jour vos pools de nœuds, vous devez installer manuellement un pilote de GPU compatible avec les nœuds Confidential GKE Node.

Cette modification nécessite de recréer les nœuds, ce qui peut entraîner des interruptions de vos charges de travail en cours d'exécution. Pour en savoir plus sur cette modification spécifique, recherchez la ligne correspondante dans le tableau Modifications manuelles qui recréent les nœuds à l'aide d'une stratégie de mise à niveau des nœuds sans respecter les règles de maintenance. Pour en savoir plus sur les mises à jour des nœuds, consultez la section Planifier les interruptions liées aux mises à jour des nœuds.

Pour obtenir des instructions, consultez l'onglet "COS" de la section Installer manuellement des pilotes de GPU NVIDIA.

Résoudre les problèmes

Pour obtenir des informations de dépannage, consultez la section Résoudre les problèmes liés aux GPU dans GKE.

Étape suivante