Dela via


Skapa en MetalLB-lastbalanserare med hjälp av Azure Arc och Azure CLI

Gäller för: Azure Stack HCI, version 23H2

Huvudsyftet med en lastbalanserare är att distribuera trafik över flera noder i ett Kubernetes-kluster. Detta kan bidra till att förhindra stilleståndstid och förbättra programmets övergripande prestanda. AKS som aktiveras av Azure Arc har stöd för att skapa en Instans av MetalLB-lastbalanserare i ditt Kubernetes-kluster med hjälp av Arc Kubernetes Runtime k8s-tillägget.

Förutsättningar

  • Ett Azure Arc-aktiverat Kubernetes-kluster med minst en Linux-nod. Du kan skapa ett Kubernetes-kluster på Azure Stack HCI 23H2 med hjälp av Azure CLI eller Azure-portalen. AKS på Azure Stack HCI 23H2-kluster är Arc-aktiverade som standard.
  • Kontrollera att du har tillräckligt med IP-adresser för lastbalanseraren. För AKS på Azure Stack HCI 23H2 kontrollerar du att IP-adresserna som är reserverade för lastbalanseraren inte står i konflikt med IP-adresserna i logiska arc-VM-nätverk och kontrollplans-IP-adresser. Mer information om planering och nätverk av IP-adresser i Kubernetes finns i Nätverkskrav för AKS på Azure Stack HCI 23H2.
  • Den här guiden förutsätter att du förstår hur Metal LB fungerar. Mer information finns i översikten för MetalLB i Arc Kubernetes-kluster.

Installera Azure CLI-tillägget

Kör följande kommando för att installera det nödvändiga Azure CLI-tillägget:

az extension add -n k8s-runtime --upgrade

Aktivera MetalLB Arc-tillägg

Konfigurera följande variabler innan du fortsätter:

Parameter Description
$subId Azure-prenumerations-ID för ditt Kubernetes-kluster.
$rgName Azure-resursgrupp för ditt Kubernetes-kluster.
$clusterName Namnet på ditt Kubernetes-kluster.

Alternativ 1: Aktivera MetalLB Arc-tillägget med kommandot az k8s-runtime load-balancer enable

Om du vill aktivera MetalLB Arc-tillägget med hjälp av följande kommando måste du ha Graph-behörigheten Application.Read.All. Du kan kontrollera om du har den här behörigheten genom att logga in på din Azure-prenumeration och köra följande kommando:

`az ad sp list --filter "appId eq '087fca6e-4606-4d41-b3f6-5ebdf75b8b4c'" --output json`

Om kommandot misslyckas kontaktar du azure-klientadministratören för att hämta Application.Read.All rollen.

Om du har behörigheten az k8s-runtime load-balancer enable kan du använda kommandot för att installera Arc-tillägget och registrera resursprovidern för kubernetes-klustret. Parametern --resource-uri refererar till resource manager-ID:t för ditt Kubernetes-kluster.

az k8s-runtime load-balancer enable --resource-uri subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Kubernetes/connectedClusters/$clusterName

Alternativ 2: Aktivera MetalLB Arc Kubernetes-tillägget med kommandot az k8s-extension add

Om du inte har Graph-behörigheten Application.Read.All kan du följa dessa steg:

  1. Microsoft.KubernetesRuntime RP Registrera om du inte redan har gjort det. Observera att du bara behöver registrera dig en gång per Azure-prenumeration. Du kan också registrera resursprovidrar med hjälp av Azure-portalen. Mer information om hur du registrerar resursprovidrar och nödvändiga behörigheter finns i registrera en resursprovider.
az provider register -n Microsoft.KubernetesRuntime

Du kan kontrollera om resursprovidern har registrerats genom att köra följande kommando.

az provider show -n Microsoft.KubernetesRuntime -o table

Förväntad utdata:

Namespace                    RegistrationPolicy    RegistrationState
---------------------------  --------------------  -------------------
Microsoft.KubernetesRuntime  RegistrationRequired  Registered
  1. Om du vill installera MetalLB Arc-tillägget hämtar du AppID för MetalLB-tilläggsresursprovidern och kör sedan kommandot för att skapa tillägget. Du måste köra följande kommandon en gång per Arc Kubernetes-kluster.

Hämta program-ID:t för Arc-tillägget genom att köra az ad sp-listan. För att kunna köra följande kommando måste du vara user medlem i din Azure-klientorganisation. Mer information om användar- och gästmedlemskap finns i standardanvändarbehörigheter i Microsoft Entra-ID.

$objID = az ad sp list --filter "appId eq '087fca6e-4606-4d41-b3f6-5ebdf75b8b4c'" --query "[].id" --output tsv

När du har $objID kan du installera MetalLB Arc-tillägget i Kubernetes-klustret. Om du vill köra kommandot nedan måste du ha rollen Kubernetes-tilläggsdeltagare.

az k8s-extension create --cluster-name $clusterName -g $rgName --cluster-type connectedClusters --extension-type microsoft.arcnetworking --config k8sRuntimeFpaObjectId=$objID -n arcnetworking

Distribuera MetalLB-lastbalanserare i ditt Kubernetes-kluster

Nu kan du skapa en lastbalanserare för kubernetes-klustret via fjärranslutning genom att az k8s-runtime load-balancer create köra kommandot . Det här kommandot skapar en anpassad resurs av typen IPAddressPool i namnområdet kube-system.

Konfigurera följande variabler innan du fortsätter:

Parameter Description
$lbName Namnet på din MetalLB-lastbalanserareinstans.
$advertiseMode Läget för din MetalLB-lastbalanserare. Värden som stöds är ARP, BGPeller Both.
$ipRange IP-intervallet för MetalLB-lastbalanseraren i ARP eller Both läge.

Om annonseringsläget är BGP eller Bothskapar det också en anpassad resurs av typen BGPAdvertisement. Om annonseringsläget är ARP eller Bothskapar det också en anpassad resurs av typen 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

Skapa en BGP-peer för ditt Kubernetes-kluster

Skapa en BGP-peer för kubernetes-klustret via fjärranslutning genom att az k8s-runtime bgp-peer create köra kommandot . Observera att BGP-peer är effektiv för alla lastbalanserare som har BGP eller Both annonserar läge. Det är obligatoriskt att skapa BGP-peer-datorer om du använder MetalLB-lastbalanseraren i BGP eller Both läge.

Konfigurera följande variabler innan du fortsätter:

Parameter Description
$peerName Namnet på din BGP-peer.
$myASN AS-nummer som ska användas för den lokala slutet av sessionen.
$peerASN AS-nummer att förvänta sig från den fjärranslutna sessionen.
$peerIP Adress till uppringning när sessionen upprättas.
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

Nästa steg