共用方式為


適用於 Kubernetes 叢集的 MetalLB 概觀

適用於:Azure 本機版本 23H2

當您設定 AKS Arc 叢集時,您需要一種方法,讓您的服務可在叢集外部存取。 此 LoadBalancer 類型非常適合此輔助功能,但外部IP仍擱置中。 已啟用 Azure Arc 的 MetalLB Kubernetes 擴充功能是一種工具,可讓您為應用程式和服務產生外部 IP。 已啟用 Arc 的 Kubernetes 叢集可以使用適用於已啟用 Azure Arc 的 Kubernetes 之 MetalLB 擴充功能,與 MetalLB 整合。

若要讓您的服務可在叢集外部存取,MetalLB 需要IP位址。 當建立服務時,MetalLB 會負責指派和釋放這些位址,但只會散發其設定集區中的IP。 當 MetalLB 將外部 IP 位址指派給服務時,它會通知叢集外部的網路此 IP 屬於叢集。 此通訊是使用ARP或 BGP 等標準網路協定來完成。

  • 第 2 層模式 (ARP):在第 2 層模式中,叢集中的一個 K8s 節點會取得服務的擁有權,並使用標準位址探索通訊協定 (ARP for IPv4) 讓這些 IP 可在局域網路上連線。 從 LAN 的觀點來看,宣告機器只會有多個 IP 位址。
  • BGP:在 BGP 模式中,叢集中的所有機器都會使用您控制的鄰近路由器建立 BGP 對等互連會話,並告訴這些路由器如何將流量轉送至服務 IP。 使用 BGP 可跨多個節點進行真正的負載平衡,以及由於 BGP 的原則機制而進行更細緻的流量控制。

MetalLB 有兩個元件:

  • 控制器:負責為 的每個服務 type=loadbalancer配置IP。
  • 演講者:負責使用 ARPBGP 通訊協定來公告 IP。 為了滿足高可用性 (HA) 需求,喇叭部署是精靈集。

注意

  • 說話者 Pod 會使用主機網路;亦即,其IP是節點IP,以便他們可以透過主機網路介面直接傳送廣播訊息。
  • 控制器 Pod 是存在於叢集中任何節點的一般 Pod。

MetalLB 架構

  • 在ARP模式中,其中一個喇叭Pod會選取為領導者。 然後,它會使用 ARP 廣播訊息來公告 IP,並將 IP 系結至其所在的節點 MAC 位址。 因此,所有流量都會先叫用一個節點,然後 kube-proxy 會將它平均分散到服務的所有後端 Pod。
  • 在 BGP 模式中,所有叢集節點都會與索引標籤中 BGP Peers 建立的所有 BGP 對等互連建立連線。BGP 對等是 TOR 交換器。 若要廣播 BGP 路由資訊,必須設定 BGP 對等互連,才能辨識叢集節點的 IP 和 ASN。 當您搭配 ECMP 使用 BGP 時(等於成本多重路徑),流量會平均在所有節點之間達到,因此達到真正的負載平衡。

比較 MetalLB L2 (ARP) 和 BGP 模式

使用 MetalLB 的 L2 和 BGP 模式之間的選擇取決於您的特定需求、網路基礎結構和部署案例:

層面 L2 中的 MetalLB (ARP) 模式 BGP 模式中的 MetalLB
概觀 在第 2 層模式中,一個 K8s 節點負責向局域網路發佈服務。 從網路的觀點來看,K8s 節點似乎已將多個IP位址指派給其網路介面。 在 BGP 模式中,叢集中的每個 K8s 節點都會建立與網路路由器的 BGP 對等互連會話,並使用該對等互連會話來公告外部叢集服務的 IP。
IP 位址指派 MetallLB IP 位址池必須與 K8s 節點位於相同的子網中。 MetallLB IP 位址池可以位於與 K8s 節點不同的網路中。
設定複雜度 低。 由於您在與 Kubernetes 節點相同的網路中提供 IP 位址,因此設定 MetalLB 時只需要指定 IP CIDR 或 IP 集區。 高。 設定 BGP 需要瞭解 BGP 通訊協定,並瞭解您的網路基礎結構。
延展性 限制為第 2 層網路,適用於小型至中型 K8s 部署。 適用於複雜的網路拓撲和大規模 K8s 部署。
與基礎結構網路的相容性 使用任何網路,但可能會導致大型 K8s 叢集中發生 ARP 泛濫,因為單一 IP 會用於所有服務,而服務的輸入頻寬僅限於單一節點的頻寬。 需要網路基礎結構中的 BGP 支援。
交通工程 對流量路由的控制有限。 使用 BGP 屬性對流量路由進行更細緻的控制。
外部連線能力 需要更多外部連線的組態。 使用 BGP 路由與外部網路提供順暢的連線。

常見問題集

可以跨 AKS Arc 叢集重複使用 MetalLB 實例嗎?

否,無法跨 AKS Arc 叢集重複使用 MetalLB。 MetalLB 會以 Kubernetes 叢集中的 Pod 的形式存在,而負載平衡器是自定義資源(CRS)。 您必須使用 Azure CLI、Azure 入口網站 或 Azure Resource Manager 範本來安裝 MetalLB Arc k8s 擴充功能,併為每個 AKS Arc 叢集建立負載平衡器。

下一步