É possível criptografar dados de carga de trabalho de GPU em uso executando as cargas de trabalho em nós confidenciais do Google Kubernetes Engine criptografados. Nesta página, mostramos aos engenheiros e operadores de segurança como melhorar a segurança dos dados em cargas de trabalho aceleradas, como tarefas de IA/ML. Você precisa conhecer os seguintes conceitos:
Sobre a execução de cargas de trabalho de GPU em nós confidenciais do GKE
É possível solicitar nós confidenciais do GKE para suas cargas de trabalho de GPU usando um dos seguintes métodos:
- Provisione automaticamente nós confidenciais do GKE para suas cargas de trabalho de GPU usando as ComputeClasses do GKE. É possível usar esse método em clusters do Autopilot e Standard. Para mais informações, consulte a seção Usar ComputeClasses para executar cargas de trabalho de GPU em nós confidenciais do GKE.
- Configure manualmente os Confidential GKE Nodes para seus clusters ou pools de nós do Standard. Para mais informações, consulte a seção Configurar manualmente o Confidential GKE Nodes no GKE Standard.
Limitações
O modo Autopilot é compatível apenas com GPUs NVIDIA H100 (80 GB) com Confidential GKE Nodes.
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ative a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a Google Cloud CLI para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão
mais recente executando o comando
gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.
Requisitos
Independente do método de configuração dos nós confidenciais do GKE escolhido, você precisa atender a todos os requisitos a seguir:
- Os nós precisam estar em uma zona compatível com a Computação confidencial da NVIDIA. Para mais informações, consulte Ver zonas compatíveis.
- Os nós precisam usar um tipo de máquina, uma tecnologia de computação confidencial e uma GPU compatíveis. Para mais informações, consulte Configurações compatíveis.
- Você precisa ter cota preemptiva para as GPUs que quer usar nos locais dos nós. Por exemplo, se você usar GPUs NVIDIA H100 (80 GB), precisará ter cota para
compute.googleapis.com/preemptible_nvidia_h100_gpus. Para mais informações sobre como gerenciar sua cota, consulte Visualizar e gerenciar cotas.
Além desses requisitos, você precisa atender a condições específicas dependendo do método de configuração dos nós confidenciais do GKE escolhido, conforme descrito na tabela a seguir:
| Método de configuração | Requisitos | Limitações |
|---|---|---|
| ComputeClasses |
|
|
| Configuração manual no modo padrão |
|
|
Funções exigidas
Para receber as permissões necessárias para criar nós confidenciais do GKE, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto Cloud de Confiance :
-
Criar nós confidenciais do GKE:
Administrador de cluster do Kubernetes Engine (
roles/container.clusterAdmin) -
Implante cargas de trabalho de GPU:
Desenvolvedor do Kubernetes Engine (
roles/container.developer)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Usar ComputeClasses para executar cargas de trabalho confidenciais de GPU
É possível definir a configuração dos nós confidenciais do GKE em uma ComputeClass. As ComputeClasses são recursos personalizados do Kubernetes que permitem definir de forma declarativa configurações de nós para escalonamento automático e programação do GKE. Siga as etapas desta seção em qualquer cluster do Autopilot ou Standard que execute a versão 1.33.3-gke.1392000 ou mais recente do GKE.
Para usar uma ComputeClass e executar cargas de trabalho de GPU em nós confidenciais do GKE, siga estas etapas:
Salve o seguinte manifesto ComputeClass como um arquivo 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: DoNotScaleUpSubstitua:
COMPUTECLASS_NAME: um nome para a ComputeClass.CONFIDENTIAL_COMPUTE_TECHNOLOGY: a tecnologia de computação confidencial a ser usada, comoTDX. Escolha uma tecnologia compatível com a GPU que você quer usar.ZONE1,ZONE2: uma lista separada por vírgulas de zonas para criar nós, como['us-central1-a','us-central1-b']. Especifique as zonas que oferecem suporte à tecnologia de computação confidencial e ao tipo de máquina que você quer usar. Para mais informações, consulte Ver zonas compatíveis.GPU_TYPE: o tipo de GPU a ser usado, comonvidia-h100-80gb.GPU_COUNT: o número de GPUs a serem anexadas a cada nó. Especifique um valor compatível com a VM confidencial para o tipo de GPU. Por exemplo, se você escolher o tipo de GPUnvidia-h100-80gb, especifique um valor de1neste campo.
Crie a ComputeClass:
kubectl apply -f PATH_TO_MANIFESTSubstitua
PATH_TO_MANIFESTpelo caminho para o arquivo de manifesto ComputeClass.Para executar sua carga de trabalho de GPU em nós confidenciais do GKE, selecione a ComputeClass no manifesto da carga de trabalho. Por exemplo, salve o seguinte manifesto de implantação, que seleciona uma ComputeClass e GPUs, como um arquivo 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"Substitua:
COMPUTECLASS_NAME: o nome da ComputeClass que você criou.GPU_REQUEST: o número de GPUs a serem usadas no contêiner. Especifique um valor menor ou igual ao que você informou no campogpu.countda ComputeClass.
Crie a implantação:
kubectl apply -f PATH_TO_DEPLOYMENT_MANIFESTSubstitua
PATH_TO_DEPLOYMENT_MANIFESTpelo caminho para o manifesto do Deployment.
Ao criar a carga de trabalho de GPU, o GKE usa a configuração na ComputeClass para criar nós confidenciais do GKE com GPUs anexadas.
Configurar manualmente os Confidential GKE Nodes no GKE Standard
É possível executar cargas de trabalho de GPU em nós confidenciais do GKE em clusters ou pools de nós do modo Standard.
Ativar os Confidential GKE Nodes em novos clusters Standard
É possível ativar os nós confidenciais do GKE para todo o cluster padrão, para que cada pool de nós de GPU criado use a mesma tecnologia de computação confidencial. Ao criar um cluster no modo Standard que usa Confidential GKE Nodes para cargas de trabalho de GPU, especifique as seguintes configurações de cluster:
- Local: uma região ou zona que oferece suporte à computação confidencial da NVIDIA. Para mais informações, consulte Ver zonas compatíveis.
- Tipo de computação confidencial: uma tecnologia de computação confidencial que oferece suporte a GPUs. Para mais informações, consulte Configurações compatíveis.
Versão do cluster: uma das seguintes versões, dependendo de como você quer instalar os drivers de GPU:
- Instalação manual do driver de GPU: 1.32.2-gke.1297000 ou mais recente.
- Instalação automática do driver de GPU: 1.33.3-gke.1392000 ou mais recente.
Se quiser, configure GPUs para o pool de nós padrão que o GKE cria no cluster. No entanto, recomendamos que você use um pool de nós separado para as GPUs, para que pelo menos um pool de nós no cluster possa executar qualquer carga de trabalho.
Para mais informações, consulte Ativar os Confidential GKE Nodes em clusters Standard.
Usar nós confidenciais do GKE com GPUs em pools de nós padrão
Se o cluster não tiver os nós confidenciais do GKE ativados, é possível ativar esses nós em pools de nós da GPU específicos, novos ou atuais. O plano de controle e os pools de nós precisam atender aos requisitos na seção Disponibilidade. Ao configurar o pool de nós, você pode instalar os drivers de GPU automaticamente ou manualmente.
Para criar um pool de nós de GPU que usa nós confidenciais do GKE, selecione uma das seguintes opções:
Console
No console do Cloud de Confiance , acesse a página Clusters do Kubernetes:
Clique no nome do cluster no modo padrão que você quer modificar.
Clique na guia Nós.
Clique em Criar pool de nós gerenciado pelo usuário. A página Adicionar um pool de nós é aberta.
No painel Detalhes do pool de nós, faça o seguinte:
- Selecione Especificar locais dos nós.
- Selecione apenas as zonas com suporte listadas na seção Disponibilidade.
- Verifique se a versão do plano de controle é uma das versões listadas na seção Disponibilidade.
No menu de navegação, clique em Nós.
No painel Configurar configurações do nó, faça o seguinte:
- Na seção Configuração da máquina, clique em GPUs.
- No menu Tipo de GPU, selecione um tipo de GPU compatível com a computação confidencial.
- No menu Número de GPUs, selecione o número de GPUs a serem anexadas a cada nó. Selecione um valor compatível com o tipo de GPU escolhido. Por exemplo, se você escolheu GPUs NVIDIA H100 (80 GB), selecione 1.
- Confira se a opção Ativar compartilhamento de GPU não está selecionada.
Na seção Instalação do driver da GPU, selecione uma das seguintes opções:
Gerenciada pelo Google: o GKE instala automaticamente um driver. Se você selecionar essa opção, na lista suspensa Versão, escolha uma das seguintes versões de driver:
- Padrão: instale a versão padrão do driver para a versão do GKE do nó. Requer o GKE versão 1.33.3-gke.1392000 ou posterior.
- Mais recente: instale a versão mais recente do driver para a versão do GKE do nó. Requer o GKE versão 1.33.3-gke.1392000 ou posterior.
Gerenciada pelo usuário: pula a instalação automática do driver. Se você selecionar essa opção, será necessário instalar manualmente um driver de GPU compatível. Requer a versão 1.32.2-gke.1297000 ou mais recente.
Na seção Tipo de máquina, verifique se o tipo de máquina é uma máquina com GPU compatível com a VM confidencial para o tipo de GPU selecionado.
Selecione Ativar nós em VMs do Spot ou configure VMs de início flexível com provisionamento em fila.
Quando estiver tudo pronto para criar o pool de nós, clique em Criar.
gcloud
É possível criar pools de nós de GPU que executam Confidential GKE Nodes em VMs Spot ou usando VMs de início flexível com provisionamento em fila.
Crie um pool de nós de GPU que execute nós confidenciais do GKE em 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_TYPESubstitua:
NODE_POOL_NAME: um nome para o novo pool de nós.CLUSTER_NAME: o nome do cluster atual.CONFIDENTIAL_COMPUTE_TECHNOLOGY: a tecnologia de computação confidencial a ser usada, comoTDX. Escolha uma tecnologia compatível com a GPU que você quer usar.LOCATION: o local do novo pool de nós. O local precisa ser compatível com o uso de GPUs em nós confidenciais do GKE.NODE_LOCATION1,NODE_LOCATION2,...: uma lista separada por vírgulas de zonas em que os nós serão executados. Especifique as zonas que oferecem suporte à tecnologia de Computação confidencial e ao tipo de máquina que você quer usar. Para mais informações, consulte Ver zonas compatíveis.GPU_TYPE: o tipo de GPU a ser usado, comonvidia-h100-80gb.GPU_COUNT: o número de GPUs que serão anexadas a cada nó. Especifique um valor compatível com a VM confidencial para o tipo de GPU. Por exemplo, se você escolher o tipo de GPUnvidia-h100-80gb, especifique um valor de1neste campo.DRIVER_VERSION: a versão do driver da GPU a ser instalada. Especifique um dos seguintes valores:default: instale a versão padrão do driver para a versão do GKE do nó. Requer o GKE versão 1.33.3-gke.1392000 ou posterior.latest: instale a versão mais recente do driver para a versão do GKE do nó. Requer o GKE versão 1.33.3-gke.1392000 ou posterior.disabled: pule a instalação automática do driver. Se você especificar esse valor, será necessário instalar manualmente um driver de GPU compatível. Requer a versão 1.32.2-gke.1297000 ou mais recente.
MACHINE_TYPE: o tipo de máquina a ser usado para os nós. Especifique um tipo de máquina com GPU compatível com a VM confidencial para o tipo de GPU selecionado.
Crie um pool de nós de GPU que execute nós confidenciais do GKE usando VMs de início flexível com provisionamento em fila:
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_VERSIONSubstitua
TOTAL_MAX_NODESpelo número máximo de nós que o pool de nós pode escalonar automaticamente.Para mais informações sobre as opções de configuração no início flexível com provisionamento em fila, consulte Executar uma carga de trabalho em grande escala com início flexível e provisionamento em fila.
Para atualizar os pools de nós atuais para usar o Computação confidencial, consulte Atualizar um pool de nós.
Instalar manualmente drivers de GPU compatíveis com os Confidential GKE Nodes
Se você não ativou a instalação automática de drivers ao criar ou atualizar os pools de nós, instale manualmente um driver de GPU compatível com nós confidenciais do GKE.
Essa mudança exige a recriação dos nós, o que pode causar interrupções nas cargas de trabalho em execução. Para mais detalhes sobre essa mudança específica, encontre a linha correspondente na tabela Alterações manuais que recriam os nós usando uma estratégia de upgrade de nós sem respeitar as políticas de manutenção. Para saber mais sobre atualizações de nós, consulte Planejar interrupções de atualização de nós.
Para instruções, consulte a guia "COS" em Instalar manualmente os drivers de GPU NVIDIA.
Resolver problemas
Para informações sobre solução de problemas, consulte Resolver problemas de GPUs no GKE.
A seguir
- Verifique se os nós de GPU usam nós confidenciais do GKE
- Implante uma carga de trabalho nos nós de GPU
- Saiba mais sobre os métodos para executar cargas de trabalho em grande escala com GPUs