Um Kubernetes Load Balancer distribui automaticamente o tráfego de rede entre vários pods para garantir uma carga uniforme e alta disponibilidade. Ele é geralmente implementado por meio de um serviço do tipo “LoadBalancer”, que direciona solicitações externas para os serviços internos. Dessa forma, as aplicações podem ser tornadas acessíveis de maneira confiável e escalável.

Managed Kubernetes da IONOS
O jeito mais simples de gerenciar cargas de trabalho em contêineres.

Instalação de clusters Kubernetes totalmente automatizada, visibilidade máxima e controle de clusters K8s.

O que é um Kubernetes Load Balancer?

Os Load Balancers no Kubernetes são usados para dividir a carga de servidores ou máquinas virtuais de forma eficiente. Dessa forma, a performance total pode ser aumentada. Normalmente, o Load Balancer é colocado na frente dos servidores para evitar a sobrecarga de servidores individuais e garantir o uso ideal dos recursos disponíveis. Mesmo quando ocorrem falhas nos servidores, o load balancing garante um sistema funcional, redirecionando as solicitações de maneira direcionada.

Um pouco diferente, mas com o mesmo conceito de base, funcionam os Kubernetes Load Balancers. No Kubernetes, é necessário distinguir entre dois tipos diferentes de Load Balancer:

  • Kubernetes Load Balancer interno
  • Kubernetes Load Balancer externo

Kubernetes Load Balancer interno

Os Kubernetes Load Balancers internos adotam uma abordagem diferente dos Load Balancers clássicos, sendo mencionados aqui para completar. Eles garantem que apenas aplicativos executados na mesma rede virtual que seu Kubernetes Cluster possam acessar essa rede.

Kubernetes Load Balancer externo

Os Load Balancers externos atribuem a um nó de serviço de um cluster Kubernetes um endereço IP ou um nome de DNS próprio, permitindo que receba requisições HTTP externas. Com “LoadBalancer”, existe um tipo especial de serviço Kubernetes para isso. Este serviço destina-se a direcionar o tráfego externo para os pods individuais do Kubernetes, garantindo assim uma distribuição otimizada das solicitações recebidas.

Nota

Existem várias maneiras ou algoritmos para configurar o load balancing no Kubernetes. A escolha depende inteiramente de suas necessidades individuais. Os diferentes algoritmos determinam principalmente o princípio segundo o qual o Load Balancer processa o tráfego de entrada.

Como funciona um Load Balancer?

No Kubernetes, um Load Balancer assume a tarefa central de distribuir o tráfego de rede de forma eficiente entre várias instâncias de um serviço, ou seja, os pods. O objetivo é garantir uma carga uniforme, aumentar a disponibilidade e compensar falhas de componentes individuais.

Tecnicamente, o Load Balancer recebe as requisições de entrada e verifica quais pods estão disponíveis e com bom desempenho no momento. Para isso, o Kubernetes utiliza um monitoramento interno contínuo: pods que estejam com erros ou sobrecarregados são automaticamente excluídos do roteamento. O Load Balancer então decide dinamicamente a qual Pod cada solicitação será encaminhada.

Essa distribuição ocorre com base em diversos critérios. Os usuários não percebem isso. O aplicativo permanece acessível e com bom desempenho, mesmo que, em segundo plano, alguns pods sejam iniciados, redirecionados ou falhem.

Imagem: Visão geral do funcionamento do Kubernetes Load Balancer
O Load Balancer distribui o tráfego externo para os Pods de um serviço no cluster Kubernetes, representados em amarelo.

Para que serve um Kubernetes Load Balancer?

Um Kubernetes Load Balancer define um serviço em execução no cluster, acessível pela internet. Para entender isso, é útil examinar a arquitetura do Kubernetes. Um cluster abrange vários nodes, que por sua vez contêm vários pods. Cada pod do cluster recebe um IP interno que não pode ser acessado de fora do cluster.

Disponibilizar software com IP fixo

Para utilizar o software em execução nos pods sob um endereço IP dedicado, geralmente é necessário um serviço Kubernetes. Além de “LoadBalancer”, existem outros tipos de serviço adequados para diferentes cenários. Todos os tipos de serviço têm em comum o agrupamento de um conjunto de pods em uma unidade lógica, descrevendo como acessá-los.

Distribuição ideal do tráfego externo

Um Kubernetes Load Balancer deve garantir a distribuição ideal do tráfego externo para os Pods em seu cluster Kubernetes. Por isso, os serviços são adequados para praticamente qualquer finalidade. Devido ao fato de que Kubernetes Load Balancer pode direcionar o tráfego para Pods específicos, uma alta disponibilidade de seu cluster é assegurada: assim que um pod não está operando ou apresenta erros, o Load Balancer distribui as tarefas para os outros pods.

Otimizar escalabilidade

A escalabilidade também é positivamente influenciada pelo uso de Load Balancing. O Kubernetes pode criar ou excluir pods automaticamente conforme a necessidade. Portanto, se for identificado que o tráfego de entrada requer mais ou menos recursos do que os atualmente disponíveis, o Kubernetes pode reagir automaticamente a essa situação.

Como criar um Load Balancer para Kubernetes

Para criar um Kubernetes Load Balancer, é necessário que seu cluster esteja rodando em uma nuvem ou em um ambiente que suporte a configuração de carregadores de carga externos.

Na IONOS, um node no cluster recebe um IP estático ao se criar um Kubernetes Load Balancer. Esse IP permite acessar o serviço de fora do cluster. O Kube-Proxy, que está em execução no node, distribui inteligentemente o tráfego de entrada entre os pods individuais.

Primeiro, você cria um serviço e, em seguida, atribui ao tipo de serviço “LoadBalancer” com a seguinte linha no manifesto do serviço:

type: LoadBalancer

Por exemplo, a configuração de um Kubernetes Load Balancer pode ser assim: o serviço agrupa pods sob o seletor “web-app”. O tráfego de entrada na IP do Load Balancer na porta 8080 é distribuído pelos pods individuais. Isso aciona o serviço em execução em cada pod na porta 80:

apiVersion: v1
kind: Service
metadata:
    name: web-app-service
spec:
    selector:
        app: web-app
    type: LoadBalancer
    loadBalancerIP: 203.0.113.0
    ports:
        - name: http
            port: 8080
            targetPort: 80
            protocol: TCP
yaml

Outra maneira de criar um Kubernetes Load Balancer é por meio da linha de comando kubectl.

Com o comando

kubectl expose deployment test --target-port=9376 \
    --name=test-service --type=LoadBalancer
bash

crie e implante um novo serviço chamado “test-service”, que atua como um Load Balancer.

Se você deseja descobrir o endereço IP do serviço que acabou de criar, o seguinte comando pode ajudar:

kubectl describe services test-service
bash
Este artigo foi útil?
Ir para o menu principal