Em cenários de edge computing, podem ocorrer conflitos se múltiplos node pools expuserem a mesma porta por meio de serviços NodePort. O isolamento de serviço NodePort permite restringir quais node pools escutam nas portas de um serviço NodePort, evitando conflitos de porta entre os node pools.
Como funciona
O componente edge-hub inclui uma estrutura programável integrada de filtragem de dados que intercepta e transforma as respostas do kube-apiserver antes de entregá-las aos nós de borda. Um filtro chamado nodeportisolation atua em conjunto com a anotação nodeport.openyurt.io/listen para controlar quais node pools escutam nas portas de um serviço NodePort.

Pré-requisitos
Antes de começar, verifique se você possui:
Componente edge-hub versão 0.11.0 ou posterior
Um serviço NodePort ou LoadBalancer para configurar
Configure a escuta de NodePort por node pool
Adicione a anotação nodeport.openyurt.io/listen ao seu serviço NodePort ou LoadBalancer.
Chave da anotação: nodeport.openyurt.io/listen
Valor da anotação: Uma lista separada por vírgulas com os nomes dos node pools, usando a seguinte sintaxe:
foo— Ative a escuta nos nós do node pool chamadofoo.-foo— Desativa a escuta nos nós do node pool chamadofoo.*— Ative a escuta nos nós de todos os node pools.
Regras de comportamento:
Caso o nome de um node pool apareça em vários valores de anotação, apenas a primeira entrada terá efeito.
Node pools não listados na anotação terão a escuta de NodePort desativada.
Nós órfãos (que não pertencem a nenhum node pool) seguem o comportamento padrão do Kubernetes, mantendo a escuta de NodePort ativada.
Exemplos de anotações
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)
As configurações nodeport.openyurt.io/listen=foo,* e nodeport.openyurt.io/listen=foo,-foo ativam a escuta em foo, pois foo aparece antes da entrada conflitante e tem precedência.
Observações de uso
Inclua a anotação
nodeport.openyurt.io/listendurante a criação do serviço. Se adicioná-la posteriormente, reinicie todas as instâncias do kube-proxy para que a alteração tenha efeito.Ao adicionar um novo node pool, atualize a anotação para incluí-lo antes de provisionar novos nós. Isso garante que a escuta de NodePort esteja ativa em todos os nós assim que eles ingressarem no pool.
Utilize o ID do node pool (formato:
npxxxx) em vez do nome, já que os nomes são personalizáveis e podem ser alterados. Consulte o ID do node pool no console do ACK.