Visão geral
É possível criar um balanceador de carga TCP/UDP criando um serviço com type: LoadBalancer
na especificação dele. Nesta página, explicamos os parâmetros que você pode usar para configurar os serviços LoadBalancer. Para mais informações específicas sobre balanceadores de carga internos, consulte Como usar um balanceador de carga de rede de passagem interno.
Para mais informações específicas sobre balanceadores de carga externos, consulte Como exibir aplicativos usando serviços.
Parâmetros de serviço
Os parâmetros a seguir são compatíveis com os serviços LoadBalancer do Google Kubernetes Engine (GKE).
Recurso | Resumo | Campo de serviço | Compatibilidade da versão do GKE |
---|---|---|---|
Política de tráfego interno | Permite que as restrições de tráfego interno só encaminhem o tráfego interno para endpoints dentro do nó de origem do tráfego. Esse parâmetro não oferece suporte aos clusters que executam o GKE Dataplane V2. | spec:internalTrafficPolicy |
GKE 1.22+ |
Política de tráfego externo | Configura se o tráfego externo é ou não balanceado por carga nos nós do GKE. | spec:externalTrafficPolicy |
GKE 1.14 ou superior(1.23.4-gke.400+ para pool de nós do Windows) |
Intervalos de origem do balanceador de carga | Configura regras de firewall opcionais no GKE e na VPC para permitir apenas determinados intervalos de origem. | spec:loadBalancerSourceRanges |
Todas as versões compatíveis |
IP do balanceador de carga | Especifica um IP para os balanceadores de carga | spec:loadBalancerIP |
Todas as versões compatíveis |
Todas as portas | A capacidade do balanceador de carga TCP/UDP de encaminhar todas as portas em vez de portas específicas | N/A | Para balanceadores de carga de rede de passagem internos, compatíveis com subconfiguração. Para balanceadores de carga externos, que oferecem suporte a todas as versões. |
Network Service Tiers | Indique qual nível de rede um balanceador de carga do Google Cloud
precisa usar. Os valores válidos são Standard e
Premium (padrão). |
metadata:annotations:cloud.google.com/network-tier |
GKE 1.19+ |
Política de tráfego externa
O externalTrafficPolicy
é uma opção de serviço padrão que define como e se o tráfego de entrada para um nó do GKE é balanceado por carga. Cluster
é a política padrão, mas Local
costuma ser usada para preservar o IP de origem do tráfego que entra em um nó do cluster. O Local
desativa efetivamente o balanceamento de carga no nó do cluster para que o tráfego recebido por um pod local veja o endereço IP de origem original.
externalTrafficPolicy
oferece suporte aos serviços LoadBalancer internos (via balanceador de carga TCP/UDP), mas o comportamento do balanceamento de carga depende da origem do tráfego e da política de tráfego configurada.
O tráfego proveniente de fora do cluster para um balanceador de carga TCP/UDP terá o seguinte comportamento se houver pelo menos um pod íntegro do serviço no cluster:
- Política
Cluster
: o tráfego será balanceado por carga para qualquer nó íntegro do GKE no cluster e, em seguida, o kube-proxy o enviará para um nó com o pod. - Política
Local
: os nós que não têm um dos pods de back-end aparecem como não íntegros para o balanceador de carga TCP/UDP. O tráfego só será enviado para um dos nós de cluster íntegros restantes que tenham o pod. O tráfego não é roteado novamente pelo kube-proxy e, em vez disso, é enviado diretamente para o pod local com as informações do cabeçalho IP intactas.
Se o tráfego para um determinado IP de serviço do LoadBalancer for proveniente de um nó do GKE dentro do cluster, haverá um comportamento de tráfego diferente. A tabela a seguir resume o comportamento do tráfego proveniente de um nó ou pod dentro do cluster destinado a um pod membro de um serviço LoadBalancer:
externalTrafficPolicy | O pod membro do serviço está em execução no mesmo nó de origem do tráfego? | Comportamento do tráfego |
---|---|---|
Cluster | Sim | Os pacotes são entregues a qualquer pod de membro, seja no nó ou em um nó diferente. |
Cluster | Não | Os pacotes são entregues a qualquer pod de membro, que deve estar em um nó diferente. |
Treinamento | Sim | Os pacotes são entregues a qualquer pod de membro no mesmo nó. |
Treinamento | Não | Kubernetes 1.14 e anteriores: os pacotes são descartados. Kubernetes 1.15 e posteriores: os pacotes são entregues a qualquer pod de membro, que precisa estar em um nó diferente. |
Intervalos de origem do balanceador de carga
A matriz spec: loadBalancerSourceRanges
especifica um ou mais intervalos de
endereços IP internos ou externos. loadBalancerSourceRanges
restringe o tráfego por meio
do balanceador de carga para os IPs especificados nesse campo. Ao usar essa configuração, kube-proxy
cria as regras iptables correspondentes nos nós do Kubernetes.
O GKE também cria uma regra de firewall na sua rede VPC automaticamente. Se você omitir esse campo, seu Serviço aceitará o tráfego de qualquer endereço IP (0.0.0.0/0
).
Para mais informações sobre a especificação de serviço, consulte a Referência da API de serviço.
IP do balanceador de carga
O spec: loadBalancerIP
permite que você escolha um endereço IP específico para o
balanceador de carga. O endereço IP não pode estar em uso por outro balanceador de carga de rede ou serviço de passagem interno. Se omitido, um IP temporário será atribuído. Para mais
informações, consulte Como reservar um endereço IP interno estático.
Se o endereço IP em spec: loadBalancerIP
for um IP de nível Standard,
a anotação cloud.google.com/network-tier
com o valor Standard
será obrigatória,
porque o Google Kubernetes Engine precisa criar uma regra de encaminhamento com o mesmo nível de rede
que o endereço IP especificado.
Desde o Google Kubernetes Engine 1.17 ou superior, o nível de rede padrão para criar regras de encaminhamento
é Premium
, independentemente do nível de rede padrão do projeto.
Todas as portas
O controlador do GKE define automaticamente o campo allPorts na regra de encaminhamento se houver cinco ou mais portas na especificação de serviço nas versões 1.20.6 e posteriores do GKE ou versões 1.21 e posteriores. Esse comportamento também está disponível nas versões 1.18 e posteriores do GKE e 1.19 e posteriores se você ativar a subconfiguração do balanceador de carga de rede de passagem interno no cluster.
No entanto, se você criar um balanceador de carga de rede de passagem interno manualmente, poderá
escolher o grupo de instâncias de nós do Google Kubernetes Engine como o back-end. Os serviços do Kubernetes de type: NodePort
estão disponíveis por meio do balanceador de carga de rede de passagem interno.
Níveis de serviço de rede
A anotação cloud.google.com/network-tier
especifica qual
nível de serviço de rede deve ser usado para a
regra de encaminhamento externo e o endereço IP nas versões 1.19 e
posteriores do GKE. Os valores válidos incluem Standard e Premium. O valor padrão é Premium.
Essa anotação é compatível apenas com balanceadores de carga externos.
A seguir
- Leia a visão geral da rede GKE.
- Saiba mais sobre balanceadores de carga do Compute Engine.
- Saiba mais sobre balanceadores de carga internos.
- Saiba mais sobre como exibir aplicativos externamente usando serviços.