Delen via


Extensie implementeren voor MetalLB voor Kubernetes-clusters met Azure Arc met behulp van Azure CLI

Van toepassing op: AKS in Azure Local

Het belangrijkste doel van een load balancer is het distribueren van verkeer over meerdere knooppunten in een Kubernetes-cluster. Dit kan helpen bij het voorkomen van downtime en het verbeteren van de algehele prestaties van toepassingen. AKS die is ingeschakeld door Azure Arc ondersteunt het maken van een MetalLB load balancer-exemplaar in uw Kubernetes-cluster met behulp van een Arc-extensie.

Vereisten

De Azure CLI-extensie installeren

Voer de volgende opdracht uit om de benodigde Azure CLI-extensie te installeren:

az extension add -n k8s-runtime --upgrade

Arc-extensie inschakelen voor MetalLB

Configureer de volgende variabelen voordat u doorgaat:

Kenmerk Beschrijving
$subId Azure-abonnements-id van uw Kubernetes-cluster.
$rgName Azure-resourcegroep van uw Kubernetes-cluster.
$clusterName De naam van uw Kubernetes-cluster.

Optie 1: Arc-extensie inschakelen voor MetalLB met az k8s-runtime load-balancer enable

Als u de Arc-extensie voor MetalLB wilt inschakelen met behulp van de volgende opdracht, moet u de Graph-machtiging Application.Read.All hebben. U kunt controleren of u deze machtiging hebt door u aan te melden bij uw Azure-abonnement en de volgende opdracht uit te voeren:

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

Als de opdracht mislukt, neemt u contact op met uw Azure-tenantbeheerder om de rol Application.Read.All te verkrijgen.

Als u de machtiging hebt, kunt u de az k8s-runtime load-balancer enable opdracht gebruiken om de Arc-extensie te installeren en de resourceprovider voor uw Kubernetes-cluster te registreren. De --resource-uri parameter verwijst naar de Resource Manager-id van uw Kubernetes-cluster:

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

Optie 2: Arc-extensie inschakelen voor MetalLB met az k8s-extension add

Als u geen Graph-machtiging Application.Read.All hebt, kunt u de volgende stappen uitvoeren:

  1. Registreer de Microsoft.KubernetesRuntime RP optie als u dit nog niet hebt gedaan. Houd er rekening mee dat u zich slechts één keer hoeft te registreren per Azure-abonnement. U kunt ook resourceproviders registreren met behulp van Azure Portal. Zie voor meer informatie over het registreren van resourceproviders en vereiste machtigingen hoe u een resourceprovider registreert.

    az provider register -n Microsoft.KubernetesRuntime
    

    U kunt controleren of de resourceprovider is geregistreerd door de volgende opdracht uit te voeren.

    az provider show -n Microsoft.KubernetesRuntime -o table
    

    Verwachte uitvoer:

    Namespace                    RegistrationPolicy    RegistrationState
    ---------------------------  --------------------  -------------------
    Microsoft.KubernetesRuntime  RegistrationRequired  Registered
    
  2. Als u de Arc-extensie voor MetalLB wilt installeren, haalt u de AppID van de MetalLB-extensieresourceprovider op en voert u vervolgens de opdracht extensie maken uit. U moet de volgende opdrachten eenmaal per Arc Kubernetes-cluster uitvoeren.

    Haal de toepassings-id van de Arc-extensie op door az ad sp list uit te voeren. Als u de volgende opdracht wilt uitvoeren, moet u lid zijn user van uw Azure-tenant. Zie de standaardgebruikersmachtigingen in Microsoft Entra-id voor meer informatie over gebruikers- en gastlidmaatschap.

    $objID = az ad sp list --filter "appId eq '00001111-aaaa-2222-bbbb-3333cccc4444'" --query "[].id" --output tsv
    

    Zodra u de objIDMetalLB Arc-extensie hebt, kunt u deze installeren op uw Kubernetes-cluster. Als u de volgende opdracht wilt uitvoeren, moet u de rol Inzender voor Kubernetes-extensies hebben.

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

MetalLB-load balancer implementeren in uw Kubernetes-cluster

U kunt nu een load balancer voor uw Kubernetes-cluster op afstand maken door de az k8s-runtime load-balancer create opdracht uit te voeren. Met deze opdracht maakt u een aangepaste resource van het type IPAddressPool in de naamruimte kube-system.

Configureer de volgende variabelen voordat u doorgaat:

Kenmerk Beschrijving
$lbName De naam van uw MetalLB load balancer-exemplaar.
$advertiseMode De modus voor uw MetalLB load balancer. Ondersteunde waarden zijn ARP, BGPof Both.
$ipRange Het IP-bereik voor de MetalLB load balancer in modus ARP of Both.

Als de advertentiemodus is BGP of Both, wordt er ook een aangepaste resource van soort BGPAdvertisementgemaakt. Als de advertentiemodus is ARP of Both, wordt er ook een aangepaste resource van het type L2Advertisementgemaakt:

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

Een BGP-peer maken voor uw Kubernetes-cluster

Maak een BGP-peer voor uw Kubernetes-cluster op afstand door de opdracht uit te az k8s-runtime bgp-peer create voeren. Houd er rekening mee dat de BGP-peer werkt voor alle load balancers die in de modus BGP of Both adverteren zijn. Het maken van BGP-peers is verplicht als u de MetalLB-load balancer in BGP- of Both-modus gebruikt.

Configureer de volgende variabelen voordat u doorgaat:

Kenmerk Beschrijving
$peerName De naam van uw BGP-peer.
$myASN AS-nummer dat moet worden gebruikt voor het lokale einde van de sessie.
$peerASN AS-nummer dat moet worden verwacht van de externe kant van de sessie.
$peerIP Nummer om te bellen bij het starten van de sessie.
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

Volgende stappen

GitOps Flux v2 Arc-extensie gebruiken om toepassingen in uw Kubernetes-cluster te implementeren