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 Create an ACK managed cluster e Upgrade a cluster.
NotaEm Core Components, apenas os componentes das categorias Core Components, Volumes, Network e Network têm suporte em pools de nós ARM.
Componentes do Marketplace não têm suporte em pools de nós ARM.
O componente kube-scheduler está instalado. Consulte Manage components.
Observações de uso
Se o cluster tiver nós baseados em ARM e em x86, recomendamos adicionar o taint kubernetes.io/arch=arm64:NoSchedule aos nós ARM. Isso evita o agendamento acidental de aplicações ou componentes incompatíveis com a arquitetura ARM nesses nós. Ao configurar nodeSelector ou nodeAffinity para agendar aplicações em nós ARM em um cluster ACK com versão do Kubernetes anterior à 1.24, adicione uma toleration para tolerar o taint kubernetes.io/arch=arm64:NoSchedule. No entanto, se o cluster executar o Kubernetes 1.24 ou posterior, o agendador tolerará automaticamente esse taint. Nesse caso, não é necessário adicionar uma toleration.
Faturamento
Tipos de instância ECS baseadas em ARM e preços:
Crie um cluster ou pool de nós ARM
Adicione nós ARM durante a criação do cluster ou inclua um pool de nós 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 Create an ACK managed cluster.
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 Create and manage a 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. Isso 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 agendador adiciona automaticamente uma tolerância para o 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 continua aguardando 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, caso os nós preferidos não tenham recursos, retorne à outra arquitetura.
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 Use preemptible instances.
Limitações dos nós ARM
Atualmente, apenas as seguintes categorias de Add-on têm suporte para ARM:
Core Components
Logs e Monitoramento
Armazenamento
Rede
Componentes do Marketplace não têm suporte para ARM.
Referências
Você também pode schedule workloads to ARM virtual nodes.
Use o Container Registry Enterprise Edition (ACR EE) para build multi-arch container images.
Para executar jobs de big data sem gerenciar recursos do cluster, run Spark jobs on ARM virtual nodes.