Configure o balanceamento de carga manual

Esta página explica os requisitos de equilíbrio de carga quando usa o equilíbrio de carga manual. Ao contrário do balanceamento de carga agrupado, onde o Google Distributed Cloud implementa balanceadores de carga nos nós do cluster para o plano de controlo e o tráfego do plano de dados, com o balanceamento de carga manual, configura as suas próprias soluções de balanceamento de carga para o plano de controlo e o tráfego do plano de dados.

Tem de configurar um equilibrador de carga externo para o plano de controlo antes de criar um cluster bare metal. O balanceador de carga do plano de controlo externo também pode ser usado para tráfego do plano de dados, ou pode configurar um balanceador de carga separado para o plano de dados. Por exemplo, pode usar um equilibrador de carga no cluster, como o MetalLB, para o tráfego do plano de dados.

Além de explicar os requisitos de equilíbrio de carga, esta página descreve como configurar o equilíbrio de carga manual através do F5 BIG-IP.

Pré-requisitos

As secções seguintes descrevem os pré-requisitos para configurar o equilíbrio de carga manual.

Endereço IP necessário

Tem de planear os IPs virtuais antes de criar um cluster. Todos os clusters precisam de um VIP para o plano de controlo. Todos os clusters de utilizadores precisam de um segundo VIP para o serviço de entrada.

Estes IPs virtuais podem estar em qualquer sub-rede IPv4 encaminhável a partir do equilibrador de carga. O VIP do plano de controlo tem de estar acessível a partir de todos os nós do cluster e da estação de trabalho do administrador na qual executa o comando bmctl.

Quando cria o cluster, o serviço de entrada é implementado através do VIP que especifica no ficheiro de configuração do cluster. Pode configurar o equilíbrio de carga para este endereço IP após a criação do cluster.

Tem de conhecer os endereços IP que vai usar para os nós que vão ser usados como nós do plano de controlo.

Requisitos do balanceador de carga do plano de controlo externo

O equilibrador de carga do plano de controlo tem de ser configurado antes de criar o cluster. O equilibrador de carga do plano de controlo tem de cumprir os seguintes requisitos:

  • Um serviço virtual (frontend) para o VIP do plano de controlo. A porta de audição predefinida do plano de controlo é 443. No entanto, se especificar uma porta diferente, o campo loadBalancer.ports.controlPlaneLBPort do ficheiro de configuração do cluster usa essa porta para o serviço virtual.
  • Um grupo de back-end que contém todos os endereços IP dos nós do plano de controlo do cluster. A porta de back-end que o plano de controlo escuta é 6444.
  • Uma verificação de funcionamento que monitoriza os nós de back-end. A verificação de funcionamento tem de usar HTTPS e verificar o ponto final /readyz na porta 6444. A verificação do estado de funcionamento tem de verificar se este ponto final devolve o código de estado 200 para considerar o nó em bom estado.

Se o balanceador de carga externo não estiver configurado corretamente, é provável que a inicialização do cluster falhe. Uma verificação prévia verifica se o balanceador de carga externo está configurado corretamente, incluindo a verificação de que o balanceador de carga está a verificar o estado do ponto final /readyz.

Reponha as associações aos nós com falhas (recomendado)

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.

Configure o cluster

Antes de criar um cluster do Google Distributed Cloud, cria um ficheiro de configuração do cluster com bmctl. Edite este ficheiro para ativar o equilíbrio de carga manual no cluster:

  1. Defina o campo loadBalancer.mode como manual.
  2. Defina o campo loadBalancer.vips.controlPlaneVIP para o VIP que configurou no equilibrador de carga.
  3. Remova ou comente a secção loadBalancer.addressPools.

Depois de terminar a edição do ficheiro de configuração, incluindo os campos não relacionados com o balanceamento de carga, verifique se o VIP do plano de controlo está configurado corretamente no balanceador de carga executando as verificações prévias:

bmctl check preflight -c CLUSTER_NAME

Substitua CLUSTER_NAME pelo nome do cluster.

Suporte de serviços LoadBalancer em clusters de utilizadores

Tem de configurar o equilíbrio de carga para suportar serviços LoadBalancer do Kubernetes. No modo de equilíbrio de carga manual, o Google Distributed Cloud não aprovisiona automaticamente equilibradores de carga, pelo que os serviços LoadBalancer não funcionam, a menos que aprovisione e configure equilibradores de carga para apontar para os serviços.

Além disso, o Google Distributed Cloud implementa automaticamente um serviço de entrada em todos os clusters de utilizadores através de um serviço LoadBalancer. Para ser acessível externamente, este serviço LoadBalancer requer um balanceador de carga configurado para apontar para o serviço.

As suas opções para suportar serviços LoadBalancer incluem:

  • Configurar manualmente o balanceador de carga para cada serviço LoadBalancer no cluster. Consulte o artigo Configurar o suporte para serviços LoadBalancer para ver um exemplo com o F5 BIG-IP.
  • Instale um controlador do balanceador de carga no cluster que configura o balanceador de carga externo quando os serviços LoadBalancer são criados.
  • Instale uma solução de balanceamento de carga no cluster, como o MetalLB.

Balanceamento de carga manual com F5 BIG-IP

Esta secção descreve como configurar o balanceamento de carga manual com o F5 BIG-IP como o balanceador de carga externo. Se estiver a usar um equilibrador de carga diferente, consulte a documentação desse equilibrador de carga e use estes passos como modelo.

Configure o balanceador de carga do plano de controlo

Tem de configurar o equilibrador de carga do plano de controlo antes de criar um cluster. Depois de executar estes passos, pode configurar o cluster e criá-lo.

Crie uma partição para o seu cluster

Cada cluster deve ter a sua própria partição. Use o utilitário de configuração do BIG-IP para criar uma partição:

  1. Aceda a Sistema > Utilizadores > Lista de partições.
  2. Clique em Criar.
  3. Introduza um nome para a partição.
  4. Clique em Concluído.

Nos passos seguintes, cria objetos nesta partição. Certifique-se de que esta partição está selecionada no menu pendente no canto superior direito da IU para cada uma das seguintes tarefas, de modo que cada objeto seja criado nesta partição.

Crie um monitor

Crie um monitor para fazer verificações de funcionamento nos nós do plano de controlo:

  1. Aceda a Tráfego local > Monitorizações.
  2. Clique em Criar.
  3. Introduza um nome para o monitor (por exemplo, https_readyz).
  4. Defina o Tipo como HTTPS.
  5. Para String de envio, introduza GET /readyz HTTP/1.1\r\nHost: \r\nConnection: close.
  6. Para Receber string, introduza HTTP/1.1 200.
  7. Clique em Concluído.

Crie nós

Crie um node que aponte para os nós do plano de controlo. Se o cluster tiver um painel de controlo de alta disponibilidade (HA) com vários nós do painel de controlo, crie um objeto de nó para cada nó do painel de controlo.

  1. Aceda a Tráfego local > Nós > Lista de nós.
  2. Clique em Criar.
  3. Introduza um nome para o nó.
  4. Introduza o endereço IP do nó no campo Endereço.
  5. Clique em Concluído.

Crie um conjunto de back-ends

Crie um pool para os nós do plano de controlo:

  1. Aceda a Tráfego local > Conjuntos > Lista de conjuntos.
  2. Clique em Criar.
  3. Selecione Avançadas no menu pendente Configuração.
  4. Introduza um nome para o conjunto.
  5. Selecione o monitor de estado criado anteriormente.
  6. Defina Action On Service Down como Reject (consulte a discussão desta definição na secção Repor ligações a nós com falhas).
  7. Adicione o nó do plano de controlo ao conjunto. Se o cluster tiver vários nós do plano de controlo, repita estes passos para cada nó:
    1. Na secção Novos membros, clique em Lista de nós e, de seguida, selecione o nó do plano de controlo criado anteriormente.
    2. No campo Porta de serviço, introduza 6444.
    3. Clique em Adicionar.

Crie um servidor virtual

Crie um servidor virtual para o plano de controlo:

  1. Aceda a Local Traffic > Virtual Servers > Virtual Server List.
  2. Clique em Criar.
  3. Introduza um nome para o servidor virtual.
  4. Defina Tipo como Padrão.
  5. Introduza 0.0.0.0/0 no campo Endereço de origem para permitir tráfego de qualquer origem.
  6. Introduza o VIP do plano de controlo como o Endereço de destino.
  7. Introduza a porta do plano de controlo como a porta de serviço. Por predefinição, é 443, mas é configurável e tem de corresponder ao que configurar na configuração do cluster para loadBalancer.ports.controlPlaneLBPort.
  8. No campo Tradução de endereço de origem, selecione Mapeamento automático.
  9. Em Conjunto predefinido, selecione o conjunto criado anteriormente no menu pendente.
  10. Clique em Concluído.

Configure o suporte para serviços LoadBalancer

No modo de balanceamento de carga manual, o Google Distributed Cloud não aprovisiona automaticamente balanceadores de carga para suportar serviços LoadBalancer. Consulte o artigo Suporte de serviços LoadBalancer em clusters de utilizadores para mais informações.

Esta secção mostra como configurar manualmente um equilibrador de carga F5 BIG-IP para um serviço LoadBalancer. Repita estes passos para cada serviço LoadBalancer que quer expôr.

Pré-requisitos

Para configurar um serviço LoadBalancer, tem de saber o VIP que quer expor através do balanceador de carga, a porta na qual o quer expor e o NodePort que o serviço LoadBalancer no Kubernetes está a usar.

Depois de implementar um serviço LoadBalancer no cluster, determine o NodePort usado para o serviço LoadBalancer. O comando seguinte mostra as portas do serviço:

kubectl --kubeconfig KUBECONFIG get service SERVICE_NAME -oyaml

Substitua o seguinte:

  • KUBECONFIG com o caminho do ficheiro kubeconfig a usar.
  • SERVICE_NAME com o nome do serviço LoadBalancer.

A saída de kubctl get service inclui uma secção ports. Cada entrada de porta mostra a nodePort exposta para a porta no serviço, e esta nodePort é o que configura o back-end do equilibrador de carga para apontar. O exemplo de saída seguinte mostra a estrutura da secção ports:

spec:
  clusterIP: 172.26.232.107
  externalTrafficPolicy: Cluster
  loadBalancerIP: 21.0.101.77
  ports:
  - name: status-port
    nodePort: 30281
    port: 15021
    protocol: TCP
    targetPort: 15021
  - name: http
    nodePort: 30124
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    nodePort: 31858
    port: 443
    protocol: TCP
    targetPort: 443

Existem portas para tráfego HTTP e HTTPS. Pode expor uma ou ambas estas portas através do seu equilibrador de carga.

Se estiver a expor o serviço de entrada que é implementado automaticamente em todos os clusters, o serviço LoadBalancer é denominado istio-ingress e encontra-se no espaço de nomes gke-system. Encontre as respetivas portas com este comando:

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

O serviço de entrada está configurado com um loadBalancerIP, que é o IP fornecido no campo loadBalancer.vips.ingressVIP na configuração inicial do cluster. Deve expor este VIP para expor o serviço de entrada no balanceador de carga externo.

Crie um conjunto de back-ends

  1. Aceda a Tráfego local > Pools > Lista de pools.
  2. Clique em Criar.
  3. Introduza um nome para o conjunto.
  4. Selecione tcp como monitor de estado.
  5. Adicione nós de trabalho ao conjunto de nós. Repita estes passos para cada nó. Pode adicionar painéis de controlo e nós de trabalho, uma vez que os NodePorts do Kubernetes são acessíveis em qualquer nó no cluster.
    1. Na secção Novos membros, clique em Lista de nós e, de seguida, selecione um dos nós criados anteriormente.
    2. No campo Porta de serviço, introduza o valor NodePort para o serviço.
    3. Clique em Adicionar.

Crie um servidor virtual

  1. Aceda a Local Traffic > Virtual Servers > Virtual Server List.
  2. Clique em Criar.
  3. Introduza um nome para o servidor virtual.
  4. Defina Tipo como Padrão.
  5. Introduza 0.0.0.0/0 no campo Endereço de origem para permitir tráfego de qualquer origem.
  6. Introduza o VIP do serviço de balanceador de carga como o endereço de destino.
  7. Introduza a porta que está a ser exposta para o serviço de balanceador de carga como a Porta de serviço.
  8. No campo Tradução de endereço de origem, selecione Mapeamento automático.
  9. Em Conjunto predefinido, selecione o conjunto criado anteriormente no menu pendente.
  10. Clique em Concluído.