Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Topología de servicio para node pools

Última actualización: Sep 04, 2026

De forma predeterminada, los endpoints de backend de un Service de Kubernetes se distribuyen en todos los nodos de un clúster. Esto puede provocar problemas de conectividad o un rendimiento ineficiente cuando el tráfico cruza entre distintos grupos de nodos. La topología de servicio permite restringir el tráfico hacia las aplicaciones en nodos perimetrales y garantiza que solo sean accesibles desde nodos del mismo node pool o desde el nodo local. Este tema explica la función de topología de servicio y muestra cómo configurarla.

Contexto

En escenarios de edge computing, los nodos perimetrales suelen agruparse por ubicación geográfica u otros atributos lógicos como la arquitectura de CPU, el proveedor de servicios de Internet (ISP) o el proveedor de servicios en la nube. Estos grupos de nodos generalmente están aislados entre sí. Dicho aislamiento implica que pueden carecer de conectividad de red, no compartir recursos, utilizar recursos heterogéneos o ejecutar aplicaciones independientes.

Funcionamiento de la topología de servicio

Para resolver estos problemas, Container Service for Kubernetes (ACK) Edge incorpora una función de gestión de topología de endpoints al Service nativo, lo cual permite restringir el alcance de acceso de los Endpoints de backend de un Service mediante configuraciones sencillas. Por ejemplo, una aplicación en un nodo perimetral puede ser accesible únicamente desde nodos del mismo node pool o exclusivamente desde el nodo local. El principio de implementación se ilustra en la siguiente figura.

image
  • Service1 está asociado con dos instancias de Pod de backend: Pod 2 y Pod 3. La annotation: "openyurt.io/topologyKeys: kubernetes.io/zone" establece el alcance topológico de Service1 en el node pool.

  • Pod 2 se encuentra en el nodo 2 y Pod 3 en el nodo 4. Estos nodos pertenecen a dos node pools diferentes: node pool A y node pool B, respectivamente.

  • Dado que Pod 1 y Pod 3 no están en el mismo node pool, cuando Pod 1 accede a Service1, el tráfico se enruta únicamente hacia Pod 2. El acceso a Pod 3 queda restringido.

Notas de uso

  • Para versiones anteriores a v1.26.3-aliyun.1: Para habilitar la topología de servicio, aplique la anotación correspondiente al crear el Service. Si agrega la anotación después de crear el Service, la función no surtirá efecto. En este caso, elimine y vuelva a crear el Service.

  • Para v1.26.3-aliyun.1 y posteriores: Modifique la anotación de topología de servicio después de crear el Service. Los cambios surten efecto de inmediato.

Anotaciones

Configure la topología de servicio agregando una anotación a un Service estándar de Kubernetes. La siguiente tabla describe las anotaciones disponibles.

Clave de anotación

Valor de anotación

Descripción

openyurt.io/topologyKeys

kubernetes.io/hostname

Restringe el acceso al Service únicamente al nodo local.

openyurt.io/topologyKeys

kubernetes.io/zone u openyurt.io/nodepool

Restringe el acceso al Service a los nodos dentro del mismo node pool. Si la versión de su clúster ACK Edge es 1.18 o posterior, se recomienda utilizar openyurt.io/nodepool.

-

-

No se aplican restricciones de topología al Service.

Configurar la topología de servicio

Configure la topología de servicio mediante la consola o la CLI.

Console

Para crear un Service accesible únicamente desde nodos del mismo node pool, agregue una anotación al Service. Por ejemplo, establezca Name como openyurt.io/topologyKeys y Value como kubernetes.io/zone. Para obtener más información sobre cómo crear un Service, consulte Service management.

CLI

Para crear un Service que utilice un node pool como dominio de topología, use el siguiente ejemplo de YAML.

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