Delen via


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

Van toepassing op: Azure Local, versie 23H2

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 biedt ondersteuning voor het maken van een MetalLB load balancer-exemplaar in uw Kubernetes-cluster met behulp van een Arc-extensie.

Vereisten

  • Een Kubernetes-cluster met Azure Arc met ten minste één Linux-knooppunt. U kunt een Kubernetes-cluster maken in Azure Local, versie 23H2 met behulp van de Azure CLI of Azure Portal. AKS op Azure Local, versie 23H2-clusters zijn standaard ingeschakeld voor Arc.
  • Zorg ervoor dat u voldoende IP-adressen hebt voor de load balancer. Voor AKS op Azure Local, versie 23H2, moet u ervoor zorgen dat de IP-adressen die zijn gereserveerd voor de load balancer niet conflicteren met de IP-adressen in logische arc-VM-netwerken en IP-adressen van besturingsvlak. Zie Netwerkvereisten voor Kubernetes en IP-adresplanning voor Kubernetes voor meer informatie over ip-adresplanning en netwerken in Kubernetes.
  • In deze handleiding wordt ervan uitgegaan dat u begrijpt hoe Metal LB werkt. Zie het overzicht voor MetalLB voor Kubernetes voor meer informatie.

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:

Parameter Description
$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 behulp van az k8s-runtime load-balancer enable de opdracht

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 op te halen Application.Read.All .

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 behulp van az k8s-extension add de opdracht

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
  1. 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 $objID hebt, kunt u de MetalLB Arc-extensie installeren op uw Kubernetes-cluster. Als u de onderstaande 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:

Parameter Description
$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 ARP of Both modus.

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 effectief is voor alle load balancers die de modus hebben BGP of Both adverteren. Het maken van BGP-peers is verplicht als u de MetalLB-load balancer in of Both de BGP modus gebruikt.

Configureer de volgende variabelen voordat u doorgaat:

Parameter Description
$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 het externe einde van de sessie.
$peerIP Adres om te bellen bij het tot stand brengen 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