Översikt över MetalLB för Kubernetes-kluster
Gäller för: Azure Local, version 23H2
När du konfigurerar AKS Arc-klustret behöver du ett sätt att göra dina tjänster tillgängliga utanför klustret. Typen LoadBalancer
är perfekt för den här tillgängligheten, men den externa IP-adressen är fortfarande väntande. Tillägget för MetalLB för Azure Arc-aktiverat Kubernetes är ett verktyg som gör att du kan generera externa IP-adresser för dina program och tjänster. Arc-aktiverade Kubernetes-kluster kan integreras med MetalLB med hjälp av tillägget för MetalLB för Azure Arc-aktiverade Kubernetes.
För att göra dina tjänster tillgängliga utanför klustret behöver MetalLB IP-adresser. MetalLB tar hand om att tilldela och frigöra dessa adresser efter behov när du skapar tjänster, men distribuerar bara IP-adresser som finns i dess konfigurerade pooler. När MetalLB tilldelar en extern IP-adress till en tjänst informeras nätverket utanför klustret om att den här IP-adressen tillhör klustret. Den här kommunikationen sker med hjälp av standardnätverksprotokoll som ARP eller BGP.
- Layer 2-läge (ARP): I layer 2-läge tar en K8s-nod i klustret ägarskapet för tjänsten och använder standardprotokoll för adressidentifiering (ARP för IPv4) för att göra dessa IP-adresser åtkomliga i det lokala nätverket. Från LAN:s synvinkel har den tillkännagivande datorn helt enkelt flera IP-adresser.
- BGP: I BGP-läge upprättar alla datorer i klustret BGP-peeringsessioner med närliggande routrar som du styr och berättar för dessa routrar hur trafiken ska vidarebefordras till tjänst-IP-adresserna. Med BGP kan du använda verklig belastningsutjämning över flera noder och detaljerad trafikkontroll på grund av BGP:s principmekanismer.
MetalLB har två komponenter:
- Kontrollant: ansvarar för att allokera IP-adresser för varje tjänst i
type=loadbalancer
. - Talare: ansvarig för att annonsera IP-adressen med hjälp av
ARP
ellerBGP
protokoll. För att uppfylla kravet på hög tillgänglighet (HA) är talardistributionen en daemonset.
Kommentar
- Talarpoddar använder värdnätverket. Ip-adressen är alltså nodens IP-adress, så att de direkt kan skicka sändningsmeddelanden via värdnätverksgränssnittet.
- Kontrollantpodden är en normal podd som finns i alla noder i klustret.
- I ARP-läge väljs en av talarpoddarna som ledare. Sedan annonseras IP-adressen med ett ARP-sändningsmeddelande som binder IP-adressen till MAC-adressen för den nod som den finns i. Därför når all trafik först en nod och sedan sprider kube-proxy den jämnt till alla serverdelspoddar i tjänsten.
- I BGP-läge upprättar alla klusternoder anslutningar med alla BGP-peer-datorer som skapats på
BGP Peers
fliken. Vanligtvis är en BGP-peer en TOR-växel. För att kunna sända BGP-routningsinformationen måste BGP-peer-datorerna konfigureras så att de känner igen IP- och ASN för klusternoder. När du använder BGP med ECMP (Equal-Cost MultiPath) når trafiken jämnt över alla noder och uppnår därför verklig belastningsutjämning.
Jämför MetalLB L2 -lägen (ARP) och BGP
Valet mellan L2- och BGP-läge med MetalLB beror på dina specifika krav, nätverksinfrastruktur och distributionsscenarier:
Aspekt | MetalLB i L2-läge (ARP) | MetalLB i BGP-läge |
---|---|---|
Översikt | I layer 2-läge tar en K8s-nod på sig ansvaret för att annonsera en tjänst till det lokala nätverket. Ur nätverksperspektiv ser det ut som att K8s-noden har flera IP-adresser tilldelade till nätverksgränssnittet. | I BGP-läge upprättar varje K8s-nod i klustret en BGP-peeringsession med dina nätverksroutrar och använder den peeringsessionen för att annonsera IP-adresser för externa klustertjänster. |
IP-adresstilldelning | MetallLB IP-adresspooler måste finnas i samma undernät som K8s-noderna. | MetallLB IP-adresspooler kan finnas i ett annat nätverk än K8s-noderna. |
Konfigurationskomplexitet | Låg. Eftersom du tillhandahåller IP-adresser i samma nätverk som dina Kubernetes-noder behöver du bara ange en IP CIDR eller IP-pool när du konfigurerar MetalLB. | Hög. För att konfigurera BGP krävs kunskaper om BGP-protokoll och en förståelse för nätverksinfrastrukturen. |
Skalbarhet | Begränsad till Layer 2-nätverk som lämpar sig för små till medelstora K8-distributioner. | Lämplig för komplexa nätverkstopologier och storskaliga K8s-distributioner. |
Kompatibilitet med infrastrukturnätverk | Fungerar med alla nätverk, men kan orsaka ARP-översvämningar i stora K8s-kluster, eftersom en enda IP-adress används för alla tjänster och tjänstens ingressbandbredd är begränsad till bandbredden för en enskild nod. | Kräver BGP-stöd i nätverksinfrastrukturen. |
Trafikteknik | Begränsad kontroll över trafikroutning. | Detaljerad kontroll över trafikroutning med BGP-attribut. |
Extern anslutning | Kräver mer konfiguration för extern anslutning. | Ger sömlös anslutning med externa nätverk med BGP-routning. |
Vanliga frågor
Kan en MetalLB-instans återanvändas i AKS Arc-kluster?
Nej, MetalLB kan inte återanvändas i AKS Arc-kluster. MetalLB lever som poddar i ett Kubernetes-kluster och lastbalanserare är anpassade resurser (CRs). Du måste installera K8s-tillägget MetalLB Arc med hjälp av Azure CLI, mallarna Azure Portal eller Azure Resource Manager och skapa lastbalanserare för varje AKS Arc-kluster.