Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Aug 11, 2026

Le Cloud Controller Manager (CCM) vous permet d'associer une instance Server Load Balancer (SLB) existante à des services dans un ou plusieurs clusters ACK, ainsi qu'à des points de terminaison externes. En utilisant une seule instance SLB comme point d'entrée unifié, vous évitez de provisionner un équilibreur de charge par cluster. Cette approche est particulièrement utile pour la reprise après sinistre, la haute disponibilité ou l'isolation de sécurité entre les clusters.

Cette rubrique couvre deux scénarios :

  • Scénario 1 : Répartir le trafic entre un service interne au cluster et un point de terminaison externe (par exemple, une instance Elastic Compute Service (ECS)).

  • Scénario 2 : Répartir le trafic entre des services hébergés dans différents clusters ACK.

Prérequis

Avant de commencer, assurez-vous d'avoir :

Scénario 1 : Répartir le trafic vers un service du cluster et un point de terminaison externe

Associez un service interne au cluster et un point de terminaison externe à la même instance SLB. L'instance SLB achemine le trafic vers les deux cibles. Lors de la mise à l'échelle des pods, ceux-ci sont automatiquement ajoutés ou supprimés du groupe de serveurs virtuels (vServer group), sans affecter le point de terminaison externe.

image

Étape 1 : Récupérer l'ID de l'instance SLB

Connectez-vous à la console CLB ou à la console NLB et notez l'ID de votre instance SLB existante.

Étape 2 : Créer un service en utilisant l'instance SLB existante

Utiliser la console ACK

Dans la console ACK, créez un service avec les paramètres suivants :

  • Définissez le paramètre Service Type sur SLB.

  • Sélectionnez l'option Use Existing Resource, puis choisissez l'instance SLB dans la liste déroulante.

  • Cochez l'option Overwrite Existing Listeners.

Utiliser kubectl

Ajoutez les annotations suivantes à la définition YAML de votre 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:
  #...
Important

Après la création du service, le CCM crée un groupe de serveurs virtuels et un écouteur pour le port du service sur l'instance SLB.

Étape 3 : Ajouter le point de terminaison externe au groupe de serveurs virtuels

Connectez-vous à la console CLB ou à la console NLB et ajoutez votre point de terminaison externe (par exemple, une instance ECS) au groupe de serveurs virtuels créé par le CCM. Pour plus d'instructions, consultez les pages Créer et gérer un groupe de serveurs virtuels CLB et Créer et gérer un groupe de serveurs virtuels.

Une fois le point de terminaison externe ajouté, les pods du cluster et le point de terminaison externe apparaissent tous deux dans le groupe de serveurs virtuels. Vous pouvez alors définir leurs poids relatifs.

Scénario 2 : Répartir le trafic entre des services de différents clusters ACK

Associez des services provenant de différents clusters ACK à la même instance SLB. Le CCM de chaque cluster maintient la synchronisation du groupe de serveurs virtuels lors de la mise à l'échelle des pods, sans affecter les serveurs backend enregistrés par les autres clusters.

image

Restrictions

Examinez les contraintes suivantes avant de commencer :

  • Tous les services partageant l'instance SLB doivent utiliser le même port.

  • Les services déployés dans le même namespace sur différents clusters doivent avoir des noms différents.

  • Si vous définissez les poids de trafic à l'aide de l'annotation alibaba-cloud-loadbalancer-weight, gérez les poids uniquement via cette annotation. Ne modifiez pas les poids dans la console SLB, car les modifications effectuées dans la console ne sont pas synchronisées avec les services.

Étape 1 : Créer manuellement un écouteur et un groupe de serveurs virtuels

Connectez-vous à la console CLB ou à la console NLB et créez manuellement un écouteur et un groupe de serveurs virtuels pour l'instance SLB. Pour plus d'instructions, consultez les pages Écouteurs CLB, Créer et gérer un groupe de serveurs virtuels CLB, Écouteurs NLB et Créer et gérer un groupe de serveurs.

La création manuelle de l'écouteur et du groupe de serveurs virtuels est nécessaire pour permettre à tous les clusters de partager le même groupe. Le CCM de chaque cluster enregistrera ses propres pods dans ce groupe partagé.

Étape 2 : Créer les services avec des annotations de groupe de serveurs virtuels partagés

Dans chaque cluster, créez un service en utilisant les annotations ci-dessous. Tous les services doivent référencer la même instance SLB et le même groupe de serveurs virtuels.

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:
  #...

Référence des annotations

Annotation Type Par défaut Description
alibaba-cloud-loadbalancer-id string ID de l'instance SLB existante. Le CCM associe le service à cette instance au lieu d'en créer une nouvelle.
alibaba-cloud-loadbalancer-vgroup-port string Mappe le port du service à un groupe de serveurs virtuels : <vgroup-id>:<port>. Pour plusieurs mappages port-vers-groupe de serveurs virtuels, séparez-les par des virgules, par exemple : "<VGROUP_ID_1>:80, <VGROUP_ID_2>:443".
alibaba-cloud-loadbalancer-weight integer 100 Poids du trafic pour tous les pods backend de ce service. Valeurs valides : 1–1000. Lorsqu'elle est définie, le CCM utilise cette valeur pour enregistrer les poids des pods dans le groupe de serveurs virtuels. Gérez les poids uniquement via cette annotation, et non dans la console SLB.

Après avoir appliqué les définitions YAML des services, les pods de chaque cluster apparaissent dans le groupe de serveurs virtuels partagé visible dans la console SLB. Lorsqu'une application est mise à l'échelle, ses pods sont automatiquement ajoutés ou supprimés du groupe, sans affecter les pods appartenant à d'autres services.

Étapes suivantes

Références