Chiffrer les données de charge de travail GPU utilisées avec des nœuds de type 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 et opérateurs en sécurité 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 maîtriser 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 en utilisant l'une des méthodes suivantes :

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

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

  • Les nœuds doivent se trouver dans une zone compatible avec l'informatique confidentielle NVIDIA. Pour en savoir plus, consultez Afficher les zones compatibles.
  • Les nœuds ne doivent utiliser qu'un seul GPU NVIDIA H100 80 Go et le type de machine a3-highgpu-1g.
  • Les nœuds doivent utiliser la technologie d'informatique confidentielle Intel TDX.
  • Vous devez disposer d'un quota de GPU H100 80 Go préemptifs (compute.googleapis.com/preemptible_nvidia_h100_gpus) dans les emplacements de vos nœuds. Pour en savoir plus sur la gestion de votre quota, consultez Afficher et gérer les quotas.

En plus de ces exigences, vous devez remplir 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
  • Utilisez des VM Spot ou flex-start (bêta).
  • Utilisez GKE version 1.33.3-gke.1392000 ou ultérieure.
  • 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, comme le temps partagé ou les GPU multi-instances.
Configuration manuelle en mode standard
  • Utilisez des VM Spot, des VM préemptives, le démarrage flexible (aperçu) ou le démarrage flexible avec 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 des pilotes 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 flex-start (aperçu) 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, comme le temps partagé ou les GPU multi-instances.

Rôles requis

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

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 des classes de calcul pour exécuter des charges de travail GPU confidentielles

Vous pouvez définir votre configuration Confidential GKE Nodes 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 la version 1.33.3-gke.1392000 ou ultérieure de GKE.

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: TDX
      priorityDefaults:
        location:
          zones: ['ZONE1','ZONE2']
      priorities:
      - gpu:
          type: nvidia-h100-80gb
          count: 1
          driverVersion: default
        spot: true
      activeMigration:
        optimizeRulePriority: true
      nodePoolAutoCreation:
        enabled: true
      whenUnsatisfiable: DoNotScaleUp
    

    Remplacez les éléments suivants :

    • COMPUTECLASS_NAME : nom de la ComputeClass.
    • 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 Intel TDX Confidential Computing. Pour en savoir plus, consultez Afficher les zones compatibles.
  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 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: 1
              requests:
                cpu: "4"
                memory: "16Gi"
    

    Remplacez COMPUTECLASS_NAME par le nom de la ComputeClass que vous avez créée.

  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 du déploiement.

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

Configurer manuellement les 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. Pour les charges de travail GPU, vos nœuds Confidential GKE Node doivent utiliser la technologie Intel TDX Confidential Computing.

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

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

  • Emplacement : région ou zone compatible avec l'informatique confidentielle NVIDIA. Pour en savoir plus, consultez Afficher les zones compatibles.
  • Type d'informatique confidentielle : Intel TDX
  • 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 des pilotes 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 Activer les nœuds Confidential GKE Node sur les 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 console Google Cloud , 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 Ajouter un pool de nœuds. La page Ajouter un pool de nœuds s'ouvre.

    4. 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 figure dans la section Disponibilité.
    5. Dans le menu de navigation, cliquez sur Nœuds.

    6. 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 NVIDIA H100 80 Go.
      3. Dans le menu Nombre de GPU, 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 du pilote pour la version de GKE du nœud. Nécessite la version 1.33.3-gke.1392000 de GKE ou une version ultérieure.
        • Gérée par l'utilisateur : ignorer 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 a3-highgpu-1g.

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

    7. 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 sur des spot VM ou en utilisant le démarrage flexible avec provisionnement en file d'attente.

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

      gcloud container node-pools create NODE_POOL_NAME \
          --cluster=CLUSTER_NAME \
          --confidential-node-type=tdx --location=LOCATION \
          --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \
          --spot --accelerator=type=nvidia-h100-80gb,count=1,gpu-driver-version=DRIVER_VERSION \
          --machine-type=a3-highgpu-1g
      

      Remplacez les éléments suivants :

      • NODE_POOL_NAME : nom de votre nouveau pool de nœuds.
      • CLUSTER_NAME : nom de votre cluster existant.
      • LOCATION : emplacement de votre nouveau pool de nœuds. L'emplacement doit être compatible avec l'utilisation de GPU dans les 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. Ces zones doivent être compatibles avec l'informatique confidentielle NVIDIA. Pour en savoir plus, consultez Afficher les zones compatibles.
      • DRIVER_VERSION : version du pilote de GPU à installer. Spécifiez une des valeurs suivantes :

      • default : installe la version par défaut du pilote pour la version de GKE du nœud. Nécessite la version 1.33.3-gke.1392000 de GKE ou une version ultérieure.

      • latest : installe la dernière version de pilote pour la version de GKE du nœud. Nécessite la version 1.33.3-gke.1392000 de GKE ou une version ultérieure.

      • disabled : ignorer 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.

    • Créez un pool de nœuds GPU qui exécute des nœuds Confidential GKE en utilisant le démarrage flexible avec provisionnement en file d'attente :

      gcloud container node-pools create NODE_POOL_NAME \
          --cluster=CLUSTER_NAME \
          --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \
          --machine-type=a3-highgpu-1g --confidential-node-type=tdx \
          --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=nvidia-h100-80gb,count=1,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 provisionnement en file d'attente, consultez 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 la technologie Intel TDX Confidential Computing, consultez Mettre à jour un pool de nœuds existant.

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

Si vous n'avez pas activé l'installation automatique des pilotes 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 GKE confidentiels.

Cette modification nécessite de recréer les nœuds, ce qui peut perturber 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 Planifier les interruptions liées aux mises à jour des nœuds.

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

Résoudre les problèmes

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

Étapes suivantes