Como ativar o modo de balanceamento de carga manual

Recomendamos que você configure um dos seguintes modos de balanceamento de carga:

  • No modo em pacote, o Google Distributed Cloud fornece e gerencia o balanceador de carga. Você não precisa ter uma licença de balanceador de carga, e a configuração necessária é mínima.

  • No modo manual, o Google Distributed Cloud usa o balanceador de carga que você escolher, como F5 Big-IP ou Citrix. O modo de balanceamento de carga manual exige que você faça mais configurações do que no modo em pacote.

O balanceamento de carga manual é compatível com os seguintes tipos de cluster:

  • Clusters de usuário com o Controlplane V2 ativado. Com o plano de controle V2, os nós do plano de controle de um cluster de usuário ficam no próprio cluster.

  • Clusters de usuário que usam o kubeception. O termo kubeception se refere 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 que você precisa seguir se optar por 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 valores nodePort. A ideia é que você escolha os endereços IP e os valores nodePort que quer usar e os registre em uma planilha ou em alguma outra ferramenta. Quando estiver 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, além dos 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

O local para configurar os endereços IP estáticos que você reservou depende do tipo de cluster e se o Controlplane V2 está ativado 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 você os configura 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 anteriores: nós de complementos Arquivo de bloco de IP do cluster de administrador e adicione o caminho no campo network.ipMode.ipBlockFilePath do 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 que não é de alta disponibilidade

A tabela a seguir descreve para que servem os endereços IP e onde você os configura para clusters de administrador que não são de alta disponibilidade.

IPs estáticos Configuração
Nó do plano de controle Arquivo de bloco de IP do cluster de administrador e adicione o caminho no campo network.ipMode.ipBlockFilePath do arquivo de configuração do cluster de administrador
Nós de complementos Arquivo de bloco de IP do cluster de administrador

Na versão 1.28 e mais recentes, todos os novos clusters de administrador precisam ser clusters de alta disponibilidade (HA) com três nós do plano de controle.

Cluster de usuário CP V2

A tabela a seguir descreve para que servem os endereços IP e onde você os configura 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 do arquivo de configuração do cluster de usuário

Cluster de usuário do Kubeception

A tabela a seguir descreve 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 bloco de IP do cluster de administrador e adicione o caminho no campo network.ipMode.ipBlockFilePath do 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 do arquivo de configuração do cluster de usuário

Como separar endereços IP para VIPs

Independentemente de você usar o 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 balanceamento de carga. Esses VIPs permitem que clientes externos alcancem os servidores da API Kubernetes e seu serviço de entrada nos clusters de usuários.

Configurar VIPs

O local de configuração dos VIPs 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:

  • Na versão 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 que não é de alta disponibilidade

A tabela a seguir descreve para que serve o VIP e onde você o configura 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:

Na versão 1.16 e mais recentes, não é necessário configurar um VIP de complementos para clusters de administrador que não são de alta disponibilidade.

Cluster de usuário CP V2

A tabela a seguir descreve para que servem os VIPs e onde você os configura 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 servem os VIPs e onde você os configura para clusters de usuário que usam 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 os valores de nodePort

O local para configurar os valores de nodePort depende de o cluster de usuário ter o ControlPlane V2 ativado.

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 anterior: nodePort para nós de complementos 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 complemento para clusters de administrador de alta disponibilidade.

Cluster de administrador que não é de alta disponibilidade

A tabela a seguir descreve para que servem os valores de 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 complementos 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 complementares de clusters de administrador que não são de alta disponibilidade.

Cluster de usuário CP V2

A tabela a seguir descreve para que servem os nodePorts e onde você os 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 no 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 no 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 para os nós do plano de controle para clusters de usuário com o Controlplane V2 ativado.

Cluster de usuário do Kubeception

A tabela a seguir descreve para que servem os valores nodePort e onde você os configura para clusters de usuário que usam 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 no 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 no 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 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 complementares.

    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 que não é de 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 complementares.

    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ário 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 nós do plano de controle

O Google Distributed Cloud gerencia automaticamente 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 os valores nodePort do tráfego para serviços nos 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 de complementos.

Na versão 1.16 e mais recentes, não é necessário configurar esse mapeamento para nós complementares de clusters de administrador de alta disponibilidade.

Cluster de administrador que não é de alta disponibilidade

Tráfego do plano de controle

Veja 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 de complementos.

Tráfego para serviços nos nós do complemento

1.15 e anteriores: veja a seguir o mapeamento para os endereços IP e os valores nodePort para serviços em execução nos 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 de complementos.

Na versão 1.16 e mais recentes, não é necessário configurar esse mapeamento para nós complementares de clusters de administrador que não são de alta disponibilidade.

Cluster de usuário CP V2

Tráfego do plano de controle

O Google Distributed Cloud processa automaticamente o balanceamento de carga do tráfego do plano de controle para clusters de usuário com o Controlplane V2 ativado. 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 do plano de dados

Veja 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 para 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 os NodePorts em todos os nós do cluster. Isso permite que qualquer nó no cluster lide com o tráfego do plano de dados.

Depois de configurar os mapeamentos, o balanceador de carga detectará 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 encaminha solicitações para qualquer nó no cluster. Depois que uma solicitação é encaminhada para um dos nós do cluster, a rede interna do Kubernetes assume e encaminha a solicitação para o pod de destino.

Cluster de usuário do Kubeception

Tráfego do plano de controle

Veja 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 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

Veja 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 para todos os nós no cluster de usuário. Com clusters de usuário que usam o kubeception, todos os nós são de trabalho.

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.

A seguir