Overzicht van MetalLB voor Kubernetes-clusters
Van toepassing op: Azure Local, versie 23H2
Wanneer u uw AKS Arc-cluster instelt, hebt u een manier nodig om uw services toegankelijk te maken buiten het cluster. Het LoadBalancer
type is ideaal voor deze toegankelijkheid, maar het externe IP-adres blijft in behandeling. De extensie voor MetalLB voor Kubernetes met Azure Arc is een hulpprogramma waarmee u externe IP-adressen voor uw toepassingen en services kunt genereren. Kubernetes-clusters met Arc kunnen worden geïntegreerd met MetalLB met behulp van de extensie voor MetalLB voor Kubernetes met Azure Arc.
MetalLB heeft IP-adressen nodig om uw services buiten het cluster toegankelijk te maken. MetalLB zorgt ervoor dat deze adressen waar nodig worden toegewezen en vrijgegeven wanneer u services maakt, maar distribueert alleen IP-adressen die zich in de geconfigureerde pools bevinden. Wanneer MetalLB een extern IP-adres aan een service toewijst, wordt het netwerk buiten het cluster geïnformeerd dat dit IP-adres deel uitmaakt van het cluster. Deze communicatie wordt uitgevoerd met behulp van standaardnetwerkprotocollen zoals ARP of BGP.
- Laag 2-modus (ARP): In de laag 2-modus krijgt één K8s-knooppunt in het cluster de eigenaar van de service en maakt gebruik van standaardadresdetectieprotocollen (ARP voor IPv4) om deze IP-adressen bereikbaar te maken op het lokale netwerk. Vanuit het oogpunt van het LAN heeft de aankondigingsmachine gewoon meerdere IP-adressen.
- BGP: In de BGP-modus stellen alle machines in het cluster BGP-peeringsessies vast met routers in de buurt die u beheert en laat deze routers weten hoe verkeer naar de service-IP-adressen moet worden doorgestuurd. Het gebruik van BGP maakt echte taakverdeling mogelijk op meerdere knooppunten en fijnmazige verkeersbeheer vanwege de beleidsmechanismen van BGP.
MetalLB heeft twee onderdelen:
- Controller: verantwoordelijk voor het toewijzen van IP voor elke service van
type=loadbalancer
. - Spreker: verantwoordelijk voor het adverteren van het IP-adres met behulp van
ARP
ofBGP
protocol. De sprekerimplementatie is een daemonset om te voldoen aan de hoge beschikbaarheidsvereiste.
Notitie
- Sprekerpods maken gebruik van het hostnetwerk; Hun IP is bijvoorbeeld het IP-adres van het knooppunt, zodat ze rechtstreeks broadcastberichten kunnen verzenden via de netwerkinterface van de host.
- De controllerpod is een normale pod die zich in een knooppunt in het cluster bevindt.
- In de ARP-modus wordt een van de luidsprekerpods geselecteerd als de leider. Vervolgens wordt het IP-adres geadverteerd met behulp van een ARP-broadcastbericht, waarbij het IP-adres wordt gekoppeld aan het MAC-adres van het knooppunt waarin het zich bevindt. Daarom raakt al het verkeer eerst één knooppunt en wordt deze gelijkmatig verdeeld over alle back-endpods van de service.
- In de BGP-modus maken alle clusterknooppunten verbindingen met alle BGP-peers die op het
BGP Peers
tabblad zijn gemaakt. Meestal is een BGP-peer een TOR-switch. Als u de BGP-routeringsgegevens wilt uitzenden, moeten de BGP-peers zodanig worden geconfigureerd dat ze het IP- en ASN-adres van clusterknooppunten herkennen. Wanneer u BGP met ECMP (Equal-Cost MultiPath) gebruikt, raakt het verkeer gelijkmatig over alle knooppunten en bereikt het dus echte taakverdeling.
MetalLB L2 -modi (ARP) en BGP vergelijken
De keuze tussen L2 en BGP met MetalLB is afhankelijk van uw specifieke vereisten, netwerkinfrastructuur en implementatiescenario's:
Aspect | MetalLB in de ARP-modus (L2) | MetalLB in BGP-modus |
---|---|---|
Overzicht | In de laag 2-modus neemt één K8s-knooppunt de verantwoordelijkheid voor het adverteren van een service naar het lokale netwerk. Vanuit het oogpunt van het netwerk ziet het ernaar uit dat het K8s-knooppunt meerdere IP-adressen heeft toegewezen aan de netwerkinterface. | In de BGP-modus brengt elk K8s-knooppunt in uw cluster een BGP-peeringsessie met uw netwerkrouters tot stand en gebruikt deze peeringsessie om de IP-adressen van externe clusterservices te adverteren. |
IP-adrestoewijzing | Ip-adresgroepen van MetallLB moeten zich in hetzelfde subnet bevinden als de K8s-knooppunten. | MetallLB IP-adresgroepen kunnen zich in een ander netwerk bevinden dan de K8s-knooppunten. |
Configuratiecomplexiteit | Laag. Omdat u IP-adressen opgeeft in hetzelfde netwerk als uw Kubernetes-knooppunten, hoeft u alleen een IP-CIDR of IP-pool op te geven tijdens het instellen van MetalLB. | Hoog. Voor het configureren van BGP is kennis van het BGP-protocol en kennis van uw netwerkinfrastructuur vereist. |
Schaalbaarheid | Beperkt tot Laag 2-netwerken, geschikt voor kleine tot middelgrote K8s-implementaties. | Geschikt voor complexe netwerktopologieën en grootschalige K8s-implementaties. |
Compatibiliteit met infrastructuurnetwerk | Werkt met elk netwerk, maar kan leiden tot ARP-overstromingen in grote K8s-clusters, omdat één IP wordt gebruikt voor alle services en de inkomende bandbreedte van de service beperkt is tot de bandbreedte van één knooppunt. | Vereist BGP-ondersteuning in de netwerkinfrastructuur. |
Verkeerstechniek | Beperkte controle over verkeersroutering. | Fijnmazige controle over verkeersroutering met behulp van BGP-kenmerken. |
Externe connectiviteit | Vereist meer configuratie voor externe connectiviteit. | Biedt naadloze connectiviteit met externe netwerken met behulp van BGP-routering. |
Veelgestelde vragen
Kan een MetalLB-exemplaar opnieuw worden gebruikt in AKS Arc-clusters?
Nee, MetalLB kan niet opnieuw worden gebruikt in AKS Arc-clusters. MetalLB leeft als pods in een Kubernetes-cluster en load balancers zijn Aangepaste resources (CR's). U moet de MetalLB Arc k8s-extensie installeren met behulp van Azure CLI, Azure Portal of Azure Resource Manager-sjablonen en load balancers maken voor elk AKS Arc-cluster.