Übersicht über MetalLB für Kubernetes-Cluster
Gilt für: Azure Stack HCI, Version 23H2
Wenn Sie Ihren AKS Arc-Cluster einrichten, benötigen Sie eine Möglichkeit, ihre Dienste außerhalb des Clusters zugänglich zu machen. Der LoadBalancer
Typ ist ideal für diese Barrierefreiheit, aber die externe IP-Adresse bleibt ausstehend. Die MetalLB Arc-Erweiterung ist ein Tool, mit dem Sie externe IP-Adressen für Ihre Anwendungen und Dienste generieren können. Arc-fähige Kubernetes-Cluster können mithilfe der Arc Networking
k8s-Erweiterung in MetalLB integriert werden.
Um Ihre Dienste außerhalb des Clusters zugänglich zu machen, benötigt MetalLB IP-Adressen. MetalLB übernimmt das Zuweisen und Freigeben dieser Adressen nach Bedarf, wenn Sie Dienste erstellen, verteilt jedoch nur IP-Adressen, die sich in den konfigurierten Pools befinden. Wenn MetalLB einem Dienst eine externe IP-Adresse zuweist, wird das Netzwerk außerhalb des Clusters darüber informiert, dass diese IP-Adresse zum Cluster gehört. Diese Kommunikation erfolgt mithilfe von Standardnetzwerkprotokollen wie ARP oder BGP.
- Layer-2-Modus (ARP): Im Layer-2-Modus übernimmt ein K8s-Knoten im Cluster den Besitz des Diensts und verwendet Standardadressermittlungsprotokolle (ARP für IPv4), um diese IP-Adressen im lokalen Netzwerk erreichbar zu machen. Aus Sicht des LAN verfügt der Ankündigungscomputer einfach über mehrere IP-Adressen.
- BGP: Im BGP-Modus richten alle Computer im Cluster BGP-Peeringsitzungen mit Routern in der Nähe ein, die Sie steuern, und teilen diesen Routern mit, wie Datenverkehr an die Dienst-IP-Adressen weitergeleitet werden soll. Die Verwendung von BGP ermöglicht einen echten Lastenausgleich über mehrere Knoten und eine differenzierte Datenverkehrssteuerung aufgrund der Richtlinienmechanismen von BGP.
MetalLB hat zwei Komponenten:
- Controller: Verantwortlich für die Zuweisung der IP-Adresse für jeden Dienst von
type=loadbalancer
. - Sprecher: verantwortlich für die Werbung der IP-Adresse mit
ARP
dem Protokoll oderBGP
. Um die Hochverfügbarkeitsanforderung zu erfüllen, ist die Lautsprecherbereitstellung ein Daemonset.
Hinweis
- Sprecherpods verwenden das Hostnetzwerk. Das heißt, ihre IP-Adresse ist die Knoten-IP, sodass sie broadcast-Nachrichten direkt über die Hostnetzwerkschnittstelle senden können.
- Der Controllerpod ist ein normaler Pod, der sich in einem beliebigen Knoten im Cluster befindet.
- Im ARP-Modus wird einer der Sprecherpods als Leader ausgewählt. Anschließend wird die IP-Adresse mithilfe einer ARP-Broadcastnachricht angekündigt und die IP mit der MAC-Adresse des Knotens gebunden, in dem sie sich befindet. Daher trifft der gesamte Datenverkehr zuerst auf einen Knoten, und kube-proxy verteilt ihn gleichmäßig auf alle Back-End-Pods des Diensts.
- Im BGP-Modus stellen alle Clusterknoten Verbindungen mit allen auf der Registerkarte erstellten BGP-Peers her. In der
BGP Peers
Regel ist ein BGP-Peer ein TOR-Switch. Um die BGP-Routinginformationen zu übertragen, müssen die BGP-Peers so konfiguriert werden, dass sie die IP- und ASN-Adresse von Clusterknoten erkennen. Wenn Sie BGP mit ECMP (Equal-Cost MultiPath) verwenden, trifft der Datenverkehr gleichmäßig auf alle Knoten und erreicht daher einen echten Lastenausgleich.
Vergleichen von MetalLB L2 (ARP) und BGP-Modi
Die Wahl zwischen L2- und BGP-Modus mit MetalLB hängt von Ihren spezifischen Anforderungen, Netzwerkinfrastruktur und Bereitstellungsszenarien ab:
Aspekt | MetalLB im L2-Modus (ARP) | MetalLB im BGP-Modus |
---|---|---|
Überblick | Im Layer-2-Modus übernimmt ein K8s-Knoten die Verantwortung für die Ankündigung eines Diensts im lokalen Netzwerk. Aus Netzwerksicht sieht es so aus, als ob dem K8s-Knoten seiner Netzwerkschnittstelle mehrere IP-Adressen zugewiesen sind. | Im BGP-Modus richtet jeder K8s-Knoten in Ihrem Cluster eine BGP-Peeringsitzung mit Ihren Netzwerkroutern ein und verwendet diese Peeringsitzung, um die IP-Adressen externer Clusterdienste anzukündigen. |
IP-Adresszuweisung | MetallLB-IP-Adresspools müssen sich im selben Subnetz wie die K8s-Knoten befinden. | MetallLB-IP-Adresspools können sich in einem anderen Netzwerk als die K8s-Knoten befinden. |
Konfigurationskomplexität | Niedrig. Da Sie IP-Adressen im selben Netzwerk wie Ihre Kubernetes-Knoten bereitstellen, müssen Sie beim Einrichten von MetalLB nur einen IP-CIDR- oder IP-Pool angeben. | Hoch. Das Konfigurieren von BGP erfordert Kenntnisse des BGP-Protokolls und ein Verständnis Ihrer Netzwerkinfrastruktur. |
Skalierbarkeit | Beschränkt auf Layer-2-Netzwerke, geeignet für kleine bis mittelgroße K8s-Bereitstellungen. | Geeignet für komplexe Netzwerktopologien und umfangreiche K8s-Bereitstellungen. |
Kompatibilität mit dem Infrastrukturnetzwerk | Funktioniert mit jedem Netzwerk, kann jedoch zu ARP-Überflutungen in großen K8s-Clustern führen, da eine einzelne IP-Adresse für alle Dienste verwendet wird und die Eingangsbandbreite des Diensts auf die Bandbreite eines einzelnen Knotens beschränkt ist. | Erfordert BGP-Unterstützung in der Netzwerkinfrastruktur. |
Verkehrstechnik | Eingeschränkte Kontrolle über das Datenverkehrsrouting. | Differenzierte Steuerung des Datenverkehrsroutings mithilfe von BGP-Attributen. |
Externe Konnektivität | Erfordert mehr Konfiguration für externe Konnektivität. | Bietet nahtlose Konnektivität mit externen Netzwerken mithilfe von BGP-Routing. |
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für