Übersicht über MetalLB für Kubernetes-Cluster
Gilt für: Azure Local, 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 eignet sich ideal für diese Barrierefreiheit, aber die externe IP bleibt aus. Die Erweiterung für MetalLB für Azure Arc aktiviert Kubernetes ist ein Tool, mit dem Sie externe IPs für Ihre Anwendungen und Dienste generieren können. Arc-fähige Kubernetes-Cluster können mit Der Erweiterung MetalLB für Azure Arc aktivierte Kubernetes in MetalLB integriert werden.
Um Ihre Dienste außerhalb des Clusters zugänglich zu machen, benötigt MetalLB IP-Adressen. MetalLB kümmert sich um das Zuweisen und Freigeben dieser Adressen nach Bedarf beim Erstellen von Diensten, verteilt jedoch nur IPs, die sich in seinen konfigurierten Pools befinden. Wenn MetalLB einem Dienst eine externe IP-Adresse zuweist, informiert sie das Netzwerk außerhalb des Clusters darüber, dass diese IP zum Cluster gehört. Diese Kommunikation erfolgt über Standardnetzwerkprotokolle 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 IPs im lokalen Netzwerk erreichbar zu machen. Aus der Sicht des LAN verfügt der ankündigungsende Computer einfach über mehrere IP-Adressen.
- BGP: Im BGP-Modus richten alle Computer im Cluster BGP-Peeringsitzungen mit nahe gelegenen Routern ein, die Sie steuern, und informieren Sie diese Router, wie Der Datenverkehr an die Dienst-IPs weitergeleitet werden soll. Die Verwendung von BGP ermöglicht einen echten Lastenausgleich über mehrere Knoten hinweg und eine differenzierte Datenverkehrskontrolle aufgrund der Richtlinienmechanismen von BGP.
MetalLB verfügt über zwei Komponenten:
- Verantwortlich für die Zuweisung von IP für jeden Dienst von
type=loadbalancer
. - Sprecher: verantwortlich für die Werbung für die IP-Nutzung
ARP
oderBGP
das Protokoll. Um die Anforderung für hohe Verfügbarkeit (High Availability, HA) zu erfüllen, ist die Lautsprecherbereitstellung ein Daemonset.
Hinweis
- Sprecher pods verwenden das Hostnetzwerk; d. h. ihre IP ist die Knoten-IP, sodass sie Übertragungsnachrichten direkt über die Hostnetzwerkschnittstelle senden können.
- Der Controller-Pod ist ein normaler Pod, der sich in einem beliebigen Knoten im Cluster befindet.
- Im ARP-Modus wird eine der Lautsprecher-Pods als Füllzeichen ausgewählt. Anschließend wird die IP mit einer ARP-Übertragungsnachricht angekündigt und die IP mit der MAC-Adresse des Knotens gebunden, in dem er sich befindet. Daher trifft der gesamte Datenverkehr zuerst auf einen Knoten und verteilt ihn dann gleichmäßig auf alle Back-End-Pods des Diensts.
- Im BGP-Modus stellen alle Clusterknoten Verbindungen mit allen BGP-Peers her, die auf der Registerkarte erstellt wurden. 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 von Clusterknoten erkennen. Wenn Sie BGP mit ECMP (Equal-Cost MultiPath) verwenden, trifft der Datenverkehr gleichmäßig über alle Knoten hinweg und erreicht daher einen echten Lastenausgleich.
Vergleich der Modi MetalLB L2 (ARP) und BGP
Die Wahl zwischen L2- und BGP-Modus mit MetalLB hängt von Ihren spezifischen Anforderungen, Netzwerkinfrastrukturen und Bereitstellungsszenarien ab:
Aspekt | MetalLB im L2(ARP)-Modus | MetalLB im BGP-Modus |
---|---|---|
Übersicht | Im Layer 2-Modus übernimmt ein K8s-Knoten die Verantwortung für die Werbung eines Diensts für das lokale Netzwerk. Aus Der Perspektive des Netzwerks sieht er aus, als ob der K8s-Knoten mehreren IP-Adressen seiner Netzwerkschnittstelle zugeordnet ist. | Im BGP-Modus stellt jeder K8s-Knoten in Ihrem Cluster eine BGP-Peeringsitzung mit Ihren Netzwerkroutern her und verwendet diese Peeringsitzung, um die IPs externer Clusterdienste anzukündigen. |
IP-Adresszuweisung | MetallLB-IP-Adresspools müssen sich im gleichen Subnetz wie die K8s-Knoten befinden. | MetallLB-IP-Adresspools können sich in einem anderen Netzwerk befinden als die K8s-Knoten. |
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 über das BGP-Protokoll und ein Verständnis Ihrer Netzwerkinfrastruktur. |
Skalierbarkeit | Beschränkt auf Layer 2-Netzwerke, geeignet für kleine bis mittlere K8s-Bereitstellungen. | Geeignet für komplexe Netzwerktopologien und umfangreiche K8s-Bereitstellungen. |
Kompatibilität mit dem Infrastrukturnetzwerk | Funktioniert mit jedem Netzwerk, kann jedoch ARP-Überflutungen in großen K8s-Clustern verursachen, da eine einzelne IP für alle Dienste verwendet wird und die Eingehende Bandbreite 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. | Fein abgestimmte Kontrolle über das Datenverkehrsrouting mithilfe von BGP-Attributen. |
Externe Konnektivität | Erfordert mehr Konfiguration für externe Konnektivität. | Bietet eine nahtlose Verbindung mit externen Netzwerken mithilfe des BGP-Routings. |
Häufig gestellte Fragen
Kann eine MetalLB-Instanz in AKS Arc-Clustern wiederverwendet werden?
Nein, MetalLB kann nicht in AKS Arc-Clustern wiederverwendet werden. MetalLB lebt als Pods in einem Kubernetes-Cluster, und Lastenausgleichsgeräte sind benutzerdefinierte Ressourcen (CRs). Sie müssen die MetalLB Arc k8s-Erweiterung mit Azure CLI, den Vorlagen Azure-Portal oder Azure Resource Manager installieren und Lastenausgleichsgeräte für jeden AKS Arc-Cluster erstellen.