Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Schedule applications to a hybrid node pool

Dernière mise à jour :Aug 11, 2026

Les pools de nœuds cloud hybrides vous permettent d'enregistrer les nœuds de votre centre de données (IDC) dans un cluster ACK. Cette fonctionnalité offre une gestion unifiée et une planification coordonnée des ressources sur site et cloud. Cette rubrique explique comment planifier les applications sur un pool de nœuds cloud hybride pour répondre aux exigences liées à l'emplacement des ressources, à la conformité en matière de localisation des données ou à du matériel spécifique.

Fonctionnement

Lorsque vous créez un pool de nœuds cloud hybride, ACK ajoute automatiquement un taint et un libellé à chaque nœud du pool :

  • Taint : nodepool-type=hybridcloud:NoSchedule — empêche par défaut les composants système et les charges de travail générales de s'exécuter sur les nœuds cloud hybrides.

  • Libellé : alibabacloud.com/nodepool-type: hybridcloud — identifie le type de nœud afin que les politiques de planification puissent le cibler.

Une toleration supprime la restriction de planification et rend un pod éligible aux nœuds cloud hybrides. Elle ne garantit pas son placement sur ces nœuds. Pour garantir ce placement, associez la toleration à une règle nodeSelector ou nodeAffinity.

Choisir une approche

Approche Cas d'utilisation Configuration clé
Autoriser (Solution 1) Étendre la capacité totale sans contrainte stricte d'emplacement. Les pods peuvent toujours être planifiés sur d'autres pools de nœuds. tolerations uniquement
Cibler un pool de nœuds spécifique (Solution 2a) Matériel spécifique, topologie réseau ou résidence des données pour un seul pool. tolerations + nodeSelector (ID du pool de nœuds)
Cibler n'importe quel pool de nœuds cloud hybride (Solution 2b) Charges de travail devant s'exécuter sur site, mais pouvant être réparties sur n'importe quel pool de nœuds IDC. tolerations + nodeAffinity
Priorité entre les pools (Solution 3) Privilégier un pool cloud hybride moins coûteux pour la mise à l'échelle horizontale ; libérer en premier les nœuds ECS cloud lors de la réduction. ResourcePolicy + tolerations

Solution 1 : Autoriser la planification sur les nœuds cloud hybrides

Cas d'utilisation : Votre cluster a besoin de davantage de capacité totale et votre charge de travail n'impose aucune contrainte stricte de placement. Avec cette configuration, le planificateur considère le pool de nœuds cloud hybride comme un candidat valide, mais les pods peuvent toujours s'exécuter sur d'autres pools de nœuds actifs.

Configuration principale : Ajoutez une entrée tolerations dans spec.template.spec :

spec:
  template:
    spec:
      # Allow this pod to run on hybrid cloud nodes.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"

Développer pour afficher

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-allowed-on-hybrid
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      # Allow this pod to run on hybrid cloud nodes.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"
      containers:
        - name: nginx
          image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
          ports:
            - containerPort: 80
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "200m"
              memory: "256Mi"

Solution 2 : Forcer la planification sur les nœuds cloud hybrides

Ces deux sous-solutions garantissent que les pods seront planifiés sur des nœuds cloud hybrides. Choisissez celle qui correspond au niveau de précision requis pour cibler un pool de nœuds.

Cibler un pool de nœuds spécifique

Cas d'utilisation : Votre charge de travail nécessite un pool de nœuds cloud hybride particulier, par exemple équipé d'un matériel spécifique, disposant d'une topologie réseau dédiée ou soumis à des exigences strictes de résidence des données. Utilisez nodeSelector pour associer les pods à un seul pool de nœuds via son ID.

Configuration principale : Ajoutez à la fois tolerations et nodeSelector dans spec.template.spec :

spec:
  template:
    spec:
      # Core configuration 1: Lift the hybrid cloud scheduling restriction.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"
      # Core configuration 2: Pin to a specific node pool by ID.
      nodeSelector:
        alibabacloud.com/nodepool-id: npxxxxxxxxxxxx
Obtenez l'ID du pool de nœuds depuis la page Node Management > Node Pools de votre cluster.

Développer pour afficher

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-to-nodepool
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      # Core configuration 1: Lift the hybrid cloud scheduling restriction.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"
      # Core configuration 2: Pin to a specific node pool by ID.
      nodeSelector:
        alibabacloud.com/nodepool-id: npxxxxxxxxxxxx
      containers:
        - name: nginx
          image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
          ports:
            - containerPort: 80
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "200m"
              memory: "256Mi"

Cibler n'importe quel pool de nœuds cloud hybride

Cas d'utilisation : Votre charge de travail doit s'exécuter sur site, mais peut être déployée sur n'importe quel pool de nœuds cloud hybride. nodeAffinity cible tous les nœuds portant le libellé hybridcloud, ce qui permet aux pods de se répartir sur tous les pools de nœuds IDC plutôt que d'être associés à un seul.

Configuration principale : Ajoutez à la fois tolerations et affinity dans spec.template.spec :

spec:
  template:
    spec:
      # Core configuration 1: Lift the hybrid cloud scheduling restriction.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"
      # Core configuration 2: Require a hybrid cloud node by label.
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: alibabacloud.com/nodepool-type
                    operator: In
                    values:
                      - hybridcloud

Développer pour afficher

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-to-hybrid-type
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      # Core configuration 1: Lift the hybrid cloud scheduling restriction.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"
      # Core configuration 2: Require a hybrid cloud node by label.
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: alibabacloud.com/nodepool-type
                    operator: In
                    values:
                      - hybridcloud
      containers:
        - name: nginx
          image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
          ports:
            - containerPort: 80
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "200m"
              memory: "256Mi"

Solution 3 : Planification basée sur la priorité avec ResourcePolicy

Cas d'utilisation : Vous disposez de plusieurs pools de nœuds et souhaitez une mise à l'échelle horizontale ordonnée ainsi qu'une réduction inverse. Par exemple, utilisez un pool de nœuds cloud hybride moins coûteux comme pool principal et un pool de nœuds ECS basé sur le cloud comme solution de débordement :

  • Mise à l'échelle horizontale : Le planificateur affecte les pods au pool cloud hybride en priorité. Si les ressources sont insuffisantes, ils débordent vers le pool ECS.

  • Réduction : Les pods du pool ECS sont arrêtés en premier, préservant ainsi la stabilité des ressources dans le pool cloud hybride.

Cette solution nécessite deux ressources : une ResourcePolicy et une charge de travail qui y fait référence.

Configuration de ResourcePolicy : Définissez l'ordre de priorité de planification dans la liste units, puis associez la politique aux pods cibles à l'aide d'un selector.

apiVersion: scheduling.alibabacloud.com/v1alpha1
kind: ResourcePolicy
metadata:
  name: nginx-priority-policy
spec:
  # Match pods with this label.
  selector:
    app: nginx-priority
  # The scheduler tries pools in order. First match wins.
  units:
    # Priority 1: hybrid cloud node pool (lower cost, preferred)
    - resource: ecs
      nodeSelector:
        alibabacloud.com/nodepool-id: np-pool-a-xxxxxxxxxx
    # Priority 2: ECS node pool (overflow)
    - resource: ecs
      nodeSelector:
        alibabacloud.com/nodepool-id: np-pool-b-xxxxxxxxxx
Obtenez les ID des pools de nœuds depuis la page Node Management > Node Pools de votre cluster.

Configuration de la charge de travail : Ajoutez le libellé correspondant et la toleration cloud hybride au modèle de pod.

spec:
  template:
    metadata:
      # This label connects the pod to the ResourcePolicy above.
      labels:
        app: nginx-priority
    spec:
      # Allow scheduling to the hybrid cloud node pool.
      tolerations:
        - key: "nodepool-type"
          operator: "Equal"
          value: "hybridcloud"
          effect: "NoSchedule"
  • ResourcePolicy :

    Développer pour afficher

    apiVersion: scheduling.alibabacloud.com/v1alpha1
    kind: ResourcePolicy
    metadata:
      name: nginx-priority-policy
      namespace: default
    spec:
      # Match pods with this label.
      selector:
        app: nginx-priority
      # The scheduler tries pools in order. First match wins.
      units:
        # Priority 1: hybrid cloud node pool (lower cost, preferred)
        - resource: ecs
          nodeSelector:
            alibabacloud.com/nodepool-id: npaxxxxxxxxxx
        # Priority 2: ECS node pool (overflow)
        - resource: ecs
          nodeSelector:
            alibabacloud.com/nodepool-id: npbxxxxxxxxxx
  • Deployment :

    Développer pour afficher

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment-with-priority
      namespace: default
    spec:
      replicas: 5
      selector:
        matchLabels:
          app: nginx-priority
      template:
        metadata:
          # This label connects the pod to the ResourcePolicy above.
          labels:
            app: nginx-priority
        spec:
          # Allow scheduling to the hybrid cloud node pool.
          tolerations:
            - key: "nodepool-type"
              operator: "Equal"
              value: "hybridcloud"
              effect: "NoSchedule"
          containers:
            - name: nginx
              image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
              ports:
                - containerPort: 80
              resources:
                requests:
                  cpu: "100m"
                  memory: "128Mi"
                limits:
                  cpu: "200m"
                  memory: "256Mi"

Application en production

  • Ne supprimez pas le taint par défaut nodepool-type=hybridcloud:NoSchedule du pool de nœuds cloud hybride. Ce taint empêche la planification accidentelle des composants système sur les nœuds cloud hybrides.

  • Ne supprimez ni ne modifiez le libellé par défaut alibabacloud.com/nodepool-type: hybridcloud sur les nœuds cloud hybrides. La modification ou la suppression de ce libellé peut affecter le fonctionnement normal du pool de nœuds.