使用 Azure Arc 和 Azure CLI 建立 MetalLB 負載平衡器

適用於:Azure Stack HCI 版本 23H2

負載平衡器的主要目的是將流量分散到 Kubernetes 叢集中的多個節點。 這有助於防止停機並改善應用程式的整體效能。 Azure Arc 所啟用的 AKS 支援使用 Arc Kubernetes Runtime k8s-extension 在 Kubernetes 叢集上建立 MetalLB 負載平衡器實例。

必要條件

  • 具有至少一個Linux節點的已啟用 Azure Arc 的 Kubernetes 叢集。 您可以使用 Azure CLIAzure 入口網站,在 Azure Stack HCI 23H2 上建立 Kubernetes 叢集。 Azure Stack HCI 23H2 叢集上的 AKS 預設會啟用 Arc。
  • 請確定您有足夠的IP位址可供負載平衡器使用。 針對 Azure Stack HCI 23H2 上的 AKS,請確定保留給負載平衡器的 IP 位址不會與 Arc VM 邏輯網路和控制平面 IP 中的 IP 位址衝突。 如需 Kubernetes 中 IP 位址規劃和網路功能的詳細資訊,請參閱 Azure Stack HCI 23H2 上的 AKS 網路需求。
  • 本操作指南假設您了解金屬 LB 的運作方式。 如需詳細資訊,請參閱 Arc Kubernetes叢集中的 MetalLB 概觀。

安裝 Azure CLI 延伸模組

執行下列命令以安裝必要的 Azure CLI 擴充功能:

az extension add -n k8s-runtime --upgrade

啟用 MetalLB Arc 延伸模組

在繼續之前,請先設定下列變數:

參數 描述
$subId Kubernetes 叢集的 Azure 訂用帳戶標識碼。
$rgName Kubernetes 叢集的 Azure 資源群組。
$clusterName Kubernetes 叢集的名稱。

選項 1:使用 az k8s-runtime load-balancer enable 命令啟用 MetalLB Arc 擴充功能

若要使用下列命令啟用 MetalLB Arc 延伸模組,您必須擁有 Graph 許可權 Application.Read.All。 您可以登入您的 Azure 訂用帳戶,並執行下列命令來檢查您是否具有此權限:

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

如果命令失敗,請連絡您的 Azure 租用戶系統管理員以取得 Application.Read.All 角色。

如果您有許可權,您可以使用 az k8s-runtime load-balancer enable 命令來安裝 Arc 擴充功能,並註冊 Kubernetes 叢集的資源提供者。 參數 --resource-uri 是指 Kubernetes 叢集的資源管理員標識碼。

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

選項 2:使用 az k8s-extension add 命令啟用 MetalLB Arc Kubernetes 擴充功能

如果您沒有 Graph 許可權 Application.Read.All,您可以遵循下列步驟:

  1. Microsoft.KubernetesRuntime RP如果您尚未這麼做,請註冊 。 請注意,您只需要為每個 Azure 訂用帳戶註冊一次。 您也可以使用 Azure 入口網站 註冊資源提供者。 如需如何註冊資源提供者和必要許可權的詳細資訊,請參閱 如何註冊資源提供者
az provider register -n Microsoft.KubernetesRuntime

您可以執行下列命令來檢查資源提供者是否已成功註冊。

az provider show -n Microsoft.KubernetesRuntime -o table

預期輸出:

Namespace                    RegistrationPolicy    RegistrationState
---------------------------  --------------------  -------------------
Microsoft.KubernetesRuntime  RegistrationRequired  Registered
  1. 若要安裝 MetalLB Arc 延伸模組,請取得 MetalLB 延伸模組資源提供者的 AppID,然後執行擴充功能 create 命令。 每個 Arc Kubernetes 叢集都必須執行下列命令一次。

執行 az ad sp list 以取得 Arc 延伸模組的應用程式識別碼。 若要執行下列命令,您必須是 user Azure 租用戶的成員。 如需使用者和來賓成員資格的詳細資訊,請參閱 Microsoft Entra ID 中的預設用戶許可權。

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

$objID之後,您可以在 Kubernetes 叢集上安裝 MetalLB Arc 擴充功能。 若要執行下列命令,您必須具備 Kubernetes 擴充參與者 角色。

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

在 Kubernetes 叢集上部署 MetalLB 負載平衡器

您現在可以執行 命令,從遠端建立 Kubernetes 叢集的 az k8s-runtime load-balancer create 負載平衡器。 此命令會在 命名空間 kube-system中建立 型IPAddressPool別的自定義資源。

在繼續之前,請先設定下列變數:

參數 描述
$lbName 您的 MetalLB 負載平衡器實例名稱。
$advertiseMode 您的 MetalLB 負載平衡器的模式。 支援的值為 ARPBGPBoth
$ipRange Both 模式中 MetalLB 負載平衡器的 ARP IP 範圍。

如果公告模式為 BGPBoth,它也會建立類型 BGPAdvertisement為 的自定義資源。 如果公告模式為 ARPBoth,也會建立 類型的 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

為您的 Kubernetes 叢集建立 BGP 對等互連

執行 命令,從遠端建立 Kubernetes 叢集的 az k8s-runtime bgp-peer create BGP 對等互連。 請注意,BGP 對等互連對於具有 BGPBoth 公告模式的所有負載平衡器都有效。 如果您在 或 Both 模式中使用 MetalLB 負載平衡器BGP,則必須建立 BGP 對等互連。

在繼續之前,請先設定下列變數:

參數 描述
$peerName BGP 對等互連的名稱。
$myASN 要用於工作階段本機端的 AS 編號。
$peerASN 會話遠端端預期的 AS 數位。
$peerIP 建立工作階段時要撥打的位址。
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

下一步