LoadBalancer met MetalLB

De cloud-providers geven de mogelijkheid om een service van het type ‘LoadBalancer’ aan te maken die op de achtergrond de provider’s functies gebruikt. In het geval van een zogenaamde ‘bare metal’ installatie (zoals mijn Kubernetes Cluster op RPi) is deze functie niet aanwezig en zal je zelf dit moeten installeren. MetalLB geeft deze mogelijkheid en biedt, in tegenstelling tot Ingress, meer opties dan alleen http of https.

Op Docker Hub zijn repositories te vinden voor verschillende CPU architecturen, ook voor ARM. Via de ‘tags‘ vind je o.a. v0.8 die geschikt is voor een Raspbeery PI Cluster.

Installatie van de MetalLB controller gaat middels een apply commando van het metallb.yaml bestand:

$ kubectl apply -f metallb.yaml

en deze maakt de namespace, services, daemonset, deployments etc. aan en zodra dit gereed is kan een IP-adres-pool aangemaakt worden.

In de configuratie van MetalLB dient een ConfigMap een sectie te bevatten met daarin een ‘pool’ van IP-adressen die gebruikt kunnen worden voor het uitgeven van die IP adressen aan de loadbalancer services. Bijvoorbeeld:

data:
   config: |
     address-pools:
     - name: default
       protocol: layer2
       addresses:
       - 192.168.178.206-192.168.178.210

De ConfigMap wordt ook applied:

$ kubectl apply -f metallb-cm.yml

En hierna is de cluster gereed om LoadBalancer aan te kunnen maken. Zie ook mijn Canary app via LoadBalancer pagina.