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
|