Compartilhar via


Usar um balanceador de carga padrão no AKS (Serviço de Kubernetes do Azure)

O Azure Load Balancer opera na camada 4 do modelo de referência OSI que dá suporte a cenários de entrada e de saída. Ele distribui fluxos de entrada que chegam ao front-end do balanceador de carga para as instâncias do pool de back-end.

Quando integrado ao AKS, um balanceador de carga público tem duas finalidades:

  • Forneça conexões de saída para os nós de cluster dentro da VNet (rede virtual) do AKS traduzindo o endereço IP privado para uma parte de endereço IP público de seu pool de saída.
  • Forneça acesso a aplicativos por meio dos serviços de tipo LoadBalancerdo Kubernetes, permitindo que você dimensione facilmente seus aplicativos e crie serviços altamente disponíveis.

Este artigo aborda a integração com um balanceador de carga público no AKS. Para saber mais sobre a integração do balanceador de carga interno, confira Usar um balanceador de carga interno no AKS.

Pré-requisitos

Important

Se você preferir usar seu próprio gateway, firewall ou proxy para fornecer conexão de saída, você pode ignorar a criação do pool de saída do balanceador de carga e o respectivo IP de front-end usando o tipo de saída como UserDefinedRouting (UDR). O tipo de saída define o método de saída para um cluster e usa o tipo LoadBalancer como padrão.

Limitations

As seguintes limitações se aplicam quando você cria e gerencia clusters do AKS que dão suporte a um balanceador de carga com o SKU Standard:

  • O AKS gerencia o ciclo de vida e as operações dos nós do agente. Não há suporte para a modificação dos recursos de IaaS associados aos nós do agente. Um exemplo de uma operação sem suporte é fazer alterações manuais no grupo de recursos do balanceador de carga.

  • Pelo menos um IP público ou prefixo de IP é necessário para permitir o tráfego de saída do cluster do AKS. O IP público ou o prefixo de IP é necessário para manter a conectividade entre o painel de controle e os nós do agente, bem como para manter a compatibilidade com as versões anteriores do AKS. Você tem as seguintes opções para especificar IPs públicos ou prefixos de IP ao usar um balanceador de carga SKU Standard:

    • Fornecer seus IPs públicos.
    • Forneça seus prefixos de IP público.
    • Especifique um número até 100 para permitir que o cluster do AKS crie esse tanto de IPs públicos de SKU Standard no mesmo grupo de recursos que o cluster do AKS. Esse grupo de recursos geralmente é nomeado com MC_ no início. O AKS atribui o IP público ao balanceador de carga de SKU Standard. Por padrão, um IP público é criado automaticamente no mesmo grupo de recursos que o cluster do AKS se nenhum IP público, prefixo de IP público ou número de IPs for especificado. Você também deve permitir endereços públicos e evitar a criação de qualquer política do Azure que cause banimento à criação do IP.
  • Um IP público criado pelo AKS não pode ser reutilizado como um endereço IP público BYO (traga o seu). Você deve criar e gerenciar todos os endereços IP personalizados.

  • Você só pode definir o SKU do balanceador de carga ao criar um cluster do AKS. Você não poderá alterar o SKU do balanceador de carga depois que um cluster do AKS for criado.

  • Você só pode usar um tipo de SKU do balanceador de carga (Básico ou Standard) em um cluster.

  • Os balanceadores de carga de SKU Standard dão suporte apenas a endereços IP de SKU Standard.

  • Não há suporte para o Serviço de Link Privado quando o tipo de pool de back-end do balanceador de carga é definido como nodeIP.

Criar um serviço de balanceador de carga no AKS

Depois que você criar um cluster do AKS com o tipo de saída LoadBalancer (padrão), seu cluster estará pronto para usar o balanceador de carga para expor serviços.

  • Crie um manifesto do serviço chamado public-svc.yaml, que cria um serviço público do tipo LoadBalancer.

    apiVersion: v1
    kind: Service
    metadata:
      name: public-svc
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: public-app
    

Especificar o endereço IP do balanceador de carga

Se você quiser usar um endereço IP específico com o balanceador de carga, terá duas opções para especificar o endereço IP:

  • Definir anotações de serviço (recomendado): use service.beta.kubernetes.io/azure-load-balancer-ipv4 para um endereço IPv4 e service.beta.kubernetes.io/azure-load-balancer-ipv6 para um endereço IPv6.
  • Adicione a propriedade LoadBalancerIP ao manifesto YAML do balanceador de carga: adicione a Service.Spec.LoadBalancerIP propriedade ao manifesto YAML do balanceador de carga. Esse campo está substituindo o upstream Kubernetes a seguir e não pode dar suporte a pilha dupla. O uso atual permanece o mesmo e espera-se que os serviços existentes funcionem sem modificação.

Implante o manifesto do serviço de balanceamento de carga

  1. Implante o manifesto do serviço público usando kubectl apply e especifique o nome do manifesto YAML.

    kubectl apply -f public-svc.yaml
    

    O Azure Load Balancer é configurado com um novo IP público que faz a frente do novo serviço. Como o Azure Load Balancer pode ter vários IPs de front-end, cada novo serviço implantado recebe um novo IP de front-end dedicado para ser acessado de forma exclusiva.

  2. Confirme se o serviço foi criado e se o balanceador de carga está configurado usando o kubectl get service comando.

    kubectl get service public-svc
    

    Quando você exibe os detalhes do serviço, o endereço IP público criado para esse serviço no balanceador de carga é mostrado na coluna EXTERNAL-IP da saída. Pode levar alguns minutos para que o endereço IP mude de <pendente> para um endereço IP público real. A saída de exemplo a seguir mostra a criação bem-sucedida do serviço:

    NAMESPACE     NAME          TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)         AGE
    default       public-svc    LoadBalancer   10.0.39.110    203.0.113.187   80:32068/TCP    52s
    
  3. Obtenha informações mais detalhadas sobre seu serviço usando o kubectl describe service comando.

    kubectl describe service public-svc
    

    A saída de exemplo a seguir é uma versão condensada da saída após a execução de kubectl describe service. A Entrada do Azure Load Balancer mostra o endereço IP externo exposto pelo serviço. O IP mostra os endereços internos.

    Name:                        public-svc
    Namespace:                   default
    Labels:                      <none>
    Annotations:                 <none>
    Selector:                    app=public-app
    ...
    IP:                          10.0.39.110
    ...
    LoadBalancer Ingress:        203.0.113.187
    ...
    TargetPort:                  80/TCP
    NodePort:                    32068/TCP
    ...
    Session Affinity:            None
    External Traffic Policy:     Cluster
    ...
    

Próxima etapa