Classes de computação no Autopilot


Nesta página, descrevemos as classes de computação que podem ser usadas para executar cargas de trabalho do Autopilot do Google Kubernetes Engine (GKE) com requisitos de hardware específicos. Para ver instruções, consulte Executar pods do Autopilot em classes de computação específicas.

Visão geral das classes de computação do Autopilot

Por padrão, os pods do Autopilot do GKE são executados em uma plataforma de computação otimizada para cargas de trabalho de uso geral, como exibição na Web e jobs em lote de intensidade média. Essa plataforma geral fornece uma configuração de hardware confiável e otimizada para custos que atende aos requisitos da maioria das cargas de trabalho.

Se você tiver cargas de trabalho com requisitos de hardware exclusivos, como a execução de tarefas de machine learning ou IA, a execução de bancos de dados de alto tráfego em tempo real ou a necessidade de plataformas e arquitetura de CPU específicas, o Autopilot oferece classes de computação. Essas classes de computação são um subconjunto selecionado da série de máquinas do Compute Engine e oferecem flexibilidade além da classe de computação padrão do Autopilot. Por exemplo, a classe de computação Scale-Out usa VMs que desativam várias linhas de execução simultâneas e são otimizadas para escalonamento horizontal.

É possível solicitar nós baseados em classes de computação específicas com base nos requisitos de cada uma das cargas de trabalho. Semelhante à classe de computação de uso geral padrão, o Autopilot gerencia o dimensionamento e a alocação de recursos das classes de computação solicitadas com base nos pods em execução. É possível solicitar classes de computação no nível do pod para otimizar o custo-benefício. Basta escolher a melhor opção para as necessidades de cada pod.

Escolher uma arquitetura de CPU específica

Se as cargas de trabalho forem projetadas para plataformas ou arquiteturas de CPU específicas, será possível selecionar essas plataformas ou arquiteturas nas especificações do pod. Por exemplo, se você quiser que seus pods sejam executados em nós que usam a arquitetura do Arm, escolha arm64 dentro da classe de computação Scale-Out.

Preços

Os pods do Autopilot do GKE são cobrados com base nos nós em que os pods estão programados. Para informações sobre preços de cargas de trabalho de uso geral e pods do Spot em classes de computação específicas e informações sobre descontos de uso comprometido, consulte os preços do modo Autopilot.

Os pods do Spot em classes de computação de uso geral ou especializadas não se qualificam para descontos por uso contínuo.

Quando usar classes de computação específicas

A tabela a seguir fornece uma visão geral técnica das classes de computação compatíveis com o Autopilot e exemplos de casos de uso de pods em execução em cada plataforma. Se você não solicitar uma classe de computação, o Autopilot colocará os pods na plataforma de computação de uso geral, projetada para executar a maioria das cargas de trabalho de maneira ideal.

Requisito de carga de trabalho Classe do computação Descrição Casos de uso de exemplo
Cargas de trabalho que não exigem hardware específico Uso geral

O Autopilot usará a plataforma de computação de uso geral se você não solicitar explicitamente uma classe de computação na especificação do pod.

Não é possível selecionar explicitamente a plataforma de uso geral na especificação.

Apoiado pela série de máquinas E2.

  • Servidores da Web
  • Bancos de dados pequenos e médios
  • Ambientes para desenvolvedores
Cargas de trabalho que exigem GPUs Accelerator
  • Os pods podem acessar recursos de computação a qualquer momento
  • Sem limite de memória ou CPU do pod

Os tipos de GPU compatíveis são estes:

  • nvidia-h100-80gb: NVIDIA H100 (80 GB) (disponível apenas com a classe de computação Accelerator)
  • nvidia-a100-80gb: NVIDIA A100 (80GB)
  • nvidia-tesla-a100: NVIDIA A100 (40GB)
  • nvidia-l4: NVIDIA L4
  • nvidia-tesla-t4: NVIDIA T4

  • Treinamento e inferência de IA/ML focados na CPU
Solicitações de CPU ou memória maiores que os níveis máximos de classe de computação de uso geral ou plataformas de CPU específicas Balanced
  • CPUs disponíveis:AMD EPYC Rome, AMD EPYC Milan, Intel Ice Lake, Intel Cascade Lake
  • Arquitetura disponível:amd64
  • Solicitações de recursos com suporte maiores do que o uso geral
  • Capacidade de definir plataformas mínimas de CPU para pods, como o "Intel Ice Lake ou posterior".

Com apoio da série de máquinas N2 (Intel) ou da série de máquinas N2D (AMD).

  • Servidores da Web
  • Bancos de dados médios a grandes
  • Armazenamento em cache
  • Exibição de mídia e streaming
  • Capacidade de processamento de Hyperdisk e armazenamento extremo
Cargas de trabalho com uso intensivo de CPU, como treinamento de IA/ML ou computação de alto desempenho (HPC) Performance
  • Arquitetura disponível: amd64, arm64
  • Os pods podem acessar recursos de computação a qualquer momento
  • Sem limite de memória ou CPU do pod

Para uma lista das séries de máquinas do Compute Engine disponíveis com a classe de computação de desempenho, consulte Séries de máquinas compatíveis.

  • Treinamento e inferência de IA/ML focados na CPU
  • Cargas de trabalho em lote de HPC
  • Hyperdisk equilibrado, capacidade de processamento e armazenamento extremo
Computação por núcleo único e escalonamento horizontal Scale-Out
  • CPUs disponíveis: Ampere Altra Arm ou AMD EPYC Milan
  • Família de máquinas do Compute Engine: T2A (Arm), T2D (x86)
  • Arquitetura disponível: arm64 ou amd64
  • SMT desativada. Uma vCPU é igual a um núcleo físico.
  • Relógio de 3,5 GHz

Com apoio da série de máquinas Tau T2A (Arm) ou da série de máquinas Tau T2D (x86).

  • Servidores da Web
  • Microsserviços em contêiner
  • Processamento de registros de dados
  • Apps Java em grande escala
  • Armazenamento de capacidade de processamento de hiperdisco

Como selecionar uma classe de computação no Autopilot

Para instruções detalhadas, consulte Escolher classes de computação para pods do Autopilot.

Para instruir o Autopilot a colocar seus pods em uma classe de computação específica, especifique o rótulo cloud.google.com/compute-class em um nodeSelector ou em uma regra de afinidade de nó, como nos exemplos a seguir:

nodeSelector

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-app
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: hello-app
      template:
        metadata:
          labels:
            app: hello-app
        spec:
          nodeSelector:
            cloud.google.com/compute-class: "COMPUTE_CLASS"
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            resources:
              requests:
                cpu: "2000m"
                memory: "2Gi"
    

Substitua COMPUTE_CLASS pelo nome da classe de computação com base no seu caso de uso, como Scale-Out. Se você selecionar Accelerator, também precisará especificar uma GPU compatível. Para ver instruções, consulte Implantar cargas de trabalho da GPU no Autopilot. Se você selecionar Performance, também precisará escolher uma série de máquinas do Compute Engine no seletor de nós. Para instruções, consulte Executar cargas de trabalho com uso intensivo da CPU com o desempenho ideal.

nodeAffinity

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-app
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: hello-app
      template:
        metadata:
          labels:
            app: hello-app
        spec:
          terminationGracePeriodSeconds: 25
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            resources:
              requests:
                cpu: "2000m"
                memory: "2Gi"
                ephemeral-storage: "1Gi"
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: cloud.google.com/compute-class
                    operator: In
                    values:
                    - "COMPUTE_CLASS"
      

Substitua COMPUTE_CLASS pelo nome da classe de computação com base no seu caso de uso, como Scale-Out. Se você selecionar Accelerator, também precisará especificar uma GPU compatível. Para ver instruções, consulte Implantar cargas de trabalho da GPU no Autopilot. Se você selecionar Performance, também precisará escolher uma série de máquinas do Compute Engine no seletor de nós. Para instruções, consulte Executar cargas de trabalho com uso intensivo da CPU com o desempenho ideal.

Quando você implanta a carga de trabalho, o Autopilot faz o seguinte:

  • Provisiona automaticamente os nós com a configuração especificada para executar seus pods.
  • Adiciona automaticamente taints aos novos nós para evitar que outros pods sejam programados nesses nós. Os taints são exclusivos de cada classe. Se você também selecionar uma arquitetura de CPU, o GKE adicionará um taint exclusivo a ela.
  • Adiciona automaticamente tolerâncias correspondentes aos taints aplicados aos pods implantados, permitindo que o GKE coloque esses pods nos novos nós.

Por exemplo, se você solicitar a classe de computação Scale-Out para um pod:

  1. O Autopilot adiciona um taint específico para Scale-Out para esses nós.
  2. O Autopilot adiciona uma tolerância a esse taint aos pods Scale-Out.

Os pods que não solicitarem Scale-Out não receberão a tolerância. Como resultado, o GKE não programará esses pods nos nós Scale-Out.

Se você não solicitar explicitamente uma classe de computação na especificação da carga de trabalho, o Autopilot programará os pods nos nós que usam a classe de computação de uso geral padrão. A maioria das cargas de trabalho pode ser executada sem problemas na classe de computação de uso geral.

Como solicitar uma arquitetura de CPU

Em alguns casos, as cargas de trabalho podem ser criadas para uma arquitetura específica, como Arm. Algumas classes de computação, como equilibrada ou de escalonamento horizontal, são compatíveis com várias arquiteturas de CPU. É possível solicitar uma arquitetura específica junto com a solicitação de classe do Compute especificando o rótulo no seletor de nós ou na regra de afinidade do nó, como no exemplo a seguir:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-arm
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-arm
  template:
    metadata:
      labels:
        app: nginx-arm
    spec:
      nodeSelector:
        cloud.google.com/compute-class: COMPUTE_CLASS
        kubernetes.io/arch: ARCHITECTURE
      containers:
      - name: nginx-arm
        image: nginx
        resources:
          requests:
            cpu: 2000m
            memory: 2Gi

Substitua ARCHITECTURE pela arquitetura de CPU que você quer, como arm64 ou amd64.

Se você não solicitar explicitamente uma arquitetura, o Autopilot usará a arquitetura padrão da classe de computação especificada.

Arquitetura de braço no Autopilot

O Autopilot é compatível com solicitações de nós que usam a arquitetura de CPU Arm. Os nós de Arm têm melhor custo-benefício do que os nós x86 semelhantes, além de melhorar o desempenho. Para ver instruções sobre como solicitar nós do Arm, consulte Implantar cargas de trabalho do Autopilot na arquitetura do Arm.

Verifique se você está usando as imagens corretas nas implantações. Se os pods usarem imagens do Arm e você não solicitar nós do Arm, o Autopilot programará os pods em nós x86, e eles falharão. Da mesma forma, se você usar imagens x86 acidentalmente, mas solicitar nós do Arm para os pods, os pods falharão.

Validações de piloto automático para cargas de trabalho de classes de computação

O Autopilot valida os manifestos de cargas de trabalho para garantir que as solicitações de classe e arquitetura de computação no seletor de nós ou nas regras de afinidade de nós sejam formatadas corretamente. Aplicam-se as seguintes regras:

  • Não há mais de uma classe de computação.
  • Não há classes de computação incompatíveis.
  • A versão do GKE precisa ser compatível com a classe de computação.
  • Não há mais de uma arquitetura selecionada.
  • A classe de computação precisa ser compatível com a arquitetura selecionada.

Se o manifesto da carga de trabalho falhar em qualquer uma dessas validações, o Autopilot rejeitará a carga de trabalho.

Disponibilidade regional da classe de computação

A tabela a seguir descreve as regiões em que classes de computação e arquiteturas de CPU específicas estão disponíveis:

Disponibilidade da classe de computação
Uso geral Todas as regiões
Balanced Todas as regiões
Performance Todas as regiões que contêm uma série de máquinas com suporte.
Scale-Out

Arquitetura Arm (arm64):

  • asia-southeast1
  • europe-west4
  • us-central1

Arquitetura x86 (amd64):

  • asia-east1
  • asia-southeast1
  • australia-southeast1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • southamerica-east1
  • us-central1
  • us-east1
  • us-east4
  • us-west1
  • us-west4

Se uma classe de computação estiver disponível em uma região específica, o hardware estará disponível em pelo menos duas zonas nessa região.

Solicitações de recursos padrão, mínimas e máximas

Ao escolher uma classe de computação para suas cargas de trabalho do Autopilot, especifique as solicitações de recursos que atendem às solicitações mínima e máxima para essa classe. Para informações sobre as solicitações padrão, bem como as solicitações mínima e máxima para cada classe de computação, consulte Solicitações e limites de recursos no Autopilot do GKE.

A seguir