How to install and configure MetalLB on self-managed Kubernetes

Installing and configuring MetalLB on a self-managed Kubernetes cluster can be a crucial step in providing load balancing for your services. MetalLB is a load-balancer implementation for bare metal Kubernetes clusters to assign external IP addresses to services in a cluster. In this article, we will go over the steps to install and configure MetalLB on a Kubernetes cluster.

Step 1: Install MetalLB

The first step in installing MetalLB is to create a namespace for it and its components.

kubectl create namespace metallb-system

Then, use Helm to install MetalLB in the metallb-system namespace.

helm install metallb metallb/metallb --namespace metallb-system

Step 2: Configure MetalLB

After installing MetalLB we configure it to use a specific IP address range for your services. This can be done by creating a configMap with the desired IP range.

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.1.240-192.168.1.250

Step 3: Assign External IPs to Services

With MetalLB configured, you can now assign external IPs to your services by specifying the “loadBalancerIP” field in the service definition.

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
  - name: http
    port: 80
    targetPort: 80
  type: LoadBalancer
  loadBalancerIP: 192.168.1.245

Step 4: Verify the Installation

To verify that MetalLB is properly installed and configured, you can check the service’s external IP using the following command:

kubectl get svc my-service

With these steps, you should now have MetalLB installed and configured on your self-managed Kubernetes cluster. This will allow you to assign external IPs to your services and provide load balancing for them. It’s important to note that the IP range used in this article is for demonstration purposes only, you should use an appropriate IP range for your cluster.

Leave a Comment