Freigeben über


Bereitstellen der Erweiterung für MetalLB für Azure Arc-fähige Kubernetes-Cluster mit Azure CLI

Gilt für: AKS auf Azure Local

Der Hauptzweck eines Load Balancers besteht darin, den Datenverkehr über mehrere Knoten in einem Kubernetes-Cluster zu verteilen. Dies kann dazu beitragen, Ausfallzeiten zu vermeiden und die Gesamtleistung von Anwendungen zu verbessern. AKS, das von Azure Arc aktiviert wird, unterstützt die Erstellung einer MetalLB-Lastenausgleichsinstanz auf Ihrem Kubernetes-Cluster mithilfe einer Arc-Erweiterung.

Voraussetzungen

  • Ein Azure Arc-fähiger Kubernetes-Cluster mit mindestens einem Linux-Knoten. Sie können einen Kubernetes-Cluster auf Azure Local mit der Azure CLI oder dem Azure Portalerstellen. AKS auf lokalen Azure-Clustern sind standardmäßig arcfähig.
  • Stellen Sie sicher, dass Sie genügend IP-Adressen für den Load Balancer haben. Stellen Sie für AKS auf Azure Local sicher, dass die für den Load Balancer reservierten IP-Adressen nicht mit den IP-Adressen in den logischen Netzwerken der Arc-VMs und den IPs der Steuerebene in Konflikt geraten. Weitere Informationen zur Planung von IP-Adressen und Netzwerken in Kubernetes finden Sie unter Netzwerkanforderungen für Kubernetes und IP-Adressplanung für Kubernetes.
  • In dieser Anleitung wird davon ausgegangen, dass Sie verstehen, wie MetalLB funktioniert. Weitere Informationen finden Sie in der Übersicht zu MetalLB für Kubernetes.

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

Aktivieren der Arc-Erweiterung für MetalLB

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 Arc-Erweiterung für MetalLB mit az k8s-runtime load-balancer enable

Um die Arc-Erweiterung für MetalLB mithilfe des folgenden Befehls zu aktivieren, müssen Sie über die Graph permission Application.Read.All. Sie können überprüfen, ob Sie diese Berechtigung haben, 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-Tenant-Administrator, um die Application.Read.All role.

Wenn Sie die Erlaubnis dazu haben, können Sie die az k8s-runtime load-balancer enable 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: Aktivieren der Arc-Erweiterung für MetalLB mit az k8s-extension add

Wenn Sie nicht über die Graph permission Application.Read.Allverfügen, können Sie diese Schritte ausführen:

  1. Registrieren Sie die Microsoft.KubernetesRuntime RP , falls Sie dies nicht bereits getan haben. Beachten Sie, dass Sie sich nur einmal pro Azure-Abonnement registrieren müssen. Sie können Ressourcenanbieter auch über das Azure-Portal registrieren. Weitere Informationen über die Registrierung von Ressourcenanbietern und die erforderlichen Berechtigungen finden Sie unter Ressourcenanbieter registrieren.

    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
    
  2. Um die Arc-Erweiterung für MetalLB zu installieren, holen Sie sich die AppID des Ressourcenanbieters der MetalLB-Erweiterung und führen Sie anschließend den Befehl zum Erstellen der Erweiterung aus. Sie müssen die folgenden Befehle einmal pro Arc Kubernetes-Cluster ausführen.

    Ermitteln Sie die Anwendungs-ID der Arc-Erweiterung durch Ausführung von az ad sp list. Um den folgenden Befehl ausführen zu können, müssen Sie ein user Mitglied Ihres Azure-Tenants sein. Weitere Informationen zur Benutzer- und Gastmitgliedschaft finden Sie unter Standardbenutzerberechtigungen in Microsoft Entra ID.

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

    Sobald Sie die objIDhaben, können Sie die MetalLB Arc-Erweiterung auf Ihrem Kubernetes-Cluster installieren. Um den folgenden Befehl auszuführen, müssen Sie über die Rolle der Kubernetes-Erweiterungsmitwirkende verfügen.

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

Stellen Sie den MetalLB-Load-Balancer auf Ihrem Kubernetes-Cluster bereit

Wenn der Kernel anhält oder die Ergebnisse nicht wie erwartet sind, laden Sie die kqlmagic-Erweiterung erneut. az k8s-runtime load-balancer create command. Dieser Befehl erstellt eine benutzerdefinierte Ressource des Typs IPAddressPool im Namespace kube-system.

Konfigurieren Sie die folgenden Variablen, bevor Sie fortfahren:

Parameter Beschreibung
$lbName Der Name Ihrer MetalLB Load Balancer Instanz.
$advertiseMode Der Modus für Ihren MetalLB Load Balancer. Unterstützte Werte sind ARP, BGP, or Both.
$ipRange Der IP-Bereich für den MetalLB Load Balancer im Modus ARP or Both mode.

Wenn der Modus advertise BGP or Bothist, wird auch eine benutzerdefinierte Ressource der Art BGPAdvertisement. Wenn der Modus advertise ARP or Bothist, wird auch eine benutzerdefinierte Ressource des Typs 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 aus der Ferne einen BGP-Peer für Ihren Kubernetes-Cluster, indem Sie den Befehl az k8s-runtime bgp-peer create command. Beachten Sie, dass der BGP-Peer für alle Load Balancer effektiv ist, die den Modus BGP oder Both ankündigen. Das Erstellen von BGP-Peers ist obligatorisch, wenn Sie den MetalLB Load Balancer im Modus BGP oder Both 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 A Nummer des autonomen Systems, das vom entfernten Ende der Sitzung erwartet wird.
$peerIP E-Mail-Adresse, die beim Aufbau 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

Verwenden der GitOps Flux v2 Arc-Erweiterung zur Bereitstellung von Anwendungen in Ihrem Kubernetes-Cluster