Encriptar dados de carga de trabalho da GPU em utilização com nós do GKE confidenciais


Pode encriptar os dados de carga de trabalho da GPU em utilização executando as cargas de trabalho em nós do Google Kubernetes Engine confidenciais encriptados. Esta página mostra aos engenheiros de segurança e aos operadores como melhorar a segurança dos dados em cargas de trabalho aceleradas, como tarefas de IA/ML. Deve conhecer os seguintes conceitos:

Acerca da execução de cargas de trabalho de GPU em Confidential GKE Nodes

Pode pedir Confidential GKE Nodes para as suas cargas de trabalho de GPU através de um dos seguintes métodos:

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ative a API Google Kubernetes Engine
  • Se quiser usar a CLI gcloud para esta tarefa, instale-a e, em seguida, inicialize-a. Se instalou anteriormente a CLI gcloud, execute gcloud components update para obter a versão mais recente.

Requisitos e limitações

Independentemente do método de configuração dos Confidential GKE Nodes que escolher, tem de cumprir todos os seguintes requisitos:

  • Os nós têm de estar numa zona que suporte a computação confidencial da NVIDIA. Para mais informações, consulte o artigo Veja as zonas suportadas.
  • Os nós têm de usar apenas uma GPU NVIDIA H100 de 80 GB e o a3-highgpu-1g tipo de máquina.
  • Os nós têm de usar a tecnologia de computação confidencial Intel TDX.
  • Tem de ter quota para GPUs H100 de 80 GB preemptíveis (compute.googleapis.com/preemptible_nvidia_h100_gpus) nas localizações dos nós. Para mais informações sobre a gestão da sua quota, consulte o artigo Veja e faça a gestão das quotas.

Além destes requisitos, tem de cumprir condições específicas consoante o método de configuração dos nós GKE confidenciais que escolher, conforme descrito na tabela seguinte:

Método de configuração Requisitos Limitações
ComputeClasses
  • Não pode usar o início flexível com o aprovisionamento em fila com ComputeClasses.
  • Não pode usar funcionalidades de partilha de GPU, como a partilha de tempo ou GPUs de várias instâncias.
Configuração manual no modo padrão
  • Use VMs do Spot, VMs preemptivas, início flexível (pré-visualização) ou início flexível com aprovisionamento em fila.
  • Use uma das seguintes versões do GKE:
    • Instalação manual do controlador da GPU: 1.32.2-gke.1297000 ou posterior.
    • Instalação automática do controlador da GPU: 1.33.3-gke.1392000 ou posterior.
    • Início flexível com aprovisionamento em fila: 1.32.2-gke.1652000 ou posterior.
  • Não pode usar o início flexível (Pré-visualização) se ativar os nós do GKE confidenciais para todo o cluster.
  • Não pode usar funcionalidades de partilha de GPU, como a partilha de tempo ou GPUs de várias instâncias.

Funções necessárias

Para receber as autorizações de que precisa para criar nós do GKE confidenciais, peça ao seu administrador para lhe conceder as seguintes funções de IAM no Google Cloud projeto:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Use ComputeClasses para executar cargas de trabalho de GPU confidenciais

Pode definir a configuração dos Confidential GKE Nodes numa ComputeClass. As ComputeClasses são recursos personalizados do Kubernetes que lhe permitem definir declarativamente as configurações dos nós para a escala automática e o agendamento do GKE. Pode seguir os passos nesta secção em qualquer cluster do Autopilot ou Standard que execute a versão 1.33.3-gke.1392000 ou posterior do GKE.

Para usar uma ComputeClass para executar cargas de trabalho de GPU em nós do GKE confidenciais, siga estes passos:

  1. Guarde o seguinte manifesto ComputeClass como um ficheiro 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
    

    Substitua o seguinte:

    • COMPUTECLASS_NAME: um nome para o ComputeClass.
    • ZONE1,ZONE2: uma lista separada por vírgulas de zonas para criar nós, como ['us-central1-a','us-central1-b']. Especifique zonas que suportam a tecnologia de computação confidencial Intel TDX. Para mais informações, consulte o artigo Veja as zonas suportadas.
  2. Crie a ComputeClass:

    kubectl apply -f PATH_TO_MANIFEST
    

    Substitua PATH_TO_MANIFEST pelo caminho para o ficheiro de manifesto ComputeClass.

  3. Para executar a sua carga de trabalho de GPU em nós do GKE confidenciais, selecione a ComputeClass no manifesto da carga de trabalho. Por exemplo, guarde o seguinte manifesto de implementação, que seleciona uma ComputeClass e GPUs, como um ficheiro 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"
    

    Substitua COMPUTECLASS_NAME pelo nome da ComputeClass que criou.

  4. Crie a implementação:

    kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
    

    Substitua PATH_TO_DEPLOYMENT_MANIFEST pelo caminho para o manifesto de implementação.

Quando cria a sua carga de trabalho de GPU, o GKE usa a configuração na ComputeClass para criar nós do GKE confidenciais com GPUs anexadas.

Configure manualmente nós do GKE confidenciais no GKE Standard

Pode executar cargas de trabalho de GPU em nós do GKE confidenciais em clusters ou conjuntos de nós no modo padrão. Para cargas de trabalho de GPU, os nós do GKE confidenciais têm de usar a tecnologia de computação confidencial Intel TDX.

Ative os nós do GKE confidenciais em novos clusters padrão

Pode ativar os nós do GKE confidenciais para todo o cluster padrão, para que cada conjunto de nós de GPU que criar use a mesma tecnologia de computação confidencial. Quando cria um novo cluster no modo padrão que usa nós do GKE confidenciais para cargas de trabalho de GPU, certifique-se de que especifica as seguintes definições do cluster:

  • Localização: uma região ou uma zona que suporta a computação confidencial da NVIDIA. Para mais informações, consulte o artigo Veja as zonas suportadas.
  • Tipo de computação confidencial: Intel TDX
  • Versão do cluster: uma das seguintes versões, consoante a forma como quer instalar os controladores da GPU:

    • Instalação manual do controlador da GPU: 1.32.2-gke.1297000 ou posterior.
    • Instalação automática de controladores de GPU: 1.33.3-gke.1392000 ou posterior.

Opcionalmente, pode configurar GPUs para o conjunto de nós predefinido que o GKE cria no seu cluster. No entanto, recomendamos que use um conjunto de nós separado para as GPUs, para que, pelo menos, um conjunto de nós no cluster possa executar qualquer carga de trabalho.

Para mais informações, consulte o artigo Ative os nós confidenciais do GKE em clusters padrão.

Use nós do GKE confidenciais com GPUs em node pools padrão

Se o seu cluster não tiver os nós GKE confidenciais ativados, pode ativar os nós GKE confidenciais em pools de nós GPU novos ou existentes específicos. O plano de controlo e os conjuntos de nós têm de cumprir os requisitos na secção Disponibilidade. Quando configura o conjunto de nós, pode optar por instalar os controladores de GPU automaticamente ou manualmente.

  • Para criar um novo conjunto de nós de GPU que use nós do GKE confidenciais, selecione uma das seguintes opções:

    Consola

    1. Na Google Cloud consola, aceda à página Clusters do Kubernetes:

      Aceda aos clusters do Kubernetes

    2. Clique no nome do cluster do modo padrão a modificar.

    3. Clique em Adicionar conjunto de nós. É apresentada a página Adicionar um node pool.

    4. No painel Detalhes do conjunto de nós, faça o seguinte:

      1. Selecione Especificar localizações de nós.
      2. Selecione apenas as zonas suportadas que estão listadas na secção Disponibilidade.
      3. Certifique-se de que a versão do plano de controlo é uma das versões indicadas na secção Disponibilidade.
    5. No menu de navegação, clique em Nodes.

    6. No painel Configurar definições do nó, faça o seguinte:

      1. Na secção Configuração da máquina, clique em GPUs.
      2. No menu Tipo de GPU, selecione NVIDIA H100 80 GB.
      3. No menu Número de GPUs, selecione 1.
      4. Certifique-se de que a opção Ativar partilha de GPU não está selecionada.
      5. Na secção Instalação do controlador da GPU, selecione uma das seguintes opções:

        • Gerido pela Google: o GKE instala automaticamente um controlador. Se selecionar esta opção, na lista pendente Versão, selecione uma das seguintes versões do controlador:

          • Predefinição: instale a versão do controlador predefinida para a versão do GKE do nó. Requer a versão 1.33.3-gke.1392000 ou posterior do GKE.
          • Mais recente: instale a versão mais recente do controlador para a versão do GKE do nó. Requer a versão 1.33.3-gke.1392000 ou posterior do GKE.
        • Gerido pelo utilizador: ignore a instalação automática de controladores. Se selecionar esta opção, tem de instalar manualmente um controlador de GPU compatível. Requer a versão 1.32.2-gke.1297000 ou posterior.

      6. Na secção Tipo de máquina, certifique-se de que o tipo de máquina é a3-highgpu-1g.

      7. Selecione Ativar nós em VMs de capacidade instantânea ou configure o início flexível com aprovisionamento em fila.

    7. Quando tiver tudo a postos para criar o node pool, clique em Criar.

    gcloud

    Pode criar pools de nós de GPU que executam nós do GKE confidenciais em VMs Spot ou usando o início flexível com aprovisionamento em fila.

    • Crie um node pool de GPU que execute Confidential GKE Nodes em VMs 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
      

      Substitua o seguinte:

      • NODE_POOL_NAME: um nome para o novo node pool.
      • CLUSTER_NAME: o nome do cluster existente.
      • LOCATION: a localização do novo node pool. A localização tem de suportar a utilização de GPUs em Confidential GKE Nodes.
      • NODE_LOCATION1,NODE_LOCATION2,...: uma lista separada por vírgulas de zonas onde executar os nós. Estas zonas têm de suportar a utilização da computação confidencial da NVIDIA. Para mais informações, consulte o artigo Veja as zonas suportadas.
      • DRIVER_VERSION: a versão do controlador da GPU a instalar. Especifique um dos seguintes valores:

      • default: instale a versão do controlador predefinida para a versão do GKE do nó. Requer a versão 1.33.3-gke.1392000 ou posterior do GKE.

      • latest: instale a versão mais recente do controlador para a versão do GKE do nó. Requer a versão 1.33.3-gke.1392000 ou posterior do GKE.

      • disabled: ignorar a instalação automática de controladores. Se especificar este valor, tem de instalar manualmente um controlador de GPU compatível. Requer a versão 1.32.2-gke.1297000 ou posterior.

    • Crie um node pool de GPU que execute Confidential GKE Nodes através do início flexível com aprovisionamento em fila:

      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
      

      Substitua TOTAL_MAX_NODES pelo número máximo de nós para o qual o conjunto de nós pode ser dimensionado automaticamente.

      Para mais informações sobre as opções de configuração no início flexível com aprovisionamento em fila, consulte o artigo Execute uma carga de trabalho em grande escala com início flexível com aprovisionamento em fila.

  • Para atualizar os node pools existentes para usar a tecnologia de computação confidencial Intel TDX, consulte o artigo Atualize um node pool existente.

Instale manualmente controladores de GPU que suportam Confidential GKE Nodes

Se não ativou a instalação automática de controladores quando criou ou atualizou os seus pools de nós, tem de instalar manualmente um controlador de GPU que suporte nós do GKE confidenciais.

Esta alteração requer a recriação dos nós, o que pode causar interrupções nas cargas de trabalho em execução. Para ver detalhes sobre esta alteração específica, procure a linha correspondente na tabela alterações manuais que recriam os nós através de uma estratégia de atualização de nós sem respeitar as políticas de manutenção. Para saber mais sobre as atualizações de nós, consulte o artigo Planeamento de interrupções de atualizações de nós.

Para ver instruções, consulte o separador "COS" em Instale manualmente os controladores da GPU NVIDIA.

Resolver problemas

Para ver informações de resolução de problemas, consulte o artigo Resolva problemas de GPUs no GKE.

O que se segue?