Freigeben über


Erstellen eines MetalLB-Lastenausgleichsmoduls mit Azure Arc und Azure CLI

Gilt für: Azure Stack HCI, Version 23H2

Der Hauptzweck eines Lastenausgleichs ist die Verteilung des Datenverkehrs über mehrere Knoten in einem Kubernetes-Cluster. Dies kann dazu beitragen, Ausfallzeiten zu vermeiden und die Gesamtleistung von Anwendungen zu verbessern. Von Azure Arc aktivierte AKS unterstützt das Erstellen einer MetalLB-Lastenausgleichsinstanz auf Ihrem Kubernetes-Cluster mithilfe der Arc Kubernetes Runtime k8s-Erweiterung.

Voraussetzungen

  • Ein Azure Arc-aktivierter Kubernetes-Cluster mit mindestens einem Linux-Knoten. Sie können einen Kubernetes-Cluster auf Azure Stack HCI 23H2 mithilfe der Azure CLI oder des Azure-Portal erstellen. AKS auf Azure Stack HCI 23H2-Clustern sind standardmäßig Arc aktiviert.
  • Stellen Sie sicher, dass Sie über genügend IP-Adressen für das Lastenausgleichsmodul verfügen. Stellen Sie für AKS auf Azure Stack HCI 23H2 sicher, dass die für das Lastenausgleichsmodul reservierten IP-Adressen nicht mit den IP-Adressen in logischen Arc-Netzwerken und Steuerebenen-IPs in Konflikt geraten. Weitere Informationen zur IP-Adressplanung und -vernetzung in Kubernetes finden Sie unter Netzwerkanforderungen für AKS auf Azure Stack HCI 23H2.
  • In diesem Anleitungshandbuch wird davon ausgegangen, dass Sie verstehen, wie Metal LB funktioniert. Weitere Informationen finden Sie in der Übersicht für MetalLB in Arc Kubernetes-Clustern.

Installieren der Azure CLI-Erweiterung

Führen Sie den folgenden Befehl aus, um die erforderliche Azure CLI-Erweiterung zu installieren:

az extension add -n k8s-runtime --upgrade

MetalLB Arc Erweiterung aktivieren

Konfigurieren Sie die folgenden Variablen, bevor Sie fortfahren:

Parameter Beschreibung
$subId Azure-Abonnement-ID Ihres Kubernetes-Clusters.
$rgName Azure-Ressourcengruppe Ihres Kubernetes-Clusters.
$clusterName Der Name Ihres Kubernetes-Clusters.

Option 1: Aktivieren der MetalLB Arc-Erweiterung mithilfe des az k8s-runtime load-balancer enable Befehls

Um die MetalLB Arc-Erweiterung mit dem folgenden Befehl zu aktivieren, benötigen Sie die Graph-Berechtigung Application.Read.All. Sie können überprüfen, ob Sie über diese Berechtigung verfügen, indem Sie sich bei Ihrem Azure-Abonnement anmelden und den folgenden Befehl ausführen:

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

Wenn der Befehl fehlschlägt, wenden Sie sich an Ihren Azure-Mandantenadministrator, um die Rolle zu erhalten Application.Read.All .

Wenn Sie über die Berechtigung verfügen, können Sie den az k8s-runtime load-balancer enable Befehl verwenden, um die Arc-Erweiterung zu installieren und den Ressourcenanbieter für Ihren Kubernetes-Cluster zu registrieren. Der --resource-uri Parameter bezieht sich auf die Ressourcen-Manager-ID Ihres Kubernetes-Clusters.

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

Option 2: Enable MetalLB Arc Kubernetes extension using az k8s-extension add command

Wenn Sie nicht über die Graph-Berechtigung "Application.Read.All" verfügen, können Sie die folgenden Schritte ausführen:

  1. Registrieren Sie dies Microsoft.KubernetesRuntime RP , wenn Sie dies noch nicht getan haben. Beachten Sie, dass Sie sich nur einmal pro Azure-Abonnement registrieren müssen. Sie können Ressourcenanbieter auch mithilfe des Azure-Portal registrieren. Weitere Informationen zum Registrieren von Ressourcenanbietern und erforderlichen Berechtigungen finden Sie unter Registrieren eines Ressourcenanbieters.
az provider register -n Microsoft.KubernetesRuntime

Sie können überprüfen, ob der Ressourcenanbieter erfolgreich registriert wurde, indem Sie den folgenden Befehl ausführen.

az provider show -n Microsoft.KubernetesRuntime -o table

Erwartete Ausgabe:

Namespace                    RegistrationPolicy    RegistrationState
---------------------------  --------------------  -------------------
Microsoft.KubernetesRuntime  RegistrationRequired  Registered
  1. Um die MetalLB Arc-Erweiterung zu installieren, rufen Sie die AppID des MetalLB-Erweiterungsressourcenanbieters ab, und führen Sie dann den Befehl zum Erstellen der Erweiterung aus. Sie müssen die folgenden Befehle einmal pro Arc Kubernetes-Cluster ausführen.

Rufen Sie die Anwendungs-ID der Arc-Erweiterung ab, indem Sie az ad sp list ausführen. Um den folgenden Befehl auszuführen, müssen Sie Mitglied user Ihres Azure-Mandanten sein. Weitere Informationen zur Benutzer- und Gastmitgliedschaft finden Sie unter Standardbenutzerberechtigungen in der Microsoft Entra-ID.

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

Sobald Sie die $objID haben, können Sie die MetalLB Arc-Erweiterung auf Ihrem Kubernetes-Cluster installieren. Um den folgenden Befehl auszuführen, müssen Sie über die Rolle "Kubernetes-Erweiterungsmitwirkender" verfügen.

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

Bereitstellen des MetalLB-Lastenausgleichs auf Ihrem Kubernetes-Cluster

Sie können jetzt einen Lastenausgleich für Ihren Kubernetes-Cluster remote erstellen, indem Sie den az k8s-runtime load-balancer create Befehl ausführen. Mit diesem Befehl wird eine benutzerdefinierte Ressource vom Typ IPAddressPool im Namespace kube-systemerstellt.

Konfigurieren Sie die folgenden Variablen, bevor Sie fortfahren:

Parameter Beschreibung
$lbName Der Name der MetalLB-Lastenausgleichsinstanz.
$advertiseMode Der Modus für ihr MetalLB-Lastenausgleichsmodul. Unterstützte Werte sind ARP, oder BGPBoth.
$ipRange Der IP-Bereich für den MetalLB-Lastenausgleich im ARP oder Both Modus.

Wenn der Werbemodus ist BGP oder Both, erstellt er auch eine benutzerdefinierte Ressource der Art BGPAdvertisement. Wenn der Werbemodus vorhanden ist ARP oder Both, erstellt er auch eine benutzerdefinierte Ressource vom Typ 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

Erstellen eines BGP-Peers für Ihren Kubernetes-Cluster

Erstellen Sie einen BGP-Peer für Ihren Kubernetes-Cluster remote, indem Sie den az k8s-runtime bgp-peer create Befehl ausführen. Beachten Sie, dass der BGP-Peer für alle Lastenausgleichsgeräte wirksam ist, die über einen Modus verfügen BGP oder Both den Modus ankündigen. Das Erstellen von BGP-Peers ist obligatorisch, wenn Sie das MetalLB-Lastenausgleichsmodul im BGP oder Both Modus verwenden.

Konfigurieren Sie die folgenden Variablen, bevor Sie fortfahren:

Parameter Beschreibung
$peerName Der Name Ihres BGP-Peers.
$myASN AS-Nummer, die für das lokale Ende der Sitzung verwendet werden soll.
$peerASN AS-Nummer, die vom Remoteende der Sitzung erwartet wird.
$peerIP Adresse, die beim Einrichten der Sitzung gewählt werden soll.
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ächste Schritte