Ativar o modo de balanceamento de carga manual

Recomendamos que configure um dos seguintes modos de equilíbrio de carga:

  • Com o modo agrupado, o Google Distributed Cloud fornece e gere o balanceador de carga. Não tem de obter uma licença para um equilibrador de carga e a quantidade de configuração que tem de fazer é mínima.

  • Com o modo manual, o Google Distributed Cloud usa um equilibrador de carga à sua escolha, como o F5 BIG-IP ou o Citrix. O modo de equilíbrio de carga manual requer mais configuração do que o modo agrupado.

O equilíbrio de carga manual é suportado para os seguintes tipos de clusters:

  • Clusters de utilizadores com o Controlplane V2 ativado. Com o Controlplane V2, os nós do plano de controlo de um cluster de utilizador estão no próprio cluster de utilizador.

  • Clusters de utilizadores que usam o kubeception. O termo kubeception refere-se ao caso em que o plano de controlo de um cluster de utilizador é executado num ou mais nós no cluster de administrador. Se o Controlplane V2 não estiver ativado, um cluster de utilizadores usa o kubeception.

Este documento descreve os passos que tem de seguir se optar por usar o modo de equilíbrio de carga manual.

Neste documento, reserva endereços IP para nós do plano de controlo e nós de trabalho para utilização posterior. Também reserva endereços IP para IPs virtuais (VIPs) e decide sobre os valores de NodePort. A ideia é escolher os endereços IP e os valores NodePort que quer usar e, em seguida, registá-los numa folha de cálculo ou noutra ferramenta. Quando estiver pronto para criar os clusters, precisa dos endereços IP e dos valores NodePort para preencher os ficheiros de configuração do cluster de administrador e do cluster de utilizador, bem como os ficheiros de blocos de IP para os seus clusters.

Também precisa dos endereços IP e dos valores NodePort quando configurar manualmente o balanceador de carga para clusters de utilizadores.

Configure um tipo diferente de balanceador de carga para o plano de controlo

Na versão 1.32 e superior, quando a opção cluster avançado está ativada, pode configurar opcionalmente um tipo diferente de equilibrador de carga para o plano de controlo quando cria um novo cluster. Para mais informações, consulte o seguinte:

Reservar endereços IP de nós

Com o modo de equilíbrio de carga manual, não pode usar o DHCP. Tem de especificar endereços IP estáticos para os nós do cluster. Tem de reservar endereços suficientes para os nós no cluster de administrador e os nós em todos os clusters de utilizador que pretende criar. Para ver detalhes sobre quantos endereços IP de nós deve reservar, consulte os artigos Planeie os seus endereços IP (Controlplane V2) e Planeie os seus endereços IP (kubeception).

Configurar endereços IP

A configuração dos endereços IP estáticos que reservou depende do tipo de cluster e se o Controlplane V2 está ativado nos seus clusters de utilizadores.

Cluster de administrador de HA

A tabela seguinte descreve a finalidade dos endereços IP e onde os configura para clusters de administrador de HA.

IPs estáticos Configuração
Nós do plano de controlo

Se o cluster usar domínios de topologia, adicione os endereços IP num ficheiro de bloco de IP para o cluster de administrador e adicione o caminho no campo network.ipMode.ipBlockFilePath no ficheiro de configuração do cluster de administrador.

Se o cluster não usar domínios de topologia, adicione os endereços IP no ficheiro de configuração do cluster de administrador na secção network.controlPlaneIPBlock.ips.

1.16 e inferior: nós suplementares Ficheiro de bloco de IPs do cluster de administrador e adicione o caminho no campo network.ipMode.ipBlockFilePath no ficheiro de configuração do cluster de administrador

Na versão 1.28 e superior, os novos clusters de administrador de HA não têm nós de suplementos, pelo que não precisa de reservar endereços IP para nós de suplementos como nas versões anteriores.

Cluster de administrador não de HA

A tabela seguinte descreve a finalidade dos endereços IP e onde os configura para clusters de administrador sem HA.

IPs estáticos Configuração
Nó do plano de controlo Ficheiro de bloco de IPs do cluster de administrador e adicione o caminho no campo network.ipMode.ipBlockFilePath no ficheiro de configuração do cluster de administrador
Nós suplementares Ficheiro de bloqueio de IP do cluster de administrador

Na versão 1.28 e superior, todos os novos clusters de administrador têm de ser clusters de alta disponibilidade (HA) com 3 nós do plano de controlo.

Cluster de utilizadores do CP V2

A tabela seguinte descreve a finalidade dos endereços IP e onde os configura para clusters de utilizadores com o Controlplane V2 ativado.

IPs estáticos Configuração
Nós do plano de controlo

Se o cluster usar domínios de topologia, adicione os endereços IP num ficheiro de bloco de IP para o cluster de utilizadores e adicione o caminho no campo network.ipMode.ipBlockFilePath no ficheiro de configuração do cluster de utilizadores

Se o cluster não usar domínios de topologia, adicione os endereços IP no ficheiro de configuração do cluster de utilizadores na secção network.controlPlaneIPBlock.ips.

Nós trabalhadores Ficheiro de bloco de IPs do cluster de utilizadores e adicione o caminho no campo network.ipMode.ipBlockFilePath no ficheiro de configuração do cluster de utilizadores

Cluster de utilizadores do Kubeception

A tabela seguinte descreve a finalidade dos endereços IP e onde os configura para clusters de utilizadores que usam o kubeception.

IPs estáticos Configuração
Nós do plano de controlo Ficheiro de bloco de IPs do cluster de administrador e adicione o caminho no campo network.ipMode.ipBlockFilePath no ficheiro de configuração do cluster de administrador
Nós trabalhadores Ficheiro de bloco de IPs do cluster de utilizadores e adicione o caminho no campo network.ipMode.ipBlockFilePath no ficheiro de configuração do cluster de utilizadores

Na versão 1.30 e superior, o Controlplane V2 é necessário para novos clusters de utilizadores.

Reservar endereços IP para VIPs

Independentemente de usar o modo de equilíbrio de carga integrado, agrupado ou manual, tem de reservar vários endereços IP que pretende usar para IPs virtuais (VIPs) para o equilíbrio de carga. Estes IPs virtuais permitem que os clientes externos alcancem os servidores da API Kubernetes e o seu serviço de entrada nos clusters de utilizadores.

Configure VIPs

O local onde configura os IPs virtuais depende do tipo de cluster.

Cluster de administrador de HA

A tabela seguinte descreve a finalidade do IP virtual e onde o configura para clusters de administrador de HA.

VIP Configuração
VIP para o servidor da API Kubernetes do cluster de administrador Ficheiro de configuração do cluster de administrador no campo loadBalancer.vips.controlPlaneVIP
1.15 e inferior: VIP de suplementos Ficheiro de configuração do cluster de administrador no campo loadBalancer.vips.addonsVIP

Tenha em atenção as seguintes diferenças entre versões:

  • Na versão 1.16 e superior, não precisa de configurar um VIP de suplementos para clusters de administrador de HA.

  • Na versão 1.28 e superior, os novos clusters de administrador de HA não têm nós de suplementos.

Cluster de administrador não de HA

A tabela seguinte descreve a finalidade do IP virtual e onde o configura para clusters de administrador sem HA.

VIP Configuração
VIP para o servidor da API Kubernetes do cluster de administrador Ficheiro de configuração do cluster de administrador no campo loadBalancer.vips.controlPlaneVIP
1.15 e inferior: VIP de suplementos Ficheiro de configuração do cluster de administrador no campo loadBalancer.vips.addonsVIP

Tenha em atenção as seguintes diferenças entre versões:

Na versão 1.16 e superior, não precisa de configurar um VIP de suplementos para clusters de administrador sem HA.

Cluster de utilizadores do CP V2

A tabela seguinte descreve a finalidade dos IPs virtuais e onde os configura para clusters de utilizadores com o Controlplane V2 ativado.

VIPs Configuração
VIP para o servidor da API Kubernetes do cluster de utilizadores Ficheiro de configuração do cluster de utilizadores no campo loadBalancer.vips.controlPlaneVIP
VIP para o serviço de entrada no cluster de utilizadores Ficheiro de configuração do cluster de utilizadores no campo loadBalancer.vips.ingressVIP

Cluster de utilizadores do Kubeception

A tabela seguinte descreve a finalidade dos VIPs e onde os configura para clusters de utilizadores que usam o kubeception.

VIPs Configuração
VIP para o servidor da API Kubernetes do cluster de utilizadores Ficheiro de configuração do cluster de utilizadores no campo loadBalancer.vips.controlPlaneVIP
VIP para o serviço de entrada no cluster de utilizadores Ficheiro de configuração do cluster de utilizadores no campo loadBalancer.vips.ingressVIP

Reservar valores de NodePort

No Google Distributed Cloud, o servidor da API Kubernetes e o serviço de entrada são expostos pelos serviços Kubernetes. Com o modo de equilíbrio de carga manual, tem de escolher os seus próprios valores NodePort para estes serviços. Escolha valores no intervalo de 30000 a 32767.

Configure os valores de NodePort

O local onde configura os valores NodePort depende de o cluster de utilizador ter o ControlPlane V2 ativado.

Cluster de administrador de HA

A tabela seguinte descreve a finalidade do NodePort e onde o configura para clusters de administrador de HA.

nodePort Configuração
1.15 e inferior: nodePort para nós de suplementos Ficheiro de configuração do cluster de administrador no campo loadBalancer.manualLB.addonsNodePort

Na versão 1.16 e superior, não precisa de configurar um NodePort para nós suplementares para clusters de administrador de HA.

Cluster de administrador não de HA

A tabela seguinte descreve a finalidade dos valores NodePort e onde os configura para clusters de administrador sem HA.

nodePort Configuração
1.16 e anteriores: nodePort para o servidor da API Kubernetes do cluster de administrador 1.15 e anteriores: ficheiro de configuração do cluster de administrador no campo loadBalancer.vips.controlPlaneNodePort
1.15 e anteriores: nodePort para nós de suplementos Ficheiro de configuração do cluster de administrador no campo loadBalancer.manualLB.addonsNodePort

Na versão 1.16 e superior, não precisa de configurar um NodePort para nós suplementares para clusters de administrador não HA.

Cluster de utilizadores do CP V2

A tabela seguinte descreve a finalidade dos NodePorts e onde os configura para clusters de utilizadores com o Controlplane V2 ativado. Na versão 1.30 e superior, não precisa de configurar valores para os NodePorts de entrada.

nodePorts Configuração
HTTP nodePort para o serviço de entrada no cluster de utilizadores Ficheiro de configuração do cluster de utilizadores no loadBalancer.manualLB.ingressHTTPNodePort
HTTPS nodePort para o serviço de entrada no cluster de utilizadores Ficheiro de configuração do cluster de utilizadores no loadBalancer.manualLB.ingressHTTPSNodePort

Cluster de utilizadores do Kubeception

A tabela seguinte descreve a finalidade dos valores NodePort e onde os configura para clusters de utilizadores que usam o kubeception.

nodePort Configuração
nodePort para o servidor da API Kubernetes do cluster do utilizador Ficheiro de configuração do cluster de utilizadores no campo loadBalancer.manualLB.controlPlaneNodePort
nodePort para o servidor Konnectivity do cluster do utilizador (o servidor Konnectivity usa o VIP do plano de controlo) Ficheiro de configuração do cluster de utilizadores no campo loadBalancer.manualLB.konnectivityServerNodePort
HTTP nodePort para o serviço de entrada no cluster de utilizadores Ficheiro de configuração do cluster de utilizadores no loadBalancer.manualLB.ingressHTTPNodePort
HTTPS nodePort para o serviço de entrada no cluster de utilizadores Ficheiro de configuração do cluster de utilizadores no loadBalancer.manualLB.ingressHTTPSNodePort

Exemplo de ficheiro de configuração do cluster

O exemplo seguinte mostra uma parte de um ficheiro de configuração de um cluster de administrador e de utilizador:

Cluster de administrador de HA

  • Versão 1.16 e superior:

    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 requerem um VIP e um NodePort para os nós suplementares.

    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 não de HA

  • Versão 1.16 e superior:

    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 inferior requer um VIP e um NodePort para nós suplementares.

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

Configure o balanceador de carga

Use a consola de gestão ou as ferramentas do equilibrador de carga para configurar os seguintes mapeamentos no equilibrador de carga. A forma como o faz depende do seu equilibrador de carga.

Cluster de administrador de HA

Tráfego para nós do plano de controlo

A associação que tem de configurar depende de ter ativado os clusters avançados quando cria o cluster de administrador.

  • Se os clusters avançados não estiverem ativados: O Google Distributed Cloud processa automaticamente o equilíbrio de carga do tráfego do plano de controlo para clusters de administrador de HA. Embora não precise de configurar um mapeamento no equilibrador de carga, tem de especificar um endereço IP no campo loadBalancer.vips.controlPlaneVIP.

  • Se os clusters avançados estiverem ativados, tem de configurar o balanceador de carga da seguinte forma:

    1. Especifique um endereço IP no campo loadBalancer.vips.controlPlaneVIP.

    2. Configure o seguinte mapeamento:

      • (controlPlaneVIP:443) -> (CONTROL_PLANE_NODE_IP_ADDRESSES:6433)
    3. Certifique-se de que a verificação de funcionamento do back-end está configurada corretamente. A verificação de funcionamento tem de usar HTTPS e verificar o ponto final /readyz na porta 6443. A verificação de estado tem de confirmar que este ponto final devolve o código de estado 200 para considerar o nó como estando em bom estado.

Tráfego para serviços nos nós suplementares

1.15 e anteriores: a imagem seguinte mostra o mapeamento para os endereços IP e os valores NodePort para o tráfego para serviços em nós suplementares:

  • (addonsVIP:8443) -> (NODE_IP_ADDRESSES:addonsNodePort)

Adicione este mapeamento para todos os nós no cluster de administrador, tanto os nós do plano de controlo como os nós de suplementos.

Na versão 1.16 e superior, não precisa de configurar este mapeamento para nós suplementares para clusters de administrador de HA.

Cluster de administrador não de HA

Tráfego do plano de controlo

A imagem seguinte mostra o mapeamento para o endereço IP e o valor NodePort do nó do plano de controlo:

  • (controlPlaneVIP:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort)

Adicione este mapeamento para todos os nós no cluster de administrador, tanto o nó do plano de controlo como os nós de suplementos.

Tráfego para serviços nos nós suplementares

1.15 e anteriores: a imagem seguinte mostra o mapeamento para os endereços IP e os valores NodePort para serviços executados em nós suplementares:

  • (addonsVIP:8443) -> (NODE_IP_ADDRESSES:addonsNodePort)

Adicione este mapeamento para todos os nós no cluster de administrador, tanto o nó do plano de controlo como os nós de suplementos.

Na versão 1.16 e superior, não precisa de configurar este mapeamento para nós suplementares para clusters de administrador sem HA.

Cluster de utilizadores do CP V2

Tráfego do plano de controlo

O mapeamento que tem de configurar depende de se vai ativar os clusters avançados quando criar o cluster de utilizadores.

  • Se os clusters avançados não estiverem ativados: O Google Distributed Cloud processa automaticamente o equilíbrio de carga do tráfego do plano de controlo para clusters de utilizadores. Embora não precise de configurar um mapeamento no equilibrador de carga, tem de especificar um endereço IP no campo loadBalancer.vips.controlPlaneVIP.

  • Se os clusters avançados estiverem ativados, tem de configurar o balanceador de carga da seguinte forma:

    1. Especifique um endereço IP no campo loadBalancer.vips.controlPlaneVIP.

    2. Configure o seguinte mapeamento:

      • (controlPlaneVIP:443) -> (CONTROL_PLANE_NODE_IP_ADDRESSES:6433)
    3. Certifique-se de que a verificação de funcionamento do back-end está configurada corretamente. A verificação de funcionamento tem de usar HTTPS e verificar o ponto final /readyz na porta 6443. A verificação de estado tem de confirmar que este ponto final devolve o código de estado 200 para considerar o nó como estando em bom estado.

Tráfego do plano de dados

O mapeamento que tem de configurar depende de ativar ou não os clusters avançados quando cria o cluster de utilizadores.

  • Se os clusters avançados não estiverem ativados, siga estes passos antes de criar o cluster:

    1. No ficheiro de configuração do cluster de utilizadores, configure loadBalancer.vips.ingressVIP, loadBalancer.manualLB.ingressHTTPNodePort e loadBalancer.manualLB.ingressHTTPSNodePort.

    2. No equilibrador de carga, configure os mapeamentos de portas para endereços IP para cada NodePort de entrada:

      • (ingressVIP:80) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort)
      • (ingressVIP:443) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort)
  • Se os clusters avançados estiverem ativados, siga estes passos:

    1. Antes de criar o cluster, configure loadBalancer.vips.ingressVIP no ficheiro de configuração do cluster de utilizadores. Não precisa de configurar valores para cada NodePort de entrada, uma vez que não têm efeito quando os clusters avançados estão ativados.

    2. Depois de criar o cluster, obtenha os valores de cada NodePort de entrada:

      kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n gke-system get service istio-ingress -oyaml
      

      Procure HTTP e HTTPS na secção de portas na especificação do serviço e anote os valores de NodePort.

    3. No equilibrador de carga, configure os mapeamentos de portas para endereços IP para cada NodePort de entrada:

      • (ingressVIP:80) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort)
      • (ingressVIP:443) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort)

    Em ambos os casos, adicione estes mapeamentos para todos os nós do plano de controlo e nós de trabalho no cluster de utilizador. Uma vez que configurou NodePorts no cluster, o Kubernetes abre os NodePorts em todos os nós do cluster. Esta configuração permite que qualquer nó no cluster processe o tráfego do plano de dados.

    Depois de configurar os mapeamentos, o balanceador de carga fica a aguardar tráfego no endereço IP que configurou para o VIP de entrada do cluster de utilizadores nas portas HTTP e HTTPS padrão. O balanceador de carga encaminha os pedidos para qualquer nó no cluster. Depois de um pedido ser encaminhado para um dos nós do cluster, a rede Kubernetes interna assume o controlo e encaminha o pedido para o pod de destino.

Cluster de utilizadores do Kubeception

Tráfego do plano de controlo

A tabela seguinte mostra o mapeamento para os endereços IP e os valores NodePort para o tráfego do plano de controlo:

  • (controlPlaneVIP:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort)
  • (controlPlaneVIP:8132) -> (NODE_IP_ADDRESSES:konnectivityServerNodePort)

Adicione este mapeamento para todos os nós no cluster admin, tanto o cluster de administrador como os nós do plano de controlo do cluster de utilizador.

Tráfego do plano de dados

A tabela seguinte mostra o mapeamento para os endereços IP e os valores NodePort para o tráfego do plano de dados:

  • (ingressVIP:80) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort)
  • (ingressVIP:443) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort)

Adicione estes mapeamentos para todos os nós no cluster de utilizadores. Com os clusters de utilizadores através do kubeception, todos os nós no cluster são nós de trabalho.

Além dos requisitos anteriores, recomendamos que configure o equilibrador de carga para repor as ligações do cliente quando detetar uma falha do nó de back-end. Sem esta configuração, os clientes do servidor da API Kubernetes podem deixar de responder durante vários minutos quando uma instância do servidor fica inativa, o que pode causar instabilidade no plano de controlo do Kubernetes.

  • Com o F5 BIG-IP, esta definição denomina-se Action On Service Down na página de configuração do conjunto de back-end.
  • Com o HAProxy, esta definição é denominada on-marked-down shutdown-sessions na configuração do servidor de back-end.
  • Se estiver a usar um equilibrador de carga diferente, deve consultar a documentação para encontrar a definição equivalente.

Receber apoio técnico para o balanceamento de carga manual

A Google não oferece apoio técnico para equilibradores de carga configurados através do modo de equilíbrio de carga manual. Se tiver problemas com o equilibrador de carga, contacte o fornecedor do equilibrador de carga.

O que se segue?