使用 Azure CLI 部署適用於已啟用 Azure Arc 之 Azure Arc Kubernetes 叢集的 MetalLB 擴充功能
適用於:Azure 本機版本 23H2
負載平衡器的主要目的是將流量分散到 Kubernetes 叢集中的多個節點。 這有助於防止停機並改善應用程式的整體效能。 Azure Arc 所啟用的 AKS 支援使用 Arc 擴充功能在 Kubernetes 叢集上建立 MetalLB 負載平衡器實例。
必要條件
- 具有至少一個Linux節點的已啟用 Azure Arc 的 Kubernetes 叢集。 您可以使用 Azure CLI 或 Azure 入口網站,在 Azure 本機 23H2 版上建立 Kubernetes 叢集。 Azure 本機上的 AKS 版本 23H2 叢集預設會啟用 Arc。
- 請確定您有足夠的IP位址可供負載平衡器使用。 針對 Azure 本機 23H2 版的 AKS,請確定保留給負載平衡器的 IP 位址不會與 Arc VM 邏輯網路中的 IP 位址衝突,以及控制平面 IP。 如需 Kubernetes 中 IP 位址規劃和網路功能的詳細資訊,請參閱 Kubernetes 的網路需求和 Kubernetes 的 IP 地址規劃。
- 本操作指南假設您了解金屬 LB 的運作方式。 如需詳細資訊,請參閱 適用於 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 擴充功能
如果您沒有 Graph 許可權 Application.Read.All,您可以遵循下列步驟:
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
- 若要安裝適用於 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 '00001111-aaaa-2222-bbbb-3333cccc4444'" --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 負載平衡器的模式。 支援的值為 ARP 、 BGP 或 Both 。 |
$ipRange |
或 Both 模式中 MetalLB 負載平衡器的 ARP IP 範圍。 |
如果公告模式為 BGP
或 Both
,它也會建立類型 BGPAdvertisement
為 的自定義資源。 如果公告模式為 ARP
或 Both
,也會建立 類型的 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 對等互連對於具有 BGP
或 Both
公告模式的所有負載平衡器都有效。 如果您在 或 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