K8S 部署 openelp (二层模式)
环境
| IP | 角色 | 操作系统 |
|---|---|---|
| 172.16.16.108 | k8s-master-1 | CentOS Linux release 7.8.2003 (Core) |
| 172.16.16.109 | k8s-node-1 | CentOS Linux release 7.8.2003 (Core) |
| 172.16.16.110 | k8s-node-2 | CentOS Linux release 7.8.2003 (Core) |
| 172.16.16.119 | client | CentOS Linux release 7.8.2003 (Core) |
部署 openelb
# 添加 helm 源
helm repo add openelb https://openelb.github.io/openelb
helm repo update openelb
# 下载配置
mkdir -p /data/yaml/openelb-system/openelb
cd /data/yaml/openelb-system/openelb
helm search repo openelb
helm pull openelb/openelb
tar zxvf openelb-0.6.1.tgz
# 修改镜像
vi my-values.yaml
global:
imageRegistry: docker.rainbond.cc
# 创建命名空间
kubectl create ns openelb-system
# 部署
helm -n openelb-system install -f my-values.yaml openelb ./openelb
# 检查
kubectl -n openelb-system get pod
在二层模式下使用 OpenELB
- 要求客户端机器需要与Kubernetes集群节点在同一个网络上。
- 第二层模式要求的基础设施环境允许匿名ARP/NDP报文。如果OpenELB安装在基于云的Kubernetes集群中进行测试,您需要与云供应商确认是否允许匿名ARP/NDP报文。否则不能使用二层模式。
# 检查 openelb 是否启用了二层模式
kubectl edit ds -n openelb-system openelb-speaker
# 把 enable-layer2 参数设置成 true 并保存退出,openelb-speaker 服务会自动重启。
containers:
- command:
- openelb-speaker
args:
- --api-hosts=:50051
- --enable-layer2=true
... ...
# 为kube-proxy启用strictARP
kubectl edit configmap kube-proxy -n kube-system
# 在 kube-proxy ConfigMap YAML配置中,将 data.config.conf.ipvs.strictARP 设置为 true。
ipvs:
strictARP: true
# 执行以下命令重启 kube-proxy
kubectl rollout restart daemonset kube-proxy -n kube-system
# 创建Eip对象
cd /data/yaml/openelb-system/openelb
cat >> layer2-eip.yaml << EOF
apiVersion: network.kubesphere.io/v1alpha2
kind: Eip
metadata:
name: layer2-eip
spec:
address: 172.16.16.200-172.16.16.222
interface: ens33
protocol: layer2
EOF
kubectl apply -f layer2-eip.yaml
# 测试,我这边以 apisix 的 gateway 进行测试
cd /data/yaml/apisix/apisix
cat >> svc-gateway-eip.yaml << EOF
apiVersion: v1
kind: Service
metadata:
name: apisix-gateway-eip
namespace: apisix
annotations:
lb.kubesphere.io/v1alpha1: openelb
eip.openelb.kubesphere.io/v1alpha2: layer2-eip
spec:
ports:
- name: apisix-gateway
port: 80
protocol: TCP
targetPort: 9080
- name: apisix-gateway-tls
port: 443
protocol: TCP
targetPort: 9443
selector:
app.kubernetes.io/instance: apisix
app.kubernetes.io/name: apisix
type: LoadBalancer
EOF
kubectl apply -f svc-gateway-eip.yaml

使用浏览器访问 http://172.16.16.200

参考
https://openelb.io/docs/getting-started/installation/install-openelb-on-kubernetes/#install-openelb-using-helm
https://openelb.io/docs/getting-started/usage/use-openelb-in-layer-2-mode/

浙公网安备 33010602011771号