标题: MetalLB Load Balancer [打印本页] 作者: 王海鱼 时间: 2024-3-2 19:45 标题: MetalLB Load Balancer 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
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
[/code]apiVersion: v1kind: Podmetadata: name: nginx labels: app: nginxspec: containers: - name: nginx image: nginx:1.18.0---apiVersion: v1kind: Servicemetadata: name: nginxspec: type: LoadBalancer ports: - port: 80 targetPort: 80 selector: app: nginxService '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
[code]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.