Akemi

使用OpenELB创建私有云LB service

2025/09/17

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
CATALOG