Todos os produtos
Search
Central de documentação

Container Compute Service:Reuse a load balancer for cross-cluster services

Última atualização: Jun 29, 2026

Implantações entre clusters melhoram a recuperação de desastres, a confiabilidade e o isolamento de segurança. No entanto, criar um Service do tipo LoadBalancer para cada backend desperdiça instâncias de balanceador de carga. Com o componente Cloud Controller Manager (CCM), você pode anexar endpoints internos e externos ao cluster a uma única instância existente de balanceador de carga e configurar pesos de encaminhamento para cada endpoint.

Pré-requisitos

Caso de uso 1: Serviços no cluster e endpoints externos

Você pode anexar um Service interno ao cluster e endpoints externos, como instâncias ECS, à mesma instância de balanceador de carga.

image
  1. Localize o ID da sua instância existente de balanceador de carga no console do Classic Load Balancer (CLB) ou no console do Network Load Balancer (NLB).

  2. Reutilize a instância existente de balanceador de carga ao criar o Service.

    Usar o console

    Ao criar um Service no console do Container Service for Kubernetes (ACK), defina o Service Type como LoadBalancer. Em seguida, selecione Use Existing Resource, escolha sua instância existente de balanceador de carga e marque Create port listener.

    Usar kubectl

    Ao criar um Service com kubectl, adicione uma Annotation para especificar o ID da instância do balanceador de carga.

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: ${LB_ID} # Replace ${LB_ID} with the ID of your existing load balancer instance.
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"  # Set to "true" to automatically create a listener and a virtual server group.
      labels:
        #...
      name: #...
    spec:
      #...
    Importante

    Após a criação do Service, o CCM cria automaticamente um grupo de servidores virtuais e um listener na instância de balanceador de carga de destino. O listener utiliza esse grupo de servidores virtuais como backend e encaminha o tráfego para a porta do Service.

  3. Adicione os endpoints externos ao grupo de servidores virtuais criado automaticamente. Para obter instruções, consulte Crie e gerencie um grupo de servidores virtuais e Grupos de servidores NLB.

    Após a configuração, o grupo de servidores virtuais exibirá tanto os Pods do cluster quanto os endpoints externos, cada um com um peso de encaminhamento configurável. Quando um aplicativo no cluster sofre dimensionamento, seus endpoints são adicionados ou removidos automaticamente do grupo de servidores, sem afetar os endpoints externos.

Caso de uso 2: Serviços em múltiplos clusters

Você pode anexar Services de diferentes clusters a uma única instância de balanceador de carga para fornecer um ponto de entrada unificado.

Para que os endpoints de backend sejam atualizados automaticamente quando os Pods forem alterados, todos os Services que compartilham o balanceador de carga devem também compartilhar o mesmo listener e grupo de servidores virtuais. Crie manualmente um listener e um grupo de servidores virtuais na instância do balanceador de carga e reutilize-os em todos os Services. A porta do listener deve corresponder à porta do Service.

image
Importante
  • Os Services em clusters diferentes devem usar a mesma porta.

  • A combinação do namespace com o nome do Service deve ser exclusiva entre os clusters.

  1. Crie um listener e um grupo de servidores virtuais para a instância do balanceador de carga. Para obter instruções, consulte Listeners de CLB, Crie e gerencie um grupo de servidores virtuais, Listeners de NLB e Grupos de servidores NLB.

  2. Reutilize o grupo de servidores virtuais criado manualmente ao criar os Services.

    Para reutilizar o grupo de servidores virtuais, adicione Annotations ao manifesto do Service para especificar os IDs da instância do balanceador de carga e do grupo de servidores virtuais. Você também pode definir um peso de encaminhamento para o Service.

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LB_ID}" # Replace ${YOUR_LB_ID} with the ID of your existing load balancer instance.
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: "${YOUR_VGROUP_ID}:{PORT}" # Replace ${YOUR_VGROUP_ID} with the ID of the virtual server group and {PORT} with the port of the Service.
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "100" # Optional. The forwarding weight for Pods belonging to this Service. Valid values range from 1 to 1000. The default is 100.
      labels:
        #...
      name: #...
    spec:
      #...
    Nota

    Se houver várias combinações de porta e grupo de servidores virtuais para service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port, separe-as por vírgula (,). Por exemplo: "${YOUR_VGROUP_ID_1}:80, ${YOUR_VGROUP_ID_2}:443".

    Após a configuração, visualize os Pods dos Services de diferentes clusters no grupo de servidores virtuais pelo console do balanceador de carga. Quando um aplicativo em um cluster sofre dimensionamento, o CCM adiciona ou remove automaticamente seus Pods do grupo de servidores, sem afetar os Pods de outros clusters.

    Importante

    Caso configure o peso de encaminhamento usando uma Annotation no manifesto do Service, não ajuste o peso no console, pois isso pode causar inconsistências de estado.

Documentos relacionados