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:
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
- 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 , BGP eller Both . |
$ipRange |
IP-intervallet för MetalLB-lastbalanseraren i ARP eller Both läge. |
Om annonseringsläget är BGP
eller Both
skapar det också en anpassad resurs av typen BGPAdvertisement
. Om annonseringsläget är ARP
eller Both
skapar 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