Executar cargas de trabalho com uso intensivo da CPU com o desempenho ideal


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:

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.

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

  1. 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, como c3. Para valores compatíveis, consulte Série de máquinas compatíveis neste documento.

  2. 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.

  1. 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.

  2. 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:

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