MetalLB hooks into your Kubernetes cluster, and provides a network load-balancer implementation. In short, it allows you to create Kubernetes services of type LoadBalancer
in clusters that don’t run on a cloud provider, and thus cannot simply hook into paid products to provide load balancers.
Installation
There are multiple ways to install MetalLB, for example
Through manifest
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.12/config/manifests/metallb-native.yaml
or Helm
helm repo add metallb https://metallb.github.io/metallb helm install metallb metallb/metallb
The related service, deployment, and pods are in the newly created namespace 'metallb-system'
'IPAddressPool' defines the IP address range that will be allocated to 'LoadBalancer' type service. The pool of IPs must be dedicated to MetalLB's use. You can't reuse for example the Kubernetes node IPs or IPs controlled by other services.
MetalLB supports two types of traffic policies, Layer2 and BGP. In summary, Layer 2 focuses on local network communication, while BGP handles routing between different networks and plays a critical role in global Internet connectivity.
apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: first-pool namespace: metallb-system spec: addresses: - 192.168.9.10-192.168.9.20 --- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: example namespace: metallb-system spec: ipAddressPools: - first-pool
Example
Service 'nginx' will be allocated with an external-ip in 192.168.9.10-192.168.9.20 defined in IPAddressPool first-pool above, check the assigned external-ip with the command below
kubectl get service/nginx
MetalLB supports metallb.universe.tf/loadBalancerIPs
annotation to set up service with a specific address.
apiVersion: v1 kind: Service metadata: name: nginx annotations: metallb.universe.tf/loadBalancerIPs: 192.168.9.35 spec: type: LoadBalancer ports: - port: 80 targetPort: 80 selector: app: nginx
MetalLB also supports requesting a specific address pool, when you have multiple pools, for example, one for production public IPs, and one for development private IPs.文章来源:https://www.toymoban.com/news/detail-760523.html
apiVersion: v1 kind: Service metadata: name: nginx annotations: metallb.universe.tf/address-pool: second-pool spec: type: LoadBalancer ports: - port: 80 targetPort: 80 selector: app: nginx
文章来源地址https://www.toymoban.com/news/detail-760523.html
到了这里,关于MetalLB Load Balancer的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!