Todos os produtos
Search
Central de documentação

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

Última atualização: Jun 27, 2026

Os pools de nós de nuvem híbrida permitem registrar nós do seu data center (IDC) em um cluster ACK, o que viabiliza o gerenciamento unificado e o agendamento coordenado entre recursos on-premises e na nuvem. Este tópico descreve como agendar aplicações para um pool de nós de nuvem híbrida para atender a requisitos de localização de recursos, conformidade com residência de dados ou hardware específico.

Como funciona

Ao criar um pool de nós de nuvem híbrida, o ACK adiciona automaticamente um taint e um rótulo a cada nó do pool:

  • Taint: nodepool-type=hybridcloud:NoSchedule — impede que componentes do sistema e cargas de trabalho gerais sejam agendados em nós de nuvem híbrida por padrão.

  • Rótulo: alibabacloud.com/nodepool-type: hybridcloud — identifica o tipo do nó para que as políticas de agendamento possam direcioná-lo.

Uma tolerância remove a restrição de agendamento e torna um pod elegível para nós de nuvem híbrida, mas não garante o posicionamento nesses nós. Para garantir o posicionamento, combine a tolerância com uma regra de nodeSelector ou nodeAffinity.

Escolha uma abordagem

Abordagem

Quando usar

Configuração principal

Permitir (Solução 1)

Para expandir a capacidade total sem restrições rígidas de localização. Os pods ainda podem ser agendados em outros pools de nós.

Apenas tolerations

Direcionar um pool de nós específico (Solução 2a)

Quando há necessidade de hardware específico, topologia de rede ou residência de dados para um único pool.

tolerations + nodeSelector (ID do pool de nós)

Direcionar qualquer pool de nós de nuvem híbrida (Solução 2b)

Cargas de trabalho que devem executar on-premises, mas em qualquer pool de nós IDC.

tolerations + nodeAffinity

Baseado em prioridade entre pools (Solução 3)

Ideal para preferir um pool de nuvem híbrida de menor custo para scale-out e liberar primeiro os nós ECS da nuvem durante o scale-in.

ResourcePolicy + tolerations

Solução 1: Permitir agendamento em nós de nuvem híbrida

Quando usar: Seu cluster precisa de mais capacidade total e sua carga de trabalho não possui restrições rígidas de posicionamento. Com essa configuração, o agendador considera o pool de nós de nuvem híbrida como um candidato válido, mas os pods ainda podem executar em outros pools de nós ativos.

Configuração principal: Adicione uma entrada tolerations em 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"

Expand to visualize

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"

Solução 2: Forçar agendamento em nós de nuvem híbrida

Estas duas sub-soluções garantem o posicionamento dos pods em nós de nuvem híbrida. Escolha com base na precisão necessária para direcionar um pool de nós.

Direcionar um pool de nós específico

Quando usar: Sua carga de trabalho exige um pool de nós de nuvem híbrida específico — por exemplo, um com hardware dedicado, topologia de rede exclusiva ou requisitos rigorosos de residência de dados. Use nodeSelector para fixar os pods a um único pool de nós por ID.

Configuração principal: Adicione tanto tolerations quanto nodeSelector em 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
Obtenha o ID do pool de nós na página Node Management > Node Pools do seu cluster.

Expand to visualize

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"

Direcionar qualquer pool de nós de nuvem híbrida

Quando usar: Sua carga de trabalho deve executar on-premises, mas pode rodar em qualquer pool de nós de nuvem híbrida. O nodeAffinity corresponde a todos os nós com o rótulo hybridcloud, permitindo que os pods se distribuam por todos os pools de nós IDC em vez de ficarem fixos em apenas um.

Configuração principal: Adicione tanto tolerations quanto affinity em 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

Expand to visualize

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"

Solução 3: Agendamento baseado em prioridade com ResourcePolicy

Quando usar: Você possui múltiplos pools de nós e deseja realizar scale-out ordenado e scale-in na ordem inversa. Por exemplo, utilize um pool de nós de nuvem híbrida de menor custo como pool principal e um pool de nós ECS na nuvem como overflow:

  • Scale-out: Os pods são agendados primeiro para o pool de nuvem híbrida. Se os recursos forem insuficientes, eles transbordam para o pool ECS.

  • Scale-in: Os pods no pool ECS são interrompidos primeiro, preservando a estabilidade dos recursos no pool de nuvem híbrida.

Esta solução requer dois recursos: um ResourcePolicy e uma carga de trabalho que o referencie.

Configuração do ResourcePolicy: Defina a ordem de prioridade de agendamento na lista units e associe a política aos pods alvo usando um 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
Obtenha os IDs dos pools de nós na página Node Management > Node Pools do seu cluster.

Configuração da carga de trabalho: Adicione o rótulo correspondente e a tolerância de nuvem híbrida ao modelo 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:

    Expand to visualize

    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:

    Expand to visualize

    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"

Aplicação em produção

  • Não exclua o taint padrão nodepool-type=hybridcloud:NoSchedule do pool de nós de nuvem híbrida. Esse taint evita que componentes do sistema sejam acidentalmente agendados em nós de nuvem híbrida.

  • Não exclua nem modifique o rótulo padrão alibabacloud.com/nodepool-type: hybridcloud nos nós de nuvem híbrida. Modificar ou excluir esse rótulo pode afetar o funcionamento normal do pool de nós.