Nesta página, mostramos como otimizar cargas de trabalho com uso intensivo de CPU para melhorar o desempenho informando ao Google Kubernetes Engine (GKE) para colocar cada pod no próprio nó, com acesso total a todos os recursos do nó. Para usar esse modelo de colocação de pod, solicite a classe de computação de desempenho nas cargas de trabalho do Autopilot.
Benefícios da classe de computação de desempenho
Nós dedicados por pod são ideais quando você executa cargas de trabalho em grande escala com uso intensivo de CPU que podem precisar de acesso aos recursos na máquina virtual (VM) subjacente. Por exemplo, cargas de trabalho de treinamento de IA/ML com uso intensivo da CPU ou cargas de trabalho em lote de computação de alto desempenho (HPC).
Os pods nesses nós dedicados têm os seguintes benefícios:
- Desempenho previsível: acesse todos os recursos do nó a qualquer momento.
- Cargas de trabalho com burst: se você não definir limites de recursos nos manifestos, seus pods de classe de desempenho poderão disparar em toda a capacidade não utilizada no nó com risco mínimo de impacto no nó de remoção de pressão do Kubernetes.
Como funcionam os pods da classe de desempenho
Você implanta um pod com as seguintes características:
- Seleciona a classe de desempenho e uma série de máquinas do Compute Engine
- Especifica solicitações de recursos e, de preferência, não especifica limites de recursos.
O GKE faz o seguinte:
- Garante que o pod implantado solicite pelo menos os recursos mínimos para a classe de computação.
- Calcula o total de solicitações de recursos do pod implantado e todos os DaemonSets no cluster.
- Provisiona um nó com suporte da série de máquinas selecionada
- Modifica o manifesto do pod com uma combinação de seletores e tolerâncias de nós para garantir que o pod seja executado no próprio nó
Compatibilidade com outros recursos do GKE
É possível usar pods da classe de desempenho com os seguintes recursos do GKE:
- Pods do Spot
- Pods de tempo de execução estendido
- Separação da carga de trabalho
- Reservas de capacidade
- Descontos por uso contínuo
Os pods spot e de tempo de execução estendido são mutuamente exclusivos. O GKE não impõe solicitações de recursos mínimos mais altos para pods de classe de desempenho que usam separação de cargas de trabalho.
Preços
Seu pod pode usar toda a VM subjacente e qualquer hardware anexado a qualquer momento, e você é cobrado por esse hardware pelo Compute Engine, com um premium para o gerenciamento e a escalonabilidade do Autopilot. Para mais detalhes, consulte os preços do GKE.
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 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
gcloud components update
.
- Verifique se você tem familiaridade com o seguinte:
- Série de máquinas do Compute Engine e casos de uso
- Requisitos no nível do kernel para aplicativos
- Verifique se você tem um cluster do Autopilot atual em execução na versão 1.28.6-gke.1369000 e posterior ou na versão 1.29.1-gke.1575000 e posterior. Para criar um cluster do Autopilot, consulte Criar um cluster do Autopilot.
Conectar-se ao seu cluster
Use a CLI do Google Cloud para se conectar ao cluster do Autopilot:
gcloud container clusters get-credentials CLUSTER_NAME \
--location=LOCATION
Substitua:
CLUSTER_NAME
: o nome do cluster.LOCATION
: o local do Compute Engine do cluster.
Implantar um pod de classe de desempenho
Salve o seguinte manifesto como
perf-class-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: performance-pod spec: nodeSelector: cloud.google.com/compute-class: Performance cloud.google.com/machine-family: MACHINE_SERIES containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 20 memory: "100Gi"
Substitua
MACHINE_SERIES
pela série de máquinas do Compute Engine do seu pod, comoc3
. Para valores compatíveis, consulte Série de máquinas compatíveis neste documento.Implante o pod:
kubectl apply -f perf-class-pod.yaml
Usar SSDs locais em pods de classe de desempenho
Os pods de classe de desempenho podem usar SSDs locais para armazenamento temporário se você selecionar uma série de máquinas que inclua um SSD local. O GKE considera solicitações de armazenamento temporário ao provisionar um nó para o pod da classe de desempenho.
Salve o seguinte manifesto como
perf-class-ssd-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: performance-pod spec: nodeSelector: cloud.google.com/compute-class: Performance cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/gke-ephemeral-storage-local-ssd: "true" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral: "200Gi"
Substitua
MACHINE_SERIES
por uma série de máquinas compatível que também ofereça suporte a SSDs locais. Se a série de máquinas especificada não oferecer suporte a SSDs locais, a implantação falhará com um erro.Implante o pod:
kubectl apply -f perf-class-pod.yaml
Série de máquinas compatível
A classe de computação de desempenho é compatível com as seguintes séries de máquinas:
- Série de máquinas C3:
c3
(SSDs locais estão disponíveis) - Série de máquinas C3D:
c3d
(SSDs locais estão disponíveis) - Série de máquinas H3:
h3
- Série de máquinas C2:
c2
- Série de máquinas C2D:
c2d
- Série de máquinas T2D:
t2d
- Série de máquinas T2A:
t2a
Para comparar essas séries de máquinas e os respectivos casos de uso, consulte Comparação de séries de máquinas na documentação do Compute Engine.
Como o GKE seleciona um tamanho de máquina
Para selecionar um tamanho na série de máquinas especificada, o GKE calcula a CPU total, a memória total e o total de solicitações de armazenamento temporário do pod da classe de desempenho e de todos os DaemonSets que serão executados no novo nó. O GKE arredonda esses valores para o tipo de máquina do Compute Engine mais próximo disponível que aceite todos esses totais.
Exemplo 1: considere um pod de classe de desempenho que seleciona a série de máquinas
C3
. O total de solicitações de recursos, incluindo DaemonSets, é o seguinte:- 70 vCPUs
- 200 GiB de memória
O GKE coloca o pod em um nó que é apoiado pelo tipo de máquina
c3-standard-88
, que tem 88 vCPUs e 352 GB de memória.Exemplo 2: considere um pod de classe de desempenho que seleciona a série de máquinas
C3D
e os SSDs locais para armazenamento temporário. O total de solicitações de recursos, incluindo DaemonSets, é o seguinte:- 12 vCPUs
- 50 GiB de memória
- 200 GiB de armazenamento temporário
O GKE coloca o pod em um nó que usa o tipo de máquina
c3d-standard-16-lssd
, que tem 16 vCPUs, 64 GiB de memória e 365 GiB de capacidade de SSD local.
A seguir
- Saiba mais sobre as outras classes de computação do Autopilot
- Implantar cargas de trabalho baseadas em GPU no Autopilot