4.2 MetalLB
MetalLB wurde als Load-Balancer für den Kubernetes-Cluster ausgewählt, da es eine einfache und flexible Möglichkeit bietet, Dienste mit extern zugreifbaren IP-Adressen zu versehen. Dies ist besonders in einer On-Premise-Umgebung wichtig, da dort keine nativen Cloud-Load-Balancer verfügbar sind. MetalLB ermöglicht es, den Zugriff auf Dienste außerhalb des Clusters zu gewährleisten, indem es eine feste Zuordnung von IP-Adressen aus einem definierten Pool bereitstellt.
Installation von MetalLB
Die Installation erfolgt direkt im Kubernetes-Cluster und umfasst die folgenden Schritte:
1. Namespace erstellen
MetalLB wird in einem eigenen Namespace installiert, um die Ressourcen zu isolieren:
kubectl create namespace metallb-system
2. Installation mittels Manifeste
Die Installation erfolgt über die offiziellen Manifeste:
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/main/manifests/metallb-native.yaml
3. Bereitstellung konfigurieren
MetalLB benötigt eine Konfigurationsdatei, die den IP-Bereich definiert, aus dem externe IPs vergeben werden. Diese Konfiguration ermöglicht es, dass Dienste vom Cluster aus über definierte IP-Adressen erreichbar sind.
Beispiel-Konfigurationsdatei ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
labels:
app: metallb
data:
config: |
address-pools:
- name: default-pool
protocol: layer2
addresses:
- 192.168.1.100-192.168.1.200
Diese Konfiguration legt den IP-Bereich von 192.168.1.100 bis 192.168.1.200 fest. MetalLB weist aus diesem Bereich externe IP-Adressen für LoadBalancer-Services zu und sorgt so für die Erreichbarkeit der Dienste außerhalb des Clusters.
Die Konfiguration wird wie folgt angewendet:
kubectl apply -f metallb-config.yaml
Testen von MetalLB
Um die Funktionalität von MetalLB zu überprüfen, wird ein einfacher Service erstellt.
1. Deployment eines Test-Pods
Ein einfacher NGINX-Pod wird erstellt:
kubectl run nginx --image=nginx --port=80
2. Service erstellen
Ein Service mit LoadBalancer-Typ wird erstellt, um eine externe IP zuzuweisen:
kubectl expose pod nginx --type=LoadBalancer --name=nginx-service
3. Überprüfen der Zuweisung
Prüfen, ob MetalLB eine externe IP-Adresse zugewiesen hat:
kubectl get svc nginx-service
Erwartetes Ergebnis:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-service LoadBalancer 10.96.250.25 192.168.1.101 80:31564/TCP 1m
4. Zugriff testen
Der Zugriff auf den Service kann über die zugewiesene externe IP erfolgen:
curl http://192.168.1.101
Wenn die NGINX-Standardseite angezeigt wird, funktioniert MetalLB korrekt.
Weitere Informationen
Details zur Konfiguration und erweiterten Einstellungen von MetalLB sind in der offiziellen MetalLB-Dokumentationverfügbar.