Quando você usa os balanceadores de carga criados manualmente no Google Cloud com Kubernetes Services
e type: NodePort
, é quase a mesma coisa que você usa type: Load Balancer
para seus serviços, mas no segundo caso, LB é criado e gerenciado por Kubernetes, e você não precisa se preocupar com isso.
Como Service
com o tipo NodePort
está vinculando o endereço em todos os seus nós, eles devem ser adicionados ao LB como backend. Verifique a documentação , caminho "Modo-proxy: iptables". Talvez na sua situação, o Kubernetes tentou gerenciá-lo e adicionou todos os seus nós ao LoadBalancers, porque eles processam solicitações para seus serviços. Na verdade, não vi instalações em que o LoadBalancers foi criado manualmente e apontei para o Kubernetes.
No Google Cloud, recomendo que você use Ingress (com base no Google Load Balancer ou Nginx) ou Serviços com o type: Load Balancer
, se você não precisar de roteamento personalizado.
Você pode implementá-lo assim (para o Nginx Ingress):
- Implante
Nginx Ingress Controller
com o Serviçotype: LoadBalancer
. Ele criará para vocêLoadBalancer
como um ponto de entrada para todo o seu tráfego. - Implante seu aplicativo
Service
comtype: ClusterIP
. - Crie um objeto Ingress para o
Service
de seu aplicativo e escreva todas as regras de roteamento nele.