Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Create an ARM node pool and schedule workloads to ARM nodes

Última atualização: Sep 01, 2026

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

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.

Nota

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.

Nota

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:

Example YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: only-arm
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        kubernetes.io/arch: arm64 # Specify an ARM node.
      containers:
      - name: nginx
        image: nginx

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:

Example YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: only-arm
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/arch
                operator: In
                values:
                - arm64
      containers:
      - name: nginx
        image: nginx

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

Example YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: arm-prefer
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
# Preferentially schedule the workload to an ARM node.
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            preference:
              matchExpressions:
              - key: kubernetes.io/arch
                operator: In
                values:
                - arm64
      containers:
      - name: my-container
        image: nginx

Preferir nós x86

Example YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: amd-prefer
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
# Preferentially schedule the workload to an x86 node.
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            preference:
              matchExpressions:
              - key: kubernetes.io/arch
                operator: In
                values:
                - amd64
      containers:
      - name: my-container
        image: nginx

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