En escenarios de edge computing, los servicios NodePort pueden presentar conflictos si varios node pools exponen el mismo puerto. El aislamiento de servicios NodePort permite restringir qué node pools escuchan en los puertos de un servicio NodePort, lo que evita conflictos de puertos entre distintos node pools.
Funcionamiento
El componente edge-hub incluye un framework programable integrado para el filtrado de datos que intercepta y transforma las respuestas de kube-apiserver antes de entregarlas a los nodos perimetrales. Un filtro llamado nodeportisolation funciona junto con la anotación nodeport.openyurt.io/listen para controlar qué node pools escuchan en los puertos de un servicio NodePort.

Requisitos previos
Antes de empezar, asegúrese de contar con:
La versión 0.11.0 o posterior del componente edge-hub
Un servicio NodePort o LoadBalancer para configurar
Configurar la escucha de NodePort por node pool
Agregue la anotación nodeport.openyurt.io/listen a su servicio NodePort o LoadBalancer.
Clave de la anotación: nodeport.openyurt.io/listen
Valor de la anotación: Una lista separada por comas con los nombres de los node pools, mediante la siguiente sintaxis:
foo— Habilita la escucha en los nodos del node pool llamadofoo.-foo— Deshabilita la escucha en los nodos del node pool llamadofoo.*— Habilita la escucha en los nodos de todos los node pools.
Reglas de comportamiento:
Si el nombre de un node pool aparece en varios valores de la anotación, solo surte efecto la primera entrada.
Los node pools que no se incluyen en la anotación tienen la escucha de NodePort deshabilitada.
Los nodos huérfanos (nodos que no pertenecen a ningún node pool) se comportan igual que en Kubernetes estándar: la escucha de NodePort permanece habilitada.
Ejemplos de anotaciones
nodeport.openyurt.io/listen=foo,bar # Listen on nodes in foo and bar
nodeport.openyurt.io/listen=foo,* # Listen on nodes in all node pools
nodeport.openyurt.io/listen=-foo,-bar # Disable listening on nodes in all node pools
nodeport.openyurt.io/listen=-foo,* # Disable listening only on nodes in foo
nodeport.openyurt.io/listen=foo,-foo # Listen on nodes in foo
nodeport.openyurt.io/listen=-foo # Disable listening on nodes in all node pools (including foo)
Tanto nodeport.openyurt.io/listen=foo,* como nodeport.openyurt.io/listen=foo,-foo habilitan la escucha en foo, ya que foo aparece antes de la entrada conflictiva y tiene prioridad.
Notas de uso
Agregue la anotación
nodeport.openyurt.io/listenal crear el servicio. Si la agrega después de crearlo, reinicie todas las instancias de kube-proxy para que el cambio surta efecto.Al agregar un nuevo node pool, actualice la anotación para incluirlo antes de añadirle nodos. Esto garantiza que la escucha de NodePort esté activa en todos los nodos conforme se unen al pool.
Utilice el ID del node pool (formato:
npxxxx) en lugar del nombre, dado que los nombres son personalizables y pueden cambiar. Encuentre el ID del node pool en la consola de ACK.