Escolher classes de computação para pods do Autopilot


Neste documento, mostramos como selecionar classes de computação específicas para executar cargas de trabalho que têm requisitos de hardware exclusivos nos clusters do Autopilot do Google Kubernetes Engine (GKE). Antes de ler este documento, verifique se você conhece o conceito das classes de computação no Autopilot do GKE.

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

O Autopilot oferece classes de computação projetadas para executar cargas de trabalho com requisitos de hardware específicos. Essas classes de computação são úteis para cargas de trabalho como machine learning e tarefas de IA ou para executar bancos de dados de tráfego alto em tempo real.

Essas classes de computação são um subconjunto da série de máquinas do Compute Engine e oferecem flexibilidade além da classe de computação de uso geral padrão do Autopilot. Por exemplo, a classe Scale-Out desativa várias linhas de execução simultâneas para que cada vCPU seja um núcleo físico.

Com base nas necessidades individuais dos seus pods, é possível configurar seus pods regulares do Autopilot ou os do Spot para solicitar nós compatíveis com essas classes de computação. Também é possível solicitar uma arquitetura de CPU específica, como Arm, em classes de computação compatíveis com essa arquitetura.

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.

Solicitar uma classe de computação no pod 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.

Também é possível solicitar classes de computação específicas para seus pods do Spot.

Especificar solicitações de recursos

Ao escolher uma classe de computação, especifique as solicitações de recursos para os pods com base nas solicitações mínimas e máximas de recursos da classe selecionada. Se as solicitações forem menores do que o mínimo, o Autopilot fará o escalonamento automático das solicitações. No entanto, se as solicitações forem maiores que o máximo, o Autopilot não implantará seus pods e exibirá uma mensagem de erro.

Escolher uma arquitetura de CPU

Algumas classes de computação aceitam várias arquiteturas de CPU. Por exemplo, a classe Scale-Out é compatível com arquiteturas Arm e x86. Se você não solicitar uma arquitetura específica, o Autopilot provisionará os nós que têm a arquitetura padrão da classe de computação especificada. Se os pods precisarem usar uma arquitetura diferente, solicite-a no seletor de nós ou na regra de afinidade do nó, junto com a solicitação de classe de computação. A classe de computação solicitada precisa ser compatível com a arquitetura de CPU especificada.

Para ver instruções, consulte Implantar pods do Autopilot na arquitetura do Arm.

A seguir