MetalLB is a load-balancer implementation for bare metal Kubernetes clusters, using standard routing protocols
1
| kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml
|
In order to assign an IP to the services, MetalLB must be instructed to do so via the IPAddressPool
CR.
1
2
3
4
5
6
7
8
9
10
| cat <<EOF | kubectl apply -f -
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: first-pool
namespace: metallb-system
spec:
addresses:
- 192.168.229.80-192.168.229.90
EOF
|
Announce The Service IPs:
Layer 2 mode is the simplest to configure: in many cases, you don’t need any protocol-specific configuration, only IP addresses.
1
2
3
4
5
6
7
8
9
10
| cat <<EOF | kubectl apply -f -
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: example
namespace: metallb-system
spec:
ipAddressPools:
- first-pool
EOF
|
1
| kubectl get all -n metallb-system
|
Test if LB is assiging the ips:
1
2
| kubectl run webapp --image=nginx
kubectl expose pod webapp --port=80 --type=LoadBalancer
|
Reference Links: