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:
- 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
- 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 , BGP of 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 BGPAdvertisement
gemaakt. Als de advertentiemodus is ARP
of Both
, wordt er ook een aangepaste resource van het type L2Advertisement
gemaakt:
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