User Tools

Site Tools


container:kubernetes:metallb

Installation Loadbalancer MetalLB

Bei der Installation von K3s haben ich den Traefik LB ausgenommen und es wird der Metallb installiert da dieses System nicht in einer Cloud durchgeführt wird.

Die aktuelle Manifest'e kann man sich auf der Hersteller Seite ansehen und runerladen.

Auf der Master Node:
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/metallb.yaml

# On first install only
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"


Netzwerk Infos für den LB konfigurieren

Auf der Master Node:

nano metallb_network.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: address-pool-1
      protocol: layer2
      addresses:
      - 192.168.88.124-192.168.88.130


kubectl apply -f metallb_network.yaml


Es ist auch möglich via Subnet das Netz einzustellen

addresses:
      - 192.168.88.0/26


Test Container

Test container um den LB zu testen

Auf dem Master:

kubectl create deployment my-nginx --image=nginx
kubectl expose deployment my-nginx --name=my-nginx --port=80 --type=LoadBalancer

root@kube01:~# kubectl get svc
NAME         TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)        AGE
kubernetes   ClusterIP      10.43.0.1     <none>           443/TCP        64m
my-nginx     LoadBalancer   10.43.2.242   192.168.88.124   80:31200/TCP   59m

root@kube01:~# curl -I http://192.168.88.124
HTTP/1.1 200 OK
Server: nginx/1.19.5
Date: Thu, 26 Nov 2020 10:19:05 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 24 Nov 2020 13:02:03 GMT
Connection: keep-alive
ETag: "5fbd044b-264"
Accept-Ranges: bytes


container/kubernetes/metallb.txt · Last modified: by stone