OpenELB是国内青云开源的一个负载均衡器,也是CNCF的沙箱项目,其实和MetalLB
但相比于MetalLB,OpenELB更适合生产环境
支持功能
- BGP/Layer2两种模式的负载均衡
 
- 基于路由器ECMP的负载均衡
 
- IP地址池管理
 
- 使用CRD进行BGP配置
 
直接部署
Installation | OpenELB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
   | 搞个最新版的 wget https://raw.githubusercontent.com/openelb/openelb/master/deploy/openelb.yaml kubectl apply -f openelb.yaml
  kubectl get pods -n openelb-system NAME                                  READY   STATUS      RESTARTS   AGE openelb-admission-create-kzzxk        0/1     Completed   0          7m51s openelb-admission-patch-rndlh         0/1     Completed   1          7m51s openelb-controller-84b6c9b4d8-xfg2x   1/1     Running     0          3m27s openelb-speaker-8pb47                 1/1     Running     0          3m27s openelb-speaker-h65dd                 1/1     Running     0          2m45s openelb-speaker-lzs99                 1/1     Running     0          2m33s openelb-speaker-nc2dh                 1/1     Running     0          3m8s openelb-speaker-nt2tw                 1/1     Running     0          2m57s openelb-speaker-zcgsj                 1/1     Running     0          2m21s
  创建地址池 cat > eip.yaml <<EOF apiVersion: network.kubesphere.io/v1alpha2 kind: Eip metadata:   name: eip-pool   namespace: openelb-system spec:   address: 10.163.2.200-10.163.2.220   protocol: layer2   disable: false   interface: eth0 EOF kubectl apply -f eip.yaml
  kubectl -n openelb-system get eip NAME       CIDR                        USAGE   TOTAL eip-pool   10.163.2.200-10.163.2.220           21
   | 
 
测试OpenELB
创建service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   | kubectl create deployment nginx --image=nginx:alpine kubectl expose deployment nginx --port=80 --target-port=80
  cat > nginx-svc.yaml <<EOF apiVersion: v1 kind: Service metadata:   name: nginx-svc   annotations:     lb.kubesphere.io/v1alpha1: openelb     protocol.openelb.kubesphere.io/v1alpha1: layer2     eip.openelb.kubesphere.io/v1alpha2: eip-pool spec:   type: LoadBalancer   ports:   - port: 80     targetPort: 80   selector:     app: nginx EOF kubectl apply -f nginx-svc.yaml
  kubectl get svc nginx-svc                   LoadBalancer   10.233.32.27   10.163.2.200   80:30582/TCP   15m
   |