Criar um balanceador de carga do MetalLB usando o Azure Arc e a CLI do Azure
Aplica-se a: Azure Stack HCI, versão 23H2
A principal finalidade de um balanceador de carga é distribuir o tráfego entre vários nós em um cluster do Kubernetes. Isso pode ajudar a evitar o tempo de inatividade e melhorar o desempenho geral dos aplicativos. O AKS habilitado pelo Azure Arc dá suporte à criação de uma instância do balanceador de carga do MetalLB no cluster do Kubernetes usando a Arc Kubernetes Runtime
extensão k8s.
Pré-requisitos
- Um cluster do Kubernetes habilitado para Azure Arc com pelo menos um nó do Linux. Você pode criar um cluster do Kubernetes no Azure Stack HCI 23H2 usando a CLI do Azure ou o portal do Azure. O AKS nos clusters do Azure Stack HCI 23H2 é habilitado para Arc por padrão.
- Verifique se você tem endereços IP suficientes para o balanceador de carga. Para o AKS no Azure Stack HCI 23H2, verifique se os endereços IP reservados para o balanceador de carga não entram em conflito com os endereços IP nas redes lógicas da VM do Arc e nos IPs do painel de controle. Para obter mais informações sobre o planejamento de endereços IP e a rede no Kubernetes, consulte Requisitos de rede para o AKS no Azure Stack HCI 23H2.
- Este guia de instruções pressupõe que você entenda como o Metal LB funciona. Para obter mais informações, consulte a visão geral do MetalLB em clusters do Arc Kubernetes.
Instale a extensão da CLI do Azure
Execute o seguinte comando para instalar a extensão necessária da CLI do Azure:
az extension add -n k8s-runtime --upgrade
Ativar extensão MetalLB Arc
Configure as seguintes variáveis antes de continuar:
Parâmetro | Descrição |
---|---|
$subId |
ID de assinatura do Azure do cluster do Kubernetes. |
$rgName |
Grupo de recursos do Azure do cluster do Kubernetes. |
$clusterName |
O nome do cluster do Kubernetes. |
Opção 1: Ativar a extensão MetalLB Arc usando o az k8s-runtime load-balancer enable
comando
Para habilitar a extensão MetalLB Arc usando o comando a seguir, você deve ter a permissão Graph Application.Read.All. Você pode verificar se tem essa permissão fazendo logon em sua assinatura do Azure e executando o seguinte comando:
`az ad sp list --filter "appId eq '087fca6e-4606-4d41-b3f6-5ebdf75b8b4c'" --output json`
Se o comando falhar, entre em contato com o administrador de locatários do Azure para obter Application.Read.All
a função.
Se você tiver a permissão, poderá usar o az k8s-runtime load-balancer enable
comando para instalar a extensão do Arc e registrar o provedor de recursos para o cluster do Kubernetes. O --resource-uri
parâmetro refere-se ao ID do gerenciador de recursos do cluster do Kubernetes.
az k8s-runtime load-balancer enable --resource-uri subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Kubernetes/connectedClusters/$clusterName
Opção 2: Habilitar a extensão MetalLB Arc Kubernetes usando o az k8s-extension add
comando
Se você não tiver a permissão do Graph Application.Read.All, siga estas etapas:
- Registre-se se
Microsoft.KubernetesRuntime RP
ainda não tiver feito isso. Observe que você só precisa se registrar uma vez por assinatura do Azure. Você também pode registrar provedores de recursos usando o portal do Azure. Para obter mais informações sobre como registrar provedores de recursos e permissões necessárias, consulte como registrar um provedor de recursos.
az provider register -n Microsoft.KubernetesRuntime
Você pode verificar se o provedor de recursos foi registrado com êxito executando o comando a seguir.
az provider show -n Microsoft.KubernetesRuntime -o table
Saída esperada:
Namespace RegistrationPolicy RegistrationState
--------------------------- -------------------- -------------------
Microsoft.KubernetesRuntime RegistrationRequired Registered
- Para instalar a extensão MetalLB Arc, obtenha o AppID do provedor de recursos de extensão MetalLB e execute o comando extension create. Você deve executar os comandos a seguir uma vez por cluster do Arc Kubernetes.
Obtenha a ID do aplicativo da extensão do Arc executando az ad sp list. Para executar o comando a seguir, você deve ser membro user
do seu locatário do Azure. Para obter mais informações sobre a associação de usuário e convidado, consulte permissões de usuário padrão na ID do Microsoft Entra.
$objID = az ad sp list --filter "appId eq '087fca6e-4606-4d41-b3f6-5ebdf75b8b4c'" --query "[].id" --output tsv
Depois de ter o $objID, você pode instalar a extensão MetalLB Arc em seu cluster do Kubernetes. Para executar o comando abaixo, você precisa ter a função de colaborador de extensão do Kubernetes.
az k8s-extension create --cluster-name $clusterName -g $rgName --cluster-type connectedClusters --extension-type microsoft.arcnetworking --config k8sRuntimeFpaObjectId=$objID -n arcnetworking
Implantar o balanceador de carga do MetalLB no cluster do Kubernetes
Agora você pode criar um balanceador de carga para o cluster do Kubernetes remotamente executando o az k8s-runtime load-balancer create
comando. Esse comando cria um recurso personalizado do tipo IPAddressPool
no namespace kube-system
.
Configure as seguintes variáveis antes de continuar:
Parâmetro | Descrição |
---|---|
$lbName |
O nome da instância do balanceador de carga do MetalLB. |
$advertiseMode |
O modo para o balanceador de carga do MetalLB. Os valores suportados são ARP , BGP , ou Both . |
$ipRange |
O intervalo de IP para o balanceador de carga do MetalLB no ARP modo ou Both . |
Se o modo de anúncio for BGP
ou Both
, ele também criará um recurso personalizado do tipo BGPAdvertisement
. Se o modo de anúncio for ARP
ou Both
, ele também criará um recurso personalizado do tipo L2Advertisement
:
az k8s-runtime load-balancer create --load-balancer-name $lbName --resource-uri subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Kubernetes/connectedClusters/$clusterName --addresses $ipRange --advertise-mode $advertiseMode
Criar um par BGP para o cluster do Kubernetes
Crie um par BGP para o cluster do Kubernetes remotamente executando o az k8s-runtime bgp-peer create
comando. Observe que o peer BGP é eficaz para todos os balanceadores de carga que têm BGP
ou Both
anunciam o modo. A criação de pares BGP é obrigatória se você estiver usando o balanceador de carga do MetalLB no BGP
modo ou Both
.
Configure as seguintes variáveis antes de continuar:
Parâmetro | Descrição |
---|---|
$peerName |
O nome do seu peer BGP. |
$myASN |
Número AS a ser usado para o final local da sessão. |
$peerASN |
AS a ser esperado do final remoto da sessão. |
$peerIP |
Endereço a ser discado ao estabelecer a sessão. |
az k8s-runtime bgp-peer create --bgp-peer-name $peerName --resource-uri subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Kubernetes/connectedClusters/$clusterName --my-asn $myASN --peer-asn $peerASN --peer-address $peerIP