OpeELB 是一款适用于物理机部署Kuberetes的负载均衡器,该负载均衡器使用物理交换机实现,利用BGP和ECMP从而达到性能最优和高可用性。我们知道在云上部署的Kuberetes环境下,通常云服务厂商会提供cloudLB插件暴露Kuberetes服务到外网,但在物理机部署环境下由于没有云环境,服务暴露给外网非常不方便,Porter是一个提供用户在物理环境暴露服务和在云上暴露服务一致性体验的插件。该插件提供两大功能模块:
LBcotroller和aget:cotroller负责同步BGP路由到物理交换机;aget以DaemoSet方式部署到节点上负责维护引流规则;EIPservice,包括EIPpool管理和EIPcotroller,cotroller会负责更新服务的EIP信息。OpeELB是 KubeSphere 的一个子项目。物理部署架构下图是物理部署架构图,假设有一个服务部署在ode1(192.168.0.2)和ode2(192.168.0.6)上,需要通过公网IP1.1.1.1访问该服务,服务部署人员按照示例部署该服务后,Porter会自动同步路由信息到leaf交换机,进而同步到spie,border交换机,互联网用户就可以通过EIP1.1.1.1直接访问该服务了。插件部署架构插件通过一个Maager监控集群中的Service的变化,广播相关路由。同时集群中所有节点都部署有一个Aget,每当有一个EIP被使用时,就会在主机上添加一条主机路由规则,将发往这个EIP的IP报文引流到本地。插件逻辑该插件以服务的形式部署在Kuberetes集群中时,会与集群的边界路由器(三层交换机)建立BGP连接。每当集群中创建了带有特定注记(一个aotatio为lb.kubesphere.io/v1apha1:porter,见示例)的服务时,就会为该服务动态分配EIP(用户也可以自己指定EIP),LBcotroller创建路由,并通过BGP将路由传导到公网(私网)中,使得外部能够访问这个服务。OpeELBcotroller是基于 Kuberetescotrollerrutime 实现的customcotroller,通过watchservice的变化自动变更路由信息。部署插件在物理部署的K8s集群上部署在青云上用模拟路由器的方式测试从代码构建新的插件软件需求go1.11,插件使用了 gobgp 创建BGP服务端,gobgp需要go1.11docker,无版本限制kustomize,插件使用了 kustomize 动态生成集群所需的k8syaml文件如果插件会推送到远端私有仓库,需要提前执行 dockerlogi步骤gitcloehttps://github.com/kubesphere/porter.git,进入代码目录按照上面教程的要求修改cofig.toml(位于 cofig/bgp/ 下)(optioal)根据自己需要修改代码(optioal)根据自己的需求修改镜像的参数(位于 cofig/maager 下)(optioal)按照模拟教程部署一个Bird主机,修改hack/test.sh中的BirdIP,然后运行makee2e-test进行e2e测试修改Makefile中的IMG名称,然后 makerelease,最终的yaml文件在 deploy 目录下kubectlapply-fdeploy/release.yaml 部署插件开源许可OpeELB islicesedudertheApacheLicese,Versio2.0.See LICENSE forthefulllicesetext.点击空白处退出提示
评论