Recomendamos que você configure um dos seguintes modos de balanceamento de carga:
Com o modo em pacote, o Google Distributed Cloud fornece e gerencia o balanceador de carga. Você não precisa de uma licença de balanceador de carga, e a quantidade de configuração que você precisa fazer é mínima.
Com o modo manual, o Google Distributed Cloud usa o balanceador de carga de sua escolha, como F5 BIG-IP ou Citrix. O modo de balanceamento de carga manual exige que você faça mais configurações do que o modo agrupado.
O balanceamento de carga manual é compatível com os seguintes tipos de cluster:
Clusters de usuário com o Controlplane V2 ativado. Com o Controlplane V2, os nós do plano de controle de um cluster de usuário estão no próprio cluster de usuário.
Clusters de usuário que usam o kubeception. O termo kubeception refere-se ao caso em que o plano de controle de um cluster de usuário é executado em um ou mais nós no cluster de administrador. Se o Controlplane V2 não estiver ativado, um cluster de usuário usará o kubeception.
Nesta página, descrevemos as etapas necessárias para usar o modo de balanceamento de carga manual.
Neste tópico, você reserva endereços IP para nós do plano de controle e
nós de trabalho para uso posterior. Você também reserva endereços IP para IPs virtuais
(VIPs) e decide os valores de nodePort
. A ideia é que você escolha os endereços IP e os valores nodePort
que quer usar e registre-os em uma planilha ou em alguma outra ferramenta. Quando estiver tudo pronto para criar os clusters,
você precisará dos endereços IP e dos valores nodePort
para preencher os
arquivos de configuração do
cluster de administrador
e do
cluster de usuário e
os arquivos de bloco de IP dos clusters.
Você também precisará dos endereços IP e dos valores nodePort
ao configurar manualmente
o balanceador de carga para clusters de usuário.
Como reservar endereços IP de nós
Com o modo de balanceamento de carga manual, não é possível usar o DHCP. Especifique endereços IP estáticos para os nós do cluster. Você precisa reservar endereços suficientes para os nós no cluster de administrador e para os nós em todos os clusters de usuários que pretende criar. Para detalhes sobre quantos endereços IP de nó precisam ser reservados, consulte Planejar seus endereços IP (Controlplane V2) e Planejar seus endereços IP (kubeception).
Configurar endereços IP
A configuração dos endereços IP estáticos reservados depende do tipo de cluster e da ativação do Controlplane V2 nos clusters de usuário.
Cluster de administrador de alta disponibilidade
A tabela a seguir descreve para que servem os endereços IP e onde eles são configurados para clusters de administrador de alta disponibilidade.
IPs estáticos | Configuração |
---|---|
Nós do plano de controle | Arquivo de configuração do cluster de administrador na
seção network.controlPlaneIPBlock.ips |
1.16 e anterior: nós de complemento | Arquivo de bloqueio de IP do cluster de administrador e adicione o caminho no campo network.ipMode.ipBlockFilePath no arquivo de configuração do cluster de administrador |
Na versão 1.28 e mais recentes, os novos clusters de administrador de alta disponibilidade não têm nós complementares. Portanto, não é necessário reservar endereços IP para nós de complementos como nas versões anteriores.
Cluster de administrador sem alta disponibilidade
A tabela a seguir descreve para que servem os endereços IP e onde eles são configurados para clusters de administrador que não são de alta disponibilidade.
IPs estáticos | Configuração |
---|---|
Nó do plano de controle | Arquivo de bloqueio de IP do cluster de administrador e adicione o caminho no campo network.ipMode.ipBlockFilePath no arquivo de configuração do cluster de administrador |
Nós de complementos | Arquivo de bloqueio de IP do cluster de administrador |
Na versão 1.28 e mais recentes, todos os novos clusters de administrador precisam ser de alta disponibilidade (HA, na sigla em inglês) com três nós do plano de controle.
Cluster de usuários do CP V2
A tabela a seguir descreve para que servem os endereços IP e onde eles são configurados para clusters de usuário com o Controlplane V2 ativado.
IPs estáticos | Configuração |
---|---|
Nós do plano de controle | Arquivo de configuração do cluster de usuário na
seção network.controlPlaneIPBlock.ips |
Nós de trabalho | Arquivo de bloco de IP
do cluster de usuário e adicione o caminho no
campo network.ipMode.ipBlockFilePath no
arquivo de configuração do cluster de usuário |
Cluster de usuário do Kubeception
Na tabela a seguir, descrevemos para que servem os endereços IP e onde você os configura para clusters de usuário que usam o kubeception.
IPs estáticos | Configuração |
---|---|
Nós do plano de controle | Arquivo de bloqueio de IP do cluster de administrador e adicione o caminho no campo network.ipMode.ipBlockFilePath no arquivo de configuração do cluster de administrador |
Nós de trabalho | Arquivo de bloco de IP
do cluster de usuário e adicione o caminho no
campo network.ipMode.ipBlockFilePath no
arquivo de configuração do cluster de usuário |
Como separar endereços IP para VIPs
Independentemente do modo de balanceamento de carga integrado, em pacote ou manual, é necessário reservar vários endereços IP que você pretende usar para IPs virtuais (VIPs) para o balanceamento de carga. Esses VIPs permitem que clientes externos alcancem os servidores da API Kubernetes e seu serviço de entrada em clusters de usuários.
Configurar VIPs
O local onde os VIPs são configurados depende do tipo de cluster.
Cluster de administrador de alta disponibilidade
A tabela a seguir descreve para que serve o VIP e onde você o configura para clusters de administrador de alta disponibilidade.
VIP | Configuração |
---|---|
VIP para o servidor da API Kubernetes do cluster de administrador | Arquivo de configuração do cluster de administrador no
campo loadBalancer.vips.controlPlaneVIP |
1.15 e anterior: VIP de complementos | Arquivo de configuração do cluster de administrador no
campo loadBalancer.vips.addonsVIP |
Observe as seguintes diferenças nas versões:
Nas versões 1.16 e mais recentes, não é necessário configurar um VIP de complementos para clusters de administrador de alta disponibilidade.
Nas versões 1.28 e mais recentes, os novos clusters de administrador de alta disponibilidade não têm nós complementares.
Cluster de administrador sem alta disponibilidade
A tabela a seguir descreve para que serve o VIP e onde ele é configurado para clusters de administrador que não são de alta disponibilidade.
VIP | Configuração |
---|---|
VIP para o servidor da API Kubernetes do cluster de administrador | Arquivo de configuração do cluster de administrador no
campo loadBalancer.vips.controlPlaneVIP |
1.15 e anterior: VIP de complementos | Arquivo de configuração do cluster de administrador no
campo loadBalancer.vips.addonsVIP |
Observe as seguintes diferenças nas versões:
Nas versões 1.16 e mais recentes, não é necessário configurar um VIP de complementos para clusters de administrador que não sejam de alta disponibilidade.
Cluster de usuários do CP V2
A tabela a seguir descreve para que servem os VIPs e onde eles são configurados para clusters de usuário com o Controlplane V2 ativado.
VIPs | Configuração |
---|---|
VIP para o servidor da API Kubernetes do cluster de usuário | Arquivo de configuração do cluster de usuário no
campo loadBalancer.vips.controlPlaneVIP |
VIP para o serviço de entrada no cluster de usuário | Arquivo de configuração do cluster de usuário no
campo loadBalancer.vips.ingressVIP |
Cluster de usuário do Kubeception
A tabela a seguir descreve para que são os VIPs e onde você os configura para clusters de usuário que usam o kubeception.
VIPs | Configuração |
---|---|
VIP para o servidor da API Kubernetes do cluster de usuário | Arquivo de configuração do cluster de usuário no
campo loadBalancer.vips.controlPlaneVIP |
VIP para o serviço de entrada no cluster de usuário | Arquivo de configuração do cluster de usuário no
campo loadBalancer.vips.ingressVIP |
Como reservar valores nodePort
No Google Distributed Cloud, o servidor da API Kubernetes e o serviço de entrada são
expostos pelos Serviços do Kubernetes.
Com o modo de balanceamento de carga manual, você precisa escolher os próprios valores nodePort
para
esses Serviços. Escolha valores no intervalo 30000 - 32767.
Configurar valores de nodePort
O local onde você configura os valores de nodePort
depende de o cluster de usuário ter o
ControlPlane V2 ativado ou não.
Cluster de administrador de alta disponibilidade
A tabela a seguir descreve para que serve o nodePort
e onde você
o configura para clusters de administrador de alta disponibilidade.
nodePort |
Configuração |
---|---|
1.15 e anteriores: nodePort para nós de complemento |
Arquivo de configuração do cluster de administrador no
campo loadBalancer.manualLB.addonsNodePort |
Na versão 1.16 e mais recentes, não é necessário configurar um nodePort
para
nós de complementos para clusters de administrador de alta disponibilidade.
Cluster de administrador sem alta disponibilidade
A tabela a seguir descreve para que servem os valores nodePort
e onde você
os configura para clusters de administrador que não são de alta disponibilidade.
nodePort |
Configuração |
---|---|
1.16 e anteriores: nodePort para o servidor da API
Kubernetes do cluster de administrador |
1.15 e anteriores: arquivo de configuração do cluster de administrador no
campo loadBalancer.vips.controlPlaneNodePort |
1.15 e anteriores: nodePort para nós de complemento |
Arquivo de configuração do cluster de administrador no
campo loadBalancer.manualLB.addonsNodePort |
Nas versões 1.16 e mais recentes, não é necessário configurar um nodePort
para
nós de complementos para clusters de administradores que não são de alta disponibilidade.
Cluster de usuários do CP V2
A tabela a seguir descreve para que servem as nodePorts
e onde você
as configura para clusters de usuário com o Controlplane V2 ativado.
nodePorts |
Configuração |
---|---|
HTTP nodePort para o serviço de entrada no cluster de
usuário |
Arquivo de configuração do cluster de usuário em
loadBalancer.manualLB.ingressHTTPNodePort |
HTTPS nodePort para o serviço de entrada no cluster de
usuário |
Arquivo de configuração do cluster de usuário em
loadBalancer.manualLB.ingressHTTPSNodePort |
Não é necessário configurar um nodePort
para o VIP do plano de controle porque
o Google Distributed Cloud processa o balanceamento de carga nos nós do plano de controle para
clusters de usuário com o Controlplane V2 ativado.
Cluster de usuário do Kubeception
Na tabela a seguir, descrevemos para que servem os valores nodePort
e onde você
os configura para clusters de usuário que usam o kubeception.
nodePort |
Configuração |
---|---|
nodePort para o servidor da API Kubernetes do cluster de
usuário |
Arquivo de configuração do cluster de usuário no
campo loadBalancer.manualLB.controlPlaneNodePort |
nodePort para o servidor Konnectivity do cluster de
usuário (o servidor Konnectivity usa o VIP do plano de controle) |
Arquivo de configuração do cluster de usuário no
campo loadBalancer.manualLB.konnectivityServerNodePort |
HTTP nodePort para o serviço de entrada no cluster de
usuário |
Arquivo de configuração do cluster de usuário em
loadBalancer.manualLB.ingressHTTPNodePort |
HTTPS nodePort para o serviço de entrada no cluster de
usuário |
Arquivo de configuração do cluster de usuário em
loadBalancer.manualLB.ingressHTTPSNodePort |
Exemplo de arquivo de configuração de cluster
O exemplo a seguir mostra uma parte de um arquivo de configuração de cluster de administrador e de usuário:
Cluster de administrador de alta disponibilidade
Versão 1.16 e mais recentes:
network: controlPlaneIPBlock: netmask: "255.255.248.0" gateway: "21.0.143.254" ips: - ip: "21.0.140.226" hostname: "admin-cp-vm-1" - ip: "21.0.141.48" hostname: "admin-cp-vm-2" - ip: "21.0.141.65" hostname: "admin-cp-vm-3" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" kind: ManualLB
A versão 1.15 e anteriores exigem um VIP e
nodeport
para nós de complemento.network: controlPlaneIPBlock: netmask: "255.255.248.0" gateway: "21.0.143.254" ips: - ip: "21.0.140.226" hostname: "admin-cp-vm-1" - ip: "21.0.141.48" hostname: "admin-cp-vm-2" - ip: "21.0.141.65" hostname: "admin-cp-vm-3" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" addonsVIP: "203.0.113.4" kind: ManualLB manualLB: addonsNodePort: 31405
Cluster de administrador sem alta disponibilidade
Versão 1.16 e mais recentes:
network: ipMode: type: static ipBlockFilePath: "ipblock-admin.yaml" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" kind: ManualLB manualLB: controlPlaneNodePort: 30562
A versão 1.15 e anteriores exigem um VIP e
nodeport
para nós de complemento.network: ipMode: type: static ipBlockFilePath: "ipblock-admin.yaml" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" addonsVIP: "172.16.21.41" kind: ManualLB manualLB: controlPlaneNodePort: 30562 addonsNodePort: 30563
Cluster de usuários do CP V2
network:
ipMode:
type: static
ipBlockFilePath: "ipblock1.yaml"
controlPlaneIPBlock:
netmask: "255.255.255.0"
gateway: "172.16.21.1"
ips:
- ip: "172.16.21.6"
hostname: "cp-vm-1"
- ip: "172.16.21.7"
hostname: "cp-vm-2"
- ip: "172.16.21.8"
hostname: "cp-vm-3"
loadBalancer:
vips:
controlPlaneVIP: "172.16.21.40"
ingressVIP: "172.16.21.30"
kind: ManualLB
manualLB:
ingressHTTPNodePort: 30243
ingressHTTPSNodePort: 30879
Cluster de usuário do Kubeception
network:
ipMode:
type: static
ipBlockFilePath: "ipblock1.yaml"
loadBalancer:
vips:
controlPlaneVIP: "172.16.21.40"
ingressVIP: "172.16.21.30"
kind: ManualLB
manualLB:
ingressHTTPNodePort: 30243
ingressHTTPSNodePort: 30879
konnectivityServerNodePort: 30563
controlPlaneNodePort: 30562
Configurar seu balanceador de carga
Use as ferramentas ou o console de gerenciamento do balanceador de carga para configurar os seguintes mapeamentos no balanceador de carga. A maneira de fazer isso depende do seu balanceador de carga.
Cluster de administrador de alta disponibilidade
Tráfego para controlar os nós do plano
O Google Distributed Cloud lida automaticamente com o balanceamento de carga do tráfego
do plano de controle para clusters de administrador de alta disponibilidade. Embora não seja necessário configurar um mapeamento
no balanceador de carga, é preciso especificar um endereço IP no
campo loadBalancer.vips.controlPlaneVIP
.
Tráfego para serviços nos nós do complemento
1.15 e anteriores: a seguir, mostramos o mapeamento para os endereços IP e valores de nodePort
para o tráfego para serviços em nós complementares:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
Adicione esse mapeamento para todos os nós no cluster de administrador, tanto os nós do plano de controle quanto os nós do complemento.
Nas versões 1.16 e mais recentes, não é necessário configurar esse mapeamento para nós de complemento para clusters de administrador de alta disponibilidade.
Cluster de administrador sem alta disponibilidade
Tráfego do plano de controle
Confira a seguir o mapeamento para o endereço IP e o valor nodePort
do
nó do plano de controle:
- (
controlPlaneVIP
:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
)
Adicione esse mapeamento para todos os nós no cluster de administrador, tanto o nó do plano de controle quanto os nós do complemento.
Tráfego para serviços nos nós do complemento
1.15 e anteriores: a seguir, mostramos o mapeamento para os endereços IP e valores nodePort
para serviços em execução em nós complementares:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
Adicione esse mapeamento para todos os nós no cluster de administrador, tanto o nó do plano de controle quanto os nós do complemento.
Na versão 1.16 e mais recentes, não é necessário configurar esse mapeamento para nós de complemento para clusters de administrador que não sejam de alta disponibilidade.
Cluster de usuários do CP V2
Tráfego do plano de controle
O Google Distributed Cloud lida automaticamente com o balanceamento de carga do tráfego
do plano de controle para clusters de usuário com o Controlplane V2 ativado. Não é
necessário configurar um mapeamento no balanceador de carga, mas você precisa especificar um endereço
IP no campo loadBalancer.vips.controlPlaneVIP
.
Tráfego do plano de dados
Confira a seguir o mapeamento para os endereços IP e os valores nodePort
do
tráfego do plano de dados:
- (
ingressVIP
:80
) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort
) - (
ingressVIP
:443
) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort
)
Adicione esses mapeamentos a todos os nós no cluster de usuário, tanto os nós do plano de controle quanto os nós de trabalho. Como você configurou o NodePorts no cluster, o Kubernetes abre o NodePorts em todos os nós do cluster. Isso permite que qualquer nó do cluster processe o tráfego do plano de dados.
Depois de configurar os mapeamentos, o balanceador de carga detecta o tráfego no endereço IP que você configurou para o VIP de entrada do cluster de usuário nas portas HTTP e HTTPS padrão. O balanceador de carga roteia solicitações para qualquer nó no cluster. Depois que uma solicitação é roteada para um dos nós do cluster, a rede interna do Kubernetes assume e roteia a solicitação para o pod de destino.
Cluster de usuário do Kubeception
Tráfego do plano de controle
Confira a seguir o mapeamento para os endereços IP e os valores nodePort
do
tráfego do plano de controle:
- (
controlPlaneVIP
:443
) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
) - (
controlPlaneVIP
:8132
) -> (NODE_IP_ADDRESSES:konnectivityServerNodePort
)
Adicione esse mapeamento para todos os nós no cluster de admin, tanto o cluster de administrador quanto os nós do plano de controle do cluster de usuário.
Tráfego do plano de dados
Confira a seguir o mapeamento para os endereços IP e os valores nodePort
do
tráfego do plano de dados:
- (
ingressVIP
:80
) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort
) - (
ingressVIP
:443
) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort
)
Adicione esses mapeamentos a todos os nós no cluster de usuário. Quando clusters de usuário usam o kubeception, todos os nós no cluster são nós de trabalho.
Como redefinir conexões com nós com falha (recomendado)
Além dos requisitos anteriores, recomendamos que você configure o balanceador de carga para que redefina as conexões do cliente quando detectar uma falha no nó de back-end. Sem essa configuração, os clientes do servidor da API Kubernetes podem parar de responder por vários minutos quando uma instância do servidor é interrompida, o que pode causar instabilidade no plano de controle do Kubernetes.
- Com a F5 BIG-IP, essa configuração é chamada de "Ação no serviço inativo" na página de configuração do pool de back-end.
- Com o HAProxy, essa configuração é chamada de "on-marked-down shutdown-sessions" na configuração do servidor de back-end.
- Se você estiver usando um balanceador de carga diferente, consulte a documentação para encontrar a configuração equivalente.
Como receber suporte para balanceamento de carga manual
O Google não oferece suporte para balanceadores de carga configurados usando o modo de balanceamento de carga manual. Se você encontrar problemas com o balanceador de carga, entre em contato com o fornecedor.