MetalLB is a load-balancer implementation for bare metal Kubernetes clusters, using standard routing protocols. This integration is recommended for the on-prem cloud(s) and will help external service(s) get an IP address when the service type is set as LoadBalancer.

MetalLB Pack Working Details:

  • The address set in pack values goes into a configMap config in metallb-system namespace. This configMap is used by the MetalLB controller and speakers as volume mounts.

  • Any changes to the address will get updated in the configMap. Our users may confirm this with this command:

    kubectl describe cm config -n metallb-system.
  • However, the controller and speaker pods are already running with a previous copy of the configMap and these deployments are not aware of the new changes made to configMap. To ensure the address change are reflected, we need to restart the controller and speaker pods so that they will fetch the new configMap and start assigning new addresses correctly.

  • Run the following commands, which will help restart the controller and speaker:

    kubectl rollout restart deploy controller -n metallb-system
    kubectl rollout restart ds speaker -n metallb-system

Versions Supported

  • 0.11.0


  • MetalLB controller.
  • Speaker (runs on all nodes, deployed as DaemonSet).