Encripta los datos en uso de cargas de trabajo de GPU con Confidential GKE Nodes

Puedes encriptar los datos de las cargas de trabajo de GPU en uso ejecutando las cargas de trabajo en Confidential Google Kubernetes Engine Nodes encriptados. En esta página, se muestra a los ingenieros y operadores de seguridad cómo mejorar la seguridad de los datos en las cargas de trabajo aceleradas, como las tareas de IA y AA. Debes estar familiarizado con los siguientes conceptos:

Acerca de la ejecución de cargas de trabajo de GPU en Confidential GKE Nodes

Puedes solicitar Confidential GKE Nodes para tus cargas de trabajo de GPU con uno de los siguientes métodos:

Limitaciones

El modo Autopilot solo admite GPU NVIDIA H100 (80 GB) con Confidential GKE Nodes.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Para usar Google Cloud CLI en esta tarea, instala y, luego, inicializa la gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando gcloud components update para obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos de este documento.

Requisitos

Independientemente del método de configuración de Confidential GKE Nodes que elijas, debes cumplir con todos los requisitos que se indican a continuación:

  • Los nodos deben estar en una zona que admita Confidential Computing de NVIDIA. Para obtener más información, consulta Zonas.
  • Los nodos deben usar un tipo de máquina, una tecnología de Confidential Computing y una GPU compatibles. Para obtener más información, consulta Tipos de máquinas.
  • Debes tener una cuota interrumpible para las GPU que deseas usar en las ubicaciones de tus nodos. Por ejemplo, si usas GPUs NVIDIA H100 (80 GB), debes tener cuota para compute.googleapis.com/preemptible_nvidia_h100_gpus. Para obtener más información sobre cómo administrar tu cuota, consulta Visualiza y administra cuotas.

Además de estos requisitos, debes cumplir con condiciones específicas según el método de configuración de Confidential GKE Nodes que elijas, como se describe en la siguiente tabla:

Método de configuración Requisitos Limitaciones
ComputeClasses
  • No puedes usar el inicio flexible con el aprovisionamiento en cola con ComputeClasses.
  • No puedes usar funciones de uso compartido de GPU, como el uso compartido de tiempo o las GPU de instancias múltiples.
Configuración manual en el modo estándar
  • Usa VMs Spot, VMs interrumpibles, inicio flexible (versión preliminar) o inicio flexible con aprovisionamiento en cola.
  • Usa una de las siguientes versiones de GKE:
    • Instalación manual del controlador de GPU: 1.32.2-gke.1297000 o posterior.
    • Instalación automática del controlador de GPU: 1.33.3-gke.1392000 o posterior.
    • Inicio flexible con aprovisionamiento en cola: 1.32.2-gke.1652000 o posterior.
  • No puedes usar inicio flexible (versión preliminar) si habilitas Confidential GKE Nodes para todo el clúster.
  • No puedes usar funciones de uso compartido de GPU, como el uso compartido de tiempo o las GPU de instancias múltiples.

Roles obligatorios

Para obtener los permisos que necesitas para crear Confidential GKE Nodes, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto de Google Cloud :

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Usa ComputeClasses para ejecutar cargas de trabajo de GPU confidenciales

Puedes definir la configuración de Confidential GKE Nodes en una ComputeClass. Las ComputeClasses son recursos personalizados de Kubernetes que te permiten establecer de forma declarativa los parámetros de configuración de los nodos para el escalado automático y la programación de GKE. Puedes seguir los pasos de esta sección en cualquier clúster de Autopilot o Standard que ejecute la versión 1.33.3-gke.1392000 o posterior de GKE.

Para usar una ComputeClass y ejecutar cargas de trabajo de GPU en Confidential GKE Nodes, sigue estos pasos:

  1. Guarda el siguiente manifiesto de ComputeClass como un archivo 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
    

    Reemplaza lo siguiente:

    • COMPUTECLASS_NAME: Es un nombre para la ComputeClass.
    • CONFIDENTIAL_COMPUTE_TECHNOLOGY: Es la tecnología de Confidential Computing que se usará, como TDX. Elige una tecnología que sea compatible con la GPU que deseas usar.

    • ZONE1,ZONE2: Es una lista separada por comas de las zonas en las que se crearán los nodos, como ['us-central1-a','us-central1-b']. Especifica las zonas que admiten la tecnología de Confidential Computing y el tipo de máquina que deseas usar. Para obtener más información, consulta Zonas.

    • GPU_TYPE: Es el tipo de GPU que se usará, como nvidia-h100-80gb.

    • GPU_COUNT: Es la cantidad de GPU que se deben conectar a cada nodo. Especifica un valor que Confidential VM admita para el tipo de GPU. Por ejemplo, si eliges el tipo de GPU nvidia-h100-80gb, debes especificar un valor de 1 en este campo.

  2. Crea la ComputeClass:

    kubectl apply -f PATH_TO_MANIFEST
    

    Reemplaza PATH_TO_MANIFEST por la ruta de acceso al archivo de manifiesto de ComputeClass.

  3. Para ejecutar tu carga de trabajo de GPU en Confidential GKE Nodes, selecciona la ComputeClass en el manifiesto de la carga de trabajo. Por ejemplo, guarda el siguiente manifiesto de Deployment, que selecciona una ComputeClass y GPUs, como un archivo 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"
    

    Reemplaza lo siguiente:

    • COMPUTECLASS_NAME: Es el nombre de la ComputeClass que creaste.
    • GPU_REQUEST: Es la cantidad de GPUs que se usarán en el contenedor. Especifica un valor que sea menor o igual que el valor que especificaste en el campo gpu.count de ComputeClass.
  4. Crea el Deployment:

    kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
    

    Reemplaza PATH_TO_DEPLOYMENT_MANIFEST por la ruta de acceso al manifiesto de Deployment.

Cuando creas tu carga de trabajo de GPU, GKE usa la configuración de ComputeClass para crear Confidential GKE Nodes con GPUs conectadas.

Configura Confidential GKE Nodes de forma manual en GKE Standard

Puedes ejecutar cargas de trabajo de GPU en Confidential GKE Nodes en clústeres o grupos de nodos en modo estándar.

Habilita Confidential GKE Nodes en clústeres de Standard nuevos

Puedes habilitar Confidential GKE Nodes para todo tu clúster de Standard, de modo que cada grupo de nodos de GPU que crees use la misma tecnología de Confidential Computing. Cuando crees un clúster en modo estándar nuevo que use Confidential GKE Nodes para cargas de trabajo de GPU, asegúrate de especificar los siguientes parámetros de configuración del clúster:

  • Ubicación: Es una región o una zona que admite Confidential Computing de NVIDIA. Para obtener más información, consulta Zonas.
  • Tipo de Confidential Computing: Es una tecnología de Confidential Computing que admite GPUs. Para obtener más información, consulta Tipos de máquinas.
  • Versión del clúster: una de las siguientes versiones, según cómo quieras instalar los controladores de GPU:

    • Instalación manual del controlador de GPU: 1.32.2-gke.1297000 o posterior.
    • Instalación automática del controlador de GPU: 1.33.3-gke.1392000 o posterior.

De manera opcional, puedes configurar las GPU para el grupo de nodos predeterminado que GKE crea en tu clúster. Sin embargo, te recomendamos que uses un grupo de nodos independiente para tus GPUs, de modo que al menos un grupo de nodos del clúster pueda ejecutar cualquier carga de trabajo.

Para obtener más información, consulta Habilita Confidential GKE Nodes en clústeres de Standard.

Usa Confidential GKE Nodes con GPUs en grupos de nodos de Standard

Si tu clúster no tiene habilitados los Confidential GKE Nodes, puedes habilitarlos en grupos de nodos de GPU nuevos o existentes específicos. El plano de control y los grupos de nodos deben cumplir con los requisitos de la sección Disponibilidad. Cuando configuras el grupo de nodos, puedes elegir instalar los controladores de GPU de forma automática o manual.

  • Para crear un grupo de nodos de GPU nuevo que use Confidential GKE Nodes, selecciona una de las siguientes opciones:

    Console

    1. En la consola de Google Cloud , accede a la página de los clústeres de Kubernetes.

      Ir a clústeres de Kubernetes

    2. Haz clic en el nombre del clúster en modo Estándar que deseas modificar.

    3. Haz clic en la pestaña Nodos.

    4. Haz clic en Crear grupo de nodos administrado por el usuario. Se abrirá la página Agregar un grupo de nodos.

    5. En el panel Detalles del grupo de nodos, haz lo siguiente:

      1. Selecciona Especificar las ubicaciones de los nodos.
      2. Selecciona solo las zonas compatibles que se indican en la sección Disponibilidad.
      3. Asegúrate de que la versión del plano de control sea una de las que aparecen en la sección Disponibilidad.
    6. En el menú de navegación, haz clic en Nodos.

    7. En el panel Establecer la configuración de los nodos, haz lo siguiente:

      1. En la sección Configuración de la máquina, haz clic en GPU.
      2. En el menú Tipo de GPU, selecciona un tipo de GPU que sea compatible con Confidential Computing.
      3. En el menú Cantidad de GPU, selecciona la cantidad de GPU que se conectarán a cada nodo. Selecciona un valor que sea compatible con el tipo de GPU que elegiste. Por ejemplo, si elegiste GPU NVIDIA H100 (80 GB), selecciona 1.
      4. Asegúrate de que no esté seleccionada la opción Habilitar el uso compartido de la GPU.
      5. En la sección Instalación del controlador de GPU, selecciona una de las siguientes opciones:

        • Administrada por Google: GKE instala un controlador de forma automática. Si seleccionas esta opción, en la lista desplegable Versión, elige una de las siguientes versiones del controlador:

          • Predeterminada: Instala la versión predeterminada del controlador para la versión de GKE del nodo. Se requiere la versión 1.33.3-gke.1392000 o posterior de GKE.
          • Más reciente: Instala la versión más reciente del controlador para la versión de GKE del nodo. Se requiere la versión 1.33.3-gke.1392000 o posterior de GKE.
        • Administrada por el usuario: Omite la instalación automática del controlador. Si seleccionas esta opción, debes instalar un controlador de GPU compatible de forma manual. Se requiere la versión 1.32.2-gke.1297000 o una posterior.

      6. En la sección Tipo de máquina, asegúrate de que el tipo de máquina sea un tipo de máquina de GPU compatible con Confidential VM para el tipo de GPU que seleccionaste.

      7. Selecciona Habilitar nodos en VMs Spot o configura VMs de inicio flexible con aprovisionamiento en cola.

    8. Cuando tengas todo listo para crear el grupo de nodos, haz clic en Crear.

    gcloud

    Puedes crear grupos de nodos de GPU que ejecuten Confidential GKE Nodes en VMs Spot o con VMs de inicio flexible con aprovisionamiento en cola.

    • Crea un grupo de nodos de GPU que ejecute Confidential GKE Nodes en VMs Spot:

      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
      

      Reemplaza lo siguiente:

      • NODE_POOL_NAME: Es un nombre para tu grupo de nodos nuevo.
      • CLUSTER_NAME: Es el nombre del clúster existente.
      • CONFIDENTIAL_COMPUTE_TECHNOLOGY: Es la tecnología de Confidential Computing que se usará, como TDX. Elige una tecnología que sea compatible con la GPU que deseas usar.
      • LOCATION: Es la ubicación del grupo de nodos nuevo. La ubicación debe admitir el uso de GPUs en Confidential GKE Nodes.
      • NODE_LOCATION1,NODE_LOCATION2,...: Es una lista separada por comas de las zonas en las que se ejecutarán los nodos. Especifica las zonas que admiten la tecnología de Confidential Computing y el tipo de máquina que deseas usar. Para obtener más información, consulta Zonas.
      • GPU_TYPE: Es el tipo de GPU que se usará, como nvidia-h100-80gb.
      • GPU_COUNT: Es la cantidad de GPUs que se deben conectar a cada nodo. Especifica un valor que Confidential VM admita para el tipo de GPU. Por ejemplo, si eliges el tipo de GPU nvidia-h100-80gb, debes especificar un valor de 1 en este campo.

      • DRIVER_VERSION: Es la versión del controlador de GPU que se instalará. Especifica uno de los siguientes valores:

        • default: Instala la versión predeterminada del controlador para la versión de GKE del nodo. Se requiere la versión 1.33.3-gke.1392000 o posterior de GKE.
        • latest: Instala la versión más reciente del controlador para la versión de GKE del nodo. Se requiere la versión 1.33.3-gke.1392000 o posterior de GKE.
        • disabled: Omite la instalación automática del controlador. Si especificas este valor, debes instalar un controlador de GPU compatible de forma manual. Se requiere la versión 1.32.2-gke.1297000 o una posterior.
      • MACHINE_TYPE: Es el tipo de máquina que se usará para los nodos. Especifica un tipo de máquina de GPU que sea compatible con Confidential VM para el tipo de GPU que seleccionaste.
    • Crea un grupo de nodos de GPU que ejecute Confidential GKE Nodes con VMs de inicio flexible con aprovisionamiento en cola:

      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 --no-enable-autorepair \
          --accelerator=type=GPU_TYPE,count=GPU_COUNT,gpu-driver-version=DRIVER_VERSION
      

      Reemplaza TOTAL_MAX_NODES por la cantidad máxima de nodos a la que el grupo de nodos puede escalar de forma automática.

      Para obtener más información sobre las opciones de configuración en el inicio flexible con aprovisionamiento en cola, consulta Ejecuta una carga de trabajo a gran escala con inicio flexible con aprovisionamiento en cola.

  • Para actualizar tus grupos de nodos existentes y usar Confidential Computing, consulta Actualiza un grupo de nodos existente.

Instala de forma manual los controladores de GPU que admiten Confidential GKE Nodes

Si no habilitaste la instalación automática de controladores cuando creaste o actualizaste tus grupos de nodos, debes instalar de forma manual un controlador de GPU que admita los Confidential GKE Nodes.

Este cambio requiere volver a crear los nodos, lo que puede causar interrupciones en tus cargas de trabajo en ejecución. Para obtener detalles sobre este cambio específico, busca la fila correspondiente en la tabla Cambios manuales que vuelven a crear los nodos con una estrategia de actualización de nodos sin respetar las políticas de mantenimiento. Para obtener más información sobre las actualizaciones de nodos, consulta Planifica las interrupciones de las actualizaciones de nodos.

Para obtener instrucciones, consulta la pestaña "COS" en Instala controladores de GPU de NVIDIA de forma manual.

Solucionar problemas

Para obtener información sobre la solución de problemas, consulta Soluciona problemas de las GPU en GKE.

¿Qué sigue?