Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Sep 01, 2026

Par défaut, ACK planifie toutes les charges de travail sur des nœuds de calcul x86. Dans un cluster mixte comportant à la fois des nœuds ARM et non ARM, utilisez les paramètres de planification Kubernetes pour exécuter les charges de travail compatibles uniquement avec ARM sur des nœuds ARM, ou pour planifier de préférence les images multi-architecture sur des nœuds ARM.

Prérequis

Remarques d'utilisation

Si votre cluster contient à la fois des nœuds basés sur ARM et des nœuds basés sur x86, nous vous recommandons d'ajouter la marque kubernetes.io/arch=arm64:NoSchedule aux nœuds basés sur ARM. Cela évite de planifier par erreur des applications ou des composants incompatibles avec l'architecture ARM sur ces nœuds. Lorsque vous configurez nodeSelector ou nodeAffinity pour planifier des applications sur des nœuds basés sur ARM dans un cluster ACK exécutant une version de Kubernetes antérieure à la 1.24, vous devez ajouter une tolérance toleration pour accepter la marque kubernetes.io/arch=arm64:NoSchedule. En revanche, si le cluster exécute Kubernetes 1.24 ou une version ultérieure, le planificateur accepte automatiquement la marque kubernetes.io/arch=arm64:NoSchedule. Dans ce cas, il n'est pas nécessaire d'ajouter explicitement une tolérance toleration.

Facturation

Types d'instances ECS basées sur ARM et tarifs :

Créer un cluster ou un pool de nœuds ARM

Ajoutez des nœuds ARM lors de la création du cluster ou ajoutez un pool de nœuds ARM à un cluster existant.

Lors de la création du cluster

Dans la section Instance Type, définissez Architecture sur Arm, puis sélectionnez un type d'instance dans la famille d'instances à usage général g8m et configurez les autres paramètres. Consultez la rubrique Créer un cluster managé ACK.

Remarque

Accédez à la page Types d'instances ECS disponibles par région pour vérifier la disponibilité des instances par région.

Dans un cluster existant

Dans la section Instance Type, définissez Architecture sur Arm, puis sélectionnez un type d'instance et configurez les autres paramètres. Consultez la rubrique Créer et gérer un pool de nœuds.

Remarque

Accédez à la page Types d'instances ECS disponibles par région pour vérifier la disponibilité des instances par région.

Planifier des charges de travail compatibles uniquement avec ARM sur des nœuds ARM

Dans les clusters à architecture mixte, planifiez les applications compatibles uniquement avec ARM sur des nœuds ARM afin d'éviter les échecs de pods sur des nœuds incompatibles. Tous les nœuds ARM portent le libellé kubernetes.io/arch=arm64. Utilisez nodeSelector ou nodeAffinity pour les cibler.

nodeSelector

Ajoutez le sélecteur nodeSelector suivant à la spécification spec de votre pod. Cette configuration cible les nœuds portant le libellé kubernetes.io/arch: arm64, ce qui s'applique à tous les nœuds ARM d'un cluster ACK.

nodeSelector:
  kubernetes.io/arch: arm64 # Specify an ARM node.

Exemple de fichier YAML pour déployer une application sans état sur un nœud 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

Utilisez l'affinité de nœud pour planifier les pods exclusivement sur des nœuds ARM. La règle suivante cible les nœuds portant le libellé kubernetes.io/arch=arm64.

Avec cette règle, le planificateur ajoute automatiquement une tolérance pour la marque kubernetes.io/arch=arm64:NoSchedule.

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/arch
          operator: In
          values:
          - arm64

Exemple de fichier YAML pour déployer une application sans état sur un nœud 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

Planifier des charges de travail multi-architecture sur des nœuds ARM

Par défaut, ACK planifie les charges de travail sur des nœuds x86 et attend la disponibilité des ressources sur ces nœuds, même si des nœuds ARM sont libres. Pour les images multi-architecture, configurez les préférences de planification afin d'utiliser les deux architectures.

Par exemple, configurez l'affinité de nœud pour privilégier les nœuds ARM ou x86, puis basculez vers l'autre architecture lorsque les nœuds préférés manquent de ressources.

      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            preference:
              matchExpressions:
              - key: kubernetes.io/arch
                operator: In
                values:
                - arm64

Privilégier les nœuds 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

Privilégier les nœuds 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

FAQ

Puis-je utiliser des instances preemptibles basées sur ARM ?

Les instances preemptibles basées sur ARM sont disponibles. Consultez la rubrique Utiliser des instances preemptibles.

Limitations des nœuds ARM

Actuellement, seules les catégories de modules complémentaires suivantes prennent en charge ARM :

  • Core Components

  • Logs and Monitoring

  • Storage

  • Networking

Les composants Marketplace ne prennent pas en charge ARM.

Références