Partilhar via


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

O Azure Load Balancer opera na camada 4 do modelo OSI (Open Systems Interconnection) que suporta cenários de entrada e saída. Ele distribui fluxos de entrada que chegam ao front-end do balanceador de carga para as instâncias do pool de back-ends.

Um balanceador de carga público integrado ao AKS serve a dois propósitos:

  • Forneça conexões de saída para os nós do cluster dentro da rede virtual AKS (VNet) convertendo o endereço IP privado para um endereço IP público que faz parte de seu pool de saída.
  • Forneça acesso a aplicativos por meio de serviços Kubernetes do tipo LoadBalancer, 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 integração do balanceador de carga interno, consulte Usar um balanceador de carga interno no AKS.

Pré-requisitos

  • O Azure Load Balancer está disponível em duas SKUs: Basic e Standard. A SKU padrão é usada por padrão quando você cria um cluster AKS. O SKU padrão oferece acesso a funcionalidades adicionais, como um pool de back-end maior, pools de vários nós, zonas de disponibilidade e é seguro por padrão. É o SKU do balanceador de carga recomendado para AKS. Para obter mais informações sobre as SKUs Básica e Padrão, consulte Comparação de SKU do Balanceador de Carga do Azure.
  • Para obter uma lista completa das anotações suportadas para serviços Kubernetes com tipo LoadBalancer, consulte Anotações LoadBalancer.
  • Este artigo pressupõe que você tenha um cluster AKS com o Balanceador de Carga do Azure SKU Padrão . Se precisar de um cluster AKS, você pode criar um usando a CLI do Azure, o Azure PowerShell ou o portal do Azure.

Important

Se preferir usar seu próprio gateway, firewall ou proxy para fornecer conexão de saída, ignore a criação do pool de saída do balanceador de carga e respetivo 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 assume como padrão o tipo LoadBalancer.

Limitations

As limitações a seguir se aplicam quando você cria e gerencia clusters AKS que suportam um balanceador de carga com a SKU padrão :

  • 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 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.

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

    • Disponibilizar os seus próprios IPs públicos.
    • Disponibilizar os seus próprios prefixos de IPs públicos.
    • Especifique um número até 100 para permitir que o cluster AKS crie muitos IPs públicos de SKU padrão no mesmo grupo de recursos que o cluster AKS. Este grupo de recursos é geralmente nomeado com MC_ no início. O AKS atribui o IP público ao balanceador de carga SKU padrão . Por padrão, um IP público é criado automaticamente no mesmo grupo de recursos que o cluster AKS se nenhum IP público, prefixo IP público ou número de IPs for especificado. Também tem de permitir endereços públicos e evitar criar políticas do Azure que proíbam a criação de IPs.
  • Um IP público criado pelo AKS não pode ser reutilizado como um endereço IP público personalizado (BYO). Você deve criar e gerenciar todos os endereços IP personalizados.

  • Você só pode definir o SKU do balanceador de carga quando cria um cluster AKS. Não pode alterar o SKU do balanceador de carga depois de ter sido criado um cluster do AKS.

  • Você só pode usar um tipo de balanceador de carga SKU (Basic ou Standard) em um único cluster.

  • Os balanceadores de carga SKU padrão suportam apenas endereços IP SKU padrão .

  • O Serviço de Link Privado não é suportado quando o tipo de pool de back-end do balanceador de carga está definido como nodeIP.

Criar um serviço de balanceador de carga no AKS

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

  • Crie um manifesto de 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
    

Especifique o endereço IP do balanceador de carga

Se você quiser usar um endereço IP específico com o balanceador de carga, você tem 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. Este campo está sendo preterido seguindo o Kubernetes upstream e não pode suportar pilha dupla. O uso atual permanece o mesmo e espera-se que os serviços existentes funcionem sem modificações.

Implantar o manifesto de serviço do balanceador de carga

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

    kubectl apply -f public-svc.yaml
    

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

  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ê visualiza 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. O exemplo de saída 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 o seu serviço usando o kubectl describe service comando.

    kubectl describe service public-svc
    

    O exemplo de saída a seguir é uma versão condensada da saída depois de executar kubectl describe serviceo . LoadBalancer Ingress mostra o endereço IP externo exposto pelo seu serviç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óximo passo