Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Deploy Services Across Clusters by Reusing Existing Load Balancers

Última actualización: Sep 05, 2026

Cloud Controller Manager (CCM) permite asociar una instancia existente de Server Load Balancer (SLB) a Services en uno o más clústeres de ACK, así como a endpoints externos a dichos clústeres. Al utilizar una única instancia de SLB como punto de entrada unificado, se evita aprovisionar un load balancer separado por clúster. Esta configuración resulta útil cuando se requiere recuperación ante desastres, alta disponibilidad o aislamiento de seguridad entre clústeres.

Se abordan dos escenarios:

  • Escenario 1: Distribuir tráfico entre un Service dentro del clúster y un endpoint externo (por ejemplo, una instancia de Elastic Compute Service (ECS)).

  • Escenario 2: Distribuir tráfico entre Services ubicados en distintos clústeres de ACK.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

Escenario 1: Distribución de tráfico hacia un Service del clúster y un endpoint externo

Asocie un Service dentro del clúster y un endpoint externo a la misma instancia de SLB. La instancia de SLB enruta el tráfico hacia ambos destinos. Cuando los pods escalan, se agregan o eliminan automáticamente del grupo de servidores virtuales sin afectar al endpoint externo.

image

Paso 1: Obtener el ID de la instancia de SLB

Inicie sesión en la consola de CLB o en la consola de NLB y anote el ID de su instancia de SLB existente.

Paso 2: Crear un Service con la instancia de SLB existente

Uso de la consola de ACK

En la consola de ACK, cree un Service con la siguiente configuración:

  • Establezca Service Type en SLB.

  • Seleccione Use Existing Resource y luego elija la instancia de SLB en la lista desplegable.

  • Seleccione Overwrite Existing Listeners.

Uso de kubectl

Agregue las siguientes anotaciones al manifiesto de su Service:

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: <LB_ID>  # The ID of the existing SLB instance.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"  # Set to true so CCM automatically creates listeners and vServer groups.
  labels:
    #...
  name: #...
spec:
  #...
Importante

Una vez creado el Service, CCM genera un grupo de servidores virtuales y un listener que escucha en el puerto del Service para la instancia de SLB.

Paso 3: Agregar el endpoint externo al grupo de servidores virtuales

Inicie sesión en la consola de CLB o en la consola de NLB y agregue su endpoint externo (por ejemplo, una instancia de ECS) al grupo de servidores virtuales que creó CCM. Para obtener instrucciones, consulte Create and manage a CLB vServer group y Create and manage a vServer group.

Después de agregar el endpoint externo, tanto los pods del clúster como el endpoint externo aparecerán en el grupo de servidores virtuales, donde podrá configurar sus pesos relativos.

Escenario 2: Distribución de tráfico entre Services en distintos clústeres de ACK

Asocie Services de diferentes clústeres de ACK a la misma instancia de SLB. El CCM de cada clúster mantiene sincronizado el grupo de servidores virtuales a medida que escalan los pods, sin afectar a los servidores backend registrados por otros clústeres.

image

Restricciones

Revise estas restricciones antes de comenzar:

  • Todos los Services que compartan la instancia de SLB deben usar el mismo puerto.

  • Los Services desplegados en el mismo namespace en distintos clústeres deben tener nombres diferentes.

  • Si configura pesos de tráfico mediante la anotación alibaba-cloud-loadbalancer-weight, gestione los pesos exclusivamente a través de dicha anotación. No modifique los pesos en la consola de SLB, ya que los cambios realizados en la consola no se sincronizan con los Services.

Paso 1: Crear manualmente un listener y un grupo de servidores virtuales

Inicie sesión en la consola de CLB o en la consola de NLB y cree manualmente un listener y un grupo de servidores virtuales para la instancia de SLB. Para obtener instrucciones, consulte CLB listeners, Create and manage a CLB vServer group, NLB listeners y Create and manage a server group.

Es necesario crear manualmente el listener y el grupo de servidores virtuales para que todos los clústeres puedan compartir el mismo grupo. El CCM de cada clúster registrará sus propios pods en este grupo compartido.

Paso 2: Crear los Services con anotaciones de grupo de servidores virtuales compartido

En cada clúster, cree un Service con las anotaciones que se muestran a continuación. Todos los Services deben hacer referencia a la misma instancia de SLB y al mismo grupo de servidores virtuales.

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "<YOUR_LB_ID>"            # The ID of the shared SLB instance.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: "<YOUR_VGROUP_ID>:<PORT>"  # The vServer group ID and the Service port, separated by a colon.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "100"                # (Optional) Traffic weight for backend pods of this Service. Valid values: 1–1000. Default: 100.
  labels:
    #...
  name: #...
spec:
  #...

Referencia de anotaciones

Anotación

Tipo

Valor predeterminado

Descripción

alibaba-cloud-loadbalancer-id

string

—

ID de la instancia de SLB existente. CCM asocia el Service a esta instancia en lugar de crear una nueva.

alibaba-cloud-loadbalancer-vgroup-port

string

—

Asigna el puerto del Service a un grupo de servidores virtuales: <vgroup-id>:<port>. Para asignar múltiples puertos a grupos de servidores virtuales, sepárelos con comas; por ejemplo, "<VGROUP_ID_1>:80, <VGROUP_ID_2>:443".

alibaba-cloud-loadbalancer-weight

integer

100

Peso de tráfico para todos los pods backend de este Service. Valores válidos: 1–1000. Si se establece, CCM utiliza este valor para registrar los pesos de los pods en el grupo de servidores virtuales. Gestione los pesos únicamente mediante esta anotación, no en la consola de SLB.

Tras aplicar los manifiestos de los Services, los pods de cada clúster aparecerán en el grupo de servidores virtuales compartido dentro de la consola de SLB. Cuando una aplicación escala, sus pods se agregan o eliminan del grupo automáticamente, sin afectar a los pods que pertenecen a otros Services.

Pasos siguientes

Referencias