Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Topologie de service pour les pools de nœuds

Dernière mise à jour :Aug 11, 2026

Par défaut, les endpoints backend d'un service Kubernetes sont répartis sur tous les nœuds d'un cluster. Cela peut entraîner des problèmes de connectivité ou dégrader les performances du trafic circulant entre différents groupes de nœuds. La topologie de service permet de restreindre le trafic vers les applications s'exécutant sur des nœuds périphériques, en garantissant qu'elles ne soient accessibles que par les nœuds du même pool de nœuds ou par le nœud local. Cette rubrique présente la fonctionnalité de topologie de service et explique comment la configurer.

Contexte

Dans les scénarios d'informatique en périphérie (edge computing), les nœuds périphériques sont souvent regroupés par emplacement géographique ou par d'autres attributs logiques, tels que l'architecture CPU, le fournisseur d'accès à Internet (FAI) ou le fournisseur de services cloud. Ces groupes de nœuds sont généralement isolés les uns des autres. Cet isolement implique une absence de connectivité réseau, un partage nul des ressources, l'utilisation de ressources hétérogènes ou l'exécution d'applications indépendantes.

Fonctionnement de la topologie de service

Pour résoudre ces problèmes, Container Service for Kubernetes (ACK) Edge ajoute au service natif une fonctionnalité de gestion de la topologie des endpoints. Elle permet de restreindre la portée d'accès des endpoints backend d'un service via de simples configurations. Par exemple, une application s'exécutant sur un nœud périphérique n'est accessible que par les nœuds du même pool de nœuds ou uniquement par le nœud local. Le principe de mise en œuvre est illustré dans la figure suivante.

image
  • Service1 est associé à deux instances de pod backend : Pod 2 et Pod 3. L'annotation: "openyurt.io/topologyKeys: kubernetes.io/zone" définit la portée topologique de Service1 au niveau du pool de nœuds.

  • Pod 2 se trouve sur le nœud 2 et Pod 3 sur le nœud 4. Ces nœuds appartiennent à deux pools de nœuds différents : respectivement le pool de nœuds A et le pool de nœuds B.

  • Comme Pod 1 et Pod 3 n'appartiennent pas au même pool de nœuds, le trafic issu de Pod 1 à destination de Service1 est acheminé uniquement vers Pod 2. L'accès à Pod 3 est bloqué.

Remarques d'utilisation

  • Versions antérieures à v1.26.3-aliyun.1 : vous devez appliquer l'annotation de topologie de service lors de la création du service pour activer cette fonctionnalité. Si vous ajoutez l'annotation après la création du service, la fonctionnalité ne prend pas effet. Vous devez alors supprimer et recréer le service.

  • Version v1.26.3-aliyun.1 et ultérieures : vous pouvez modifier l'annotation de topologie de service après la création du service. Les modifications prennent effet immédiatement.

Annotations

Configurez la topologie de service en ajoutant une annotation à un service Kubernetes standard. Le tableau suivant décrit les annotations disponibles.

Clé d'annotation

Valeur d'annotation

Description

openyurt.io/topologyKeys

kubernetes.io/hostname

Restreint l'accès au service au seul nœud local.

openyurt.io/topologyKeys

kubernetes.io/zone ou openyurt.io/nodepool

Restreint l'accès au service aux nœuds situés dans le même pool de nœuds. Si la version de votre ACK Edge cluster est 1,18 ou ultérieure, nous vous recommandons d'utiliser openyurt.io/nodepool.

-

-

Aucune restriction topologique n'est appliquée au service.

Configurer la topologie de service

Vous pouvez configurer la topologie de service via la console ou la CLI.

Console

Pour créer un service accessible uniquement par les nœuds du même pool de nœuds, ajoutez une annotation au service. Par exemple, définissez Name sur openyurt.io/topologyKeys et Value sur kubernetes.io/zone. Pour plus d'informations sur la création d'un service, consultez Gestion des services.

CLI

Pour créer un service utilisant un pool de nœuds comme domaine de topologie, utilisez l'exemple YAML suivant.

apiVersion: v1
kind: Service
metadata:
  annotations:
    openyurt.io/topologyKeys: kubernetes.io/zone
  name: my-service-nodepool
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: nginx
  sessionAffinity: None
  type: ClusterIP