Otimize o desempenho do Autopilot Pod escolhendo uma série de máquinas

Esta página mostra como colocar cargas de trabalho numa série de máquinas do Compute Engine específica para um desempenho ideal das cargas de trabalho nos clusters do Autopilot do Google Kubernetes Engine (GKE).

Certifique-se de que conhece o seguinte:

Como funciona a seleção de séries de máquinas

Pode adicionar um seletor de nós cloud.google.com/machine-family à especificação do pod para que o Autopilot atribua hardware específico do Compute Engine a esse pod. Por exemplo, pode escolher a série de máquinas C3 para pods que precisam de mais capacidade de processamento da CPU ou a série de máquinas N1 para pods que precisam de mais memória. Para executar a sua carga de trabalho de forma ideal, o Autopilot aprovisiona um dos tipos de máquinas predefinidos da série de máquinas que selecionou.

Além do desempenho ideal do agrupamento, a escolha de uma série de máquinas específica oferece as seguintes vantagens:

  • Utilização eficiente dos nós: por predefinição, o Autopilot otimiza a utilização de recursos dos nós agendando em cada nó o maior número possível de pods que pedem a mesma série de máquinas. Esta abordagem otimiza a utilização de recursos no nó, o que melhora a relação preço/desempenho. Se a sua carga de trabalho precisar de acesso a todos os recursos no nó, pode configurar opcionalmente a carga de trabalho para pedir um pod para cada nó.

  • Cargas de trabalho com picos: pode configurar os pods para terem picos na capacidade de recursos não utilizada no nó definindo os limites de recursos acima dos pedidos. Para ver detalhes, consulte o artigo Configure o aumento rápido de pods no GKE.

Planeie um nó dedicado para cada Pod

Se tiver cargas de trabalho com utilização intensiva da CPU que precisem de acesso fiável a todos os recursos do nó, pode configurar opcionalmente o seu pod para que o Autopilot coloque um pod que peça uma série de máquinas no seu próprio nó.

Os nós dedicados por pod são recomendados quando executa cargas de trabalho de grande escala e com utilização intensiva da CPU, como cargas de trabalho de preparação de IA/ML ou cargas de trabalho em lote de computação de alto desempenho (HPC).

Escolha entre o agendamento com vários pods e com um único pod

Use as seguintes orientações para escolher um comportamento de agendamento de pods com base nos seus requisitos:

Preços

O Compute Engine fatura-lhe a VM subjacente e qualquer hardware associado, além de um prémio pela gestão e escalabilidade dos nós do Autopilot. Para ver detalhes, consulte os preços do GKE.

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ative a API Google Kubernetes Engine
  • Se quiser usar a CLI gcloud para esta tarefa, instale-a e, em seguida, inicialize-a. Se instalou anteriormente a CLI gcloud, execute gcloud components update para obter a versão mais recente.
  • Certifique-se de que tem um cluster do Autopilot existente com a versão 1.30.1-gke.1396000 ou posterior. Para criar um cluster, consulte o artigo Crie um cluster do Autopilot.

Selecione uma série de máquinas

Esta secção mostra como selecionar uma série de máquinas do Compute Engine específica num pod.

  1. Guarde o seguinte manifesto como machine-series-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: machine-series-pod
    spec:
      nodeSelector:
        cloud.google.com/machine-family: MACHINE_SERIES
      containers:
      - name: my-container
        image: "k8s.gcr.io/pause"
        resources:
          requests:
            cpu: 5
            memory: "25Gi"
          limits:
            cpu: 20
            memory: 100Gi
    

    Substitua MACHINE_SERIES pela série de máquinas do Compute Engine para o seu pod, como c3. Para ver os valores suportados, consulte a secção Séries de máquinas suportadas nesta página.

  2. Implemente o agrupamento:

    kubectl apply -f machine-series-pod.yaml
    

Este manifesto permite que o Autopilot otimize a utilização de recursos dos nós agendando de forma eficiente outros pods que selecionam a mesma série de máquinas no mesmo nó se houver capacidade disponível.

Use SSDs locais

Os pods que selecionam uma série de máquinas podem usar SSDs locais para armazenamento efémero se especificar uma série de máquinas que ofereça SSD local. O Autopilot considera os pedidos de armazenamento efémero ao escolher um tipo de máquina do Compute Engine para o pod.

Para saber mais, consulte o artigo Use o armazenamento efémero suportado por SSD local com clusters do Autopilot.

Peça um nó dedicado para um pod

Se o seu pod tiver requisitos de desempenho específicos, como precisar de acesso fiável a todos os recursos do seu nó, pode pedir um nó dedicado para cada pod especificando o seletor de nós cloud.google.com/compute-class: Performance juntamente com o seletor de nós da série de máquinas. Isto indica ao Autopilot que coloque o seu pod num novo nó que use a série de máquinas especificada e que seja dedicado a esse pod. Este seletor de nós também impede que o Autopilot agende outros pods nesse nó.

  1. Guarde o seguinte manifesto como dedicated-node-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: dedicated-node-pod
    spec:
      nodeSelector:
        cloud.google.com/machine-family: MACHINE_SERIES
        cloud.google.com/compute-class: Performance
      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 suportada que também suporte o agendamento de um Pod por nó. Se a série de máquinas especificada não suportar o agendamento de um pod por nó, a implementação falha com um erro.

  2. Implemente o agrupamento:

    kubectl apply -f dedicated-node-pod.yaml
    

Quando implementa este manifesto, o Autopilot faz o seguinte:

  • Garante que os pedidos de agrupamento implementados pedem, pelo menos, os recursos mínimos para o nó otimizado em função do desempenho.
  • Calcula os pedidos de recursos totais do pod implementado e de quaisquer DaemonSets no cluster.
  • Aprovisiona um nó suportado pela série de máquinas selecionada.
  • Modifica o manifesto do Pod com uma combinação de seletores de nós e tolerâncias para garantir que o Pod é executado no seu próprio nó.

Séries de máquinas suportadas

O seletor machine-family suporta as seguintes séries de máquinas:

Tenha em atenção que c4 é o valor predefinido se a série de máquinas não for especificada e se c4 estiver disponível numa região.

Para comparar estas séries de máquinas e os respetivos exemplos de utilização, consulte a secção Comparação de séries de máquinas na documentação do Compute Engine.

Requisitos da versão

A série de máquinas C4D está disponível com as seguintes versões e configurações:

  • Tipos de máquinas C4D sem SSD local: versão do GKE 1.33.0-gke.1439000 e posterior.
  • Tipos de máquinas C4D com SSD local: versão do GKE 1.33.1-gke.1171000 e posteriores.

Compatibilidade com outras funcionalidades do GKE

Os pods que selecionam uma série de máquinas podem usar as capacidades e as funcionalidades do GKE suportadas por essa série de máquinas, como:

Os Spot Pods e os Pods com tempo de execução prolongado são mutuamente exclusivos. O GKE não aplica pedidos de recursos mínimos mais elevados para pods dedicados por nó, mesmo que usem a separação de cargas de trabalho.

Como o GKE seleciona um tipo de máquina

Para selecionar um tipo de máquina na série de máquinas especificada, o GKE calcula o total de pedidos de CPU, memória e armazenamento efémero dos pods e de quaisquer DaemonSets que serão executados no novo nó. O GKE arredonda estes valores para o tipo de máquina do Compute Engine disponível mais próximo que suporta todos estes totais.

  • Exemplo 1: considere uma implementação com quatro réplicas que seleciona a série de máquinas C3D. Não pede nós dedicados por agrupamento. Os pedidos de recursos de cada réplica são os seguintes:

    • 500 m vCPU (0,5 vCPU)
    • 1 GiB de memória

    O Autopilot coloca todos os quatro pods num nó suportado pelo c3d-standard-4 tipo de máquina, que tem 4 vCPUs e 16 GB de memória.

  • Exemplo 2: considere um pod que seleciona a série de máquinas C3D e os SSDs locais para armazenamento efémero. Pede um nó dedicado para o agrupamento. Os pedidos de recursos totais, incluindo DaemonSets, são os seguintes:

    • 12 vCPU
    • 50 GiB de memória
    • 200 GiB de armazenamento temporário

    O Autopilot coloca o pod num 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.

O que se segue?