Por padrão, o ACK agenda todos os workloads em nós de trabalho x86. Em um cluster misto com nós ARM e não ARM, use as configurações de agendamento do Kubernetes para executar workloads exclusivos para ARM em nós ARM ou agendar preferencialmente imagens multiarquitetura nesses nós.
Pré-requisitos
-
Um cluster gerenciado ACK executando Kubernetes 1.20 ou posterior no Alibaba Cloud Linux 3. Consulte Criar um cluster gerenciado ACK e Atualizar um cluster.
NotaEm Core Components, apenas os componentes das categorias Core Components, Volumes, Network e Network têm suporte em node pools ARM.
Componentes do Marketplace não têm suporte em node pools ARM.
O componente kube-scheduler está instalado. Consulte Gerenciar componentes.
Notas de uso
Se o cluster ACK contiver nós ARM e x86, adicione o taint kubernetes.io/arch=arm64:NoSchedule aos nós ARM. Essa configuração impede o agendamento incorreto de aplicações e componentes sem suporte à arquitetura ARM nesses nós. Para clusters com versão anterior ao Kubernetes v1.24, declare também uma tolerância ao taint kubernetes.io/arch=arm64:NoSchedule ao usar nodeSelector ou nodeAffinity para agendar aplicações em nós ARM. Adicione a chave tolerations correspondente ao taint kubernetes.io/arch=arm64:NoSchedule. Em clusters com Kubernetes v1.24 ou posterior, o scheduler reconhece automaticamente esse taint nos nós ARM, dispensando a toleration.
Faturamento
Tipos de instância ECS baseados em ARM e preços:
Crie um cluster ou node pool ARM
Adicione nós ARM durante a criação do cluster ou inclua um node pool ARM em um cluster existente.
Durante a criação do cluster
Na seção Instance Type, defina Architecture como Arm, selecione um tipo de instância da família de uso geral g8m e configure os demais parâmetros. Consulte Criar um cluster gerenciado ACK.
Acesse Tipos de instância ECS disponíveis por região para verificar a disponibilidade de instâncias por região.
Em um cluster existente
Na seção Instance Type, defina Architecture como Arm, selecione um tipo de instância e configure os demais parâmetros. Consulte Criar e gerenciar um node pool.
Acesse Tipos de instância ECS disponíveis por região para verificar a disponibilidade de instâncias por região.
Agende workloads exclusivos para ARM em nós ARM
Em clusters de arquitetura mista, agende aplicações exclusivas para ARM em nós ARM para evitar falhas de pods em nós incompatíveis. Todos os nós ARM possuem o rótulo kubernetes.io/arch=arm64. Use nodeSelector ou nodeAffinity para direcioná-los.
nodeSelector
Adicione o seguinte nodeSelector à spec do pod. Essa configuração direciona os nós rotulados com kubernetes.io/arch: arm64, aplicável a todos os nós ARM em um cluster ACK.
nodeSelector:
kubernetes.io/arch: arm64 # Specify an ARM node.
Exemplo de YAML para implantar uma aplicação stateless em um nó ARM:
nodeAffinity
Use afinidade de nó para agendar pods exclusivamente em nós ARM. A regra a seguir direciona nós rotulados com kubernetes.io/arch=arm64.
Com essa regra, o scheduler adiciona automaticamente uma tolerância ao taint kubernetes.io/arch=arm64:NoSchedule.
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64
Exemplo de YAML para implantar uma aplicação stateless em um nó ARM:
Agende workloads multiarquitetura em nós ARM
Por padrão, o ACK agenda workloads em nós x86 e aguarda recursos desses nós mesmo quando há nós ARM disponíveis. Para imagens multiarquitetura, configure preferências de agendamento para utilizar ambas as arquiteturas.
Por exemplo, configure a afinidade de nó para preferir nós ARM ou x86 e recorra à outra arquitetura quando os nós preferidos não tiverem recursos suficientes.
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64
Preferir nós ARM
Preferir nós x86
Perguntas frequentes
Posso usar instâncias preemptíveis baseadas em ARM?
Instâncias preemptíveis baseadas em ARM estão disponíveis. Consulte Usar instâncias preemptíveis.
Limitações dos nós ARM
Atualmente, apenas as seguintes categorias de Add-ons têm suporte para ARM:
Core Components
Logs e Monitoramento
Armazenamento
Rede
Componentes do Marketplace não têm suporte para ARM.
Referências
Também é possível agendar workloads em nós virtuais ARM.
Use o Container Registry Enterprise Edition (ACR EE) para criar imagens de contêiner multiarquitetura.
Para executar jobs de big data sem gerenciar recursos do cluster, execute jobs Spark em nós virtuais ARM.