É 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.
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a CLI do Google Cloud para essa tarefa,
instale e inicialize a
gcloud CLI. 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 e limitações
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 apenas uma GPU NVIDIA H100 de 80 GB e o tipo de máquina
a3-highgpu-1g
. - Os nós precisam usar a tecnologia de computação confidencial Intel TDX.
- É necessário ter cota para GPUs H100 preemptivas de 80 GB
(
compute.googleapis.com/preemptible_nvidia_h100_gpus
) nos locais dos nós. 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 Google Cloud :
-
Criar Confidential GKE Nodes:
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: 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:
COMPUTECLASS_NAME
: um nome para a 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 ofereçam suporte à tecnologia de computação confidencial Intel TDX. Para mais informações, consulte Ver zonas compatíveis.
Crie a ComputeClass:
kubectl apply -f PATH_TO_MANIFEST
Substitua
PATH_TO_MANIFEST
pelo 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: 1 requests: cpu: "4" memory: "16Gi"
Substitua
COMPUTECLASS_NAME
pelo nome da ComputeClass que você criou.Crie a implantação:
kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
Substitua
PATH_TO_DEPLOYMENT_MANIFEST
pelo 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 nós confidenciais do GKE 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. Para cargas de trabalho de GPU, os nós confidenciais do GKE precisam usar a tecnologia de computação confidencial Intel TDX.
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 do 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: Intel TDX
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 esse recurso 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 Google Cloud , acesse a página Clusters do Kubernetes:
Clique no nome do cluster no modo padrão que você quer modificar.
Clique em
Adicionar pool de nós. 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 NVIDIA H100 80 GB.
- No menu Número de GPUs, 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 a versão 1.33.3-gke.1392000 ou mais recente do GKE.
- Mais recente: instale a versão mais recente do driver para a versão do GKE do nó. Requer a versão 1.33.3-gke.1392000 ou mais recente do GKE.
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 é
a3-highgpu-1g
.Selecione Ativar nós em VMs do Spot ou configurar 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 Flex-start 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=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:
NODE_POOL_NAME
: um nome para o novo pool de nós.CLUSTER_NAME
: o nome do cluster atual.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. Essas zonas precisam ser compatíveis com o uso da Computação confidencial da NVIDIA. Para mais informações, consulte Ver zonas compatíveis.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 nó do GKE. Requer a versão 1.33.3-gke.1392000 ou mais recente do GKE.latest
: instale a versão mais recente do driver para a versão do GKE do nó. Requer a versão 1.33.3-gke.1392000 ou mais recente do GKE.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.
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=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 que o pool de nós pode escalonar automaticamente.Para mais informações sobre as opções de configuração em flex-start com provisionamento em fila, consulte Executar uma carga de trabalho em grande escala com flex-start e provisionamento em fila.
Para atualizar os pools de nós atuais e usar a tecnologia de computação confidencial Intel TDX, consulte Atualizar um pool de nós atual.
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
- Implantar 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