Die Kubernetes-Angebote in der Cloud enthalten i.d.R. bereits einen Load Balancer, der Services des Typs LoadBalancer beim Einspielen in den Cluster eine öffentlich erreichbare IP-Adresse zuweist. Bei selbst-gehosteten Kubernetes-Installationen fehlt diese Funktionalität meist. Sie kann aber recht einfach mit Hilfe von MetalLB (https://metallb.universe.tf/) nachgerüstet werden.
MetalLB ist eine Open Source Load Balancer Implementation, die virtuelle IP-Adressen erzeugt und den o.a. Services zuweisen kann. MetalLB kann im IP Layer 2 oder 3 mit IP 4 oder 6 arbeiten. Im Folgenden beschränke ich mich auf den Layer-2-Modus in einem IP-4-Netzwerk.
Zur Erzeugung der virtuellen Adressen werden sog. Speaker verwendet: Auf jedem Knoten läuft ein Pod, der auf ARP Requests reagieren kann. Durch eine Leader Election wird einer der Speaker aktiv, währen die anderen als Warm Standby fungieren. Trifft nun ein ARP Request auf einer der konfigurierbaren virtuellen Adressen ein, antwortet der aktive Speaker mit seiner Hardware-Adresse. Für den Aufrufer erscheint also der aktive Knoten als derjenige mit der angefragten IP-Adresse:

Die virtuellen Adressen werden durch eine weitere Komponente – den sog. Controller – definiert. In seiner Konfiguration lassen sich nach Bedarf mehrere Adress-Pools definieren, auf die MetalLB reagieren soll. Wird ein Service vom Typ LoadBalancer in den Cluster eingespielt, wählt der Controller eine der verfügbaren Adressen aus, weist sie dem Service zu und aktiviert sie für das beschriebene Speaker-Verfahren.
Sollte nun während des Betriebs der aktive Knoten ausfallen, übernimmt einer der anderen die virtuelle Adresse.
Ich konnte hier nur grundsätzlich auf die Funktion von MetalLB eingehen. Melden Sie sich gerne bei uns, wenn Sie mehr Informationen benötigen!