Esta página mostra como configurar as implementações do Autopilot do Google Kubernetes Engine (GKE) para pedir nós suportados pela arquitetura Arm.
Acerca da arquitetura ARM no Autopilot
Os clusters do Autopilot oferecem
classes de computação
para cargas de trabalho com requisitos de hardware específicos. Algumas destas classes de computação suportam várias arquiteturas de CPU, como amd64
e arm64
.
Exemplos de utilização dos nós Arm
Os nós com arquitetura Arm oferecem um desempenho mais rentável do que os nós x86 semelhantes. Deve selecionar a arquitetura Arm para as suas cargas de trabalho do Autopilot em situações como as seguintes:
- O seu ambiente depende da arquitetura Arm para a criação e os testes.
- Está a desenvolver aplicações para dispositivos Android que são executadas em CPUs Arm.
- Usa imagens multi-arquitetura e quer otimizar os custos enquanto executa as suas cargas de trabalho.
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 o comando
gcloud components update
para obter a versão mais recente. As versões anteriores da CLI gcloud podem não suportar a execução dos comandos neste documento.
- Reveja os requisitos e as limitações para os nós Arm.
- Certifique-se de que tem quota para os tipos de máquinas do Compute Engine C4A ou Tau T2A.
- Certifique-se de que tem um Pod com uma imagem de contentor criada para a arquitetura Arm.
Como pedir nós ARM no Autopilot
Para indicar ao Autopilot que execute os seus pods em nós Arm, especifique uma das seguintes etiquetas numa regra de nodeSelector ou nodeAffinity:
kubernetes.io/arch: arm64
. Por predefinição, o GKE coloca pods em tipos de máquinasC4A
para clusters que executam a versão 1.31.3-gke.1056000 e posteriores. Se o cluster estiver a executar uma versão anterior, o GKE coloca os pods em tipos de máquinasT2A
.cloud.google.com/machine-family: ARM_MACHINE_SERIES
. SubstituaARM_MACHINE_SERIES
por uma máquina da série Arm, comoC4A
ouT2A
. O GKE coloca os pods na série especificada.
Por predefinição, a utilização de qualquer uma das etiquetas permite que o GKE coloque outros pods no mesmo nó se houver capacidade disponível nesse nó. Para pedir um nó dedicado para cada Pod, adicione a etiqueta cloud.google.com/compute-class:
Performance
ao manifesto. Para mais detalhes, consulte o artigo Otimize o desempenho do agrupamento do Autopilot escolhendo uma série de máquinas.
Em alternativa, pode usar a etiqueta Scale-Out
com a etiqueta arm64
para pedir T2A
.
Também pode pedir a arquitetura Arm para pods de instâncias Spot.
Quando implementa a sua carga de trabalho, o Autopilot faz o seguinte:
- Aprovisiona automaticamente nós Arm para executar os seus pods.
- Marca automaticamente os novos nós para impedir que os pods não baseados em ARM sejam agendados nesses nós.
- Adiciona automaticamente uma tolerância aos seus pods Arm para permitir o agendamento nos novos nós.
Exemplo de pedido para arquitetura Arm
As especificações de exemplo seguintes mostram como usar um seletor de nós ou uma regra de afinidade de nós para pedir a arquitetura Arm no Autopilot.
nodeSelector
O manifesto de exemplo seguinte mostra como pedir nós Arm num nodeSelector:
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: Performance
kubernetes.io/arch: arm64
containers:
- name: nginx-arm
image: nginx
resources:
requests:
cpu: 2000m
memory: 2Gi
nodeAffinity
Pode usar a afinidade de nós para pedir nós Arm. Também pode especificar o tipo de afinidade de nós a usar:
requiredDuringSchedulingIgnoredDuringExecution
: tem de usar a classe de computação e a arquitetura especificadas.preferredDuringSchedulingIgnoredDuringExecution
: use a classe de computação e a arquitetura especificadas com base no melhor esforço. Por exemplo, se um nó x86 existente for alocável, o GKE coloca o seu pod no nó x86 em vez de aprovisionar um novo nó Arm. A menos que esteja a usar um manifesto de imagem multi-arquitetura, o seu pod vai falhar. Recomendamos vivamente que peça explicitamente a arquitetura específica que quer.
O exemplo de manifesto seguinte requer a classe Performance
e os nós Arm:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-arm
spec:
replicas: 3
selector:
matchLabels:
app: nginx-arm
template:
metadata:
labels:
app: nginx-arm
spec:
terminationGracePeriodSeconds: 25
containers:
- name: nginx-arm
image: nginx
resources:
requests:
cpu: 2000m
memory: 2Gi
ephemeral-storage: 1Gi
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/compute-class
operator: In
values:
- Performance
- key: kubernetes.io/arch
operator: In
values:
- arm64
Recomendações
- Crie e use imagens multi-arquitetura como parte do seu pipeline. As imagens multi-arquitetura garantem que os seus pods são executados, mesmo que sejam colocados em nós x86.
- Peça explicitamente classes de arquitetura e computação nos manifestos da sua carga de trabalho. Caso contrário, o Autopilot usa a arquitetura predefinida da classe de computação selecionada, que pode não ser Arm.
Disponibilidade
Pode implementar cargas de trabalho do Autopilot na arquitetura Arm em Google Cloud localizações que suportam a arquitetura Arm. Para ver detalhes, consulte o artigo Regiões e zonas disponíveis.
Resolução de problemas
Para ver informações de resolução de problemas e erros comuns, consulte o artigo Resolva problemas de cargas de trabalho do Arm.
O que se segue?
- Saiba mais sobre a arquitetura de clusters do Autopilot.
- Saiba mais sobre o ciclo de vida dos agrupamentos.
- Saiba mais sobre as classes de computação do Autopilot disponíveis.
- Leia acerca dos pedidos de recursos predefinidos, mínimos e máximos para cada plataforma.