OpenELB 是一款适用于物理机部署Kubernetes的负载均衡器,该负载均衡器使用物理交换机实现,利用BGP和ECMP从而达到性能最优和高可用性。我们知道在云上部署的Kubernetes环境下,通常云服务厂商会提供cloudLB插件暴露Kubernetes服务到外网,但在物理机部署环境下由于没有云环境,服务暴露给外网非常不方便,Porter是一个提供用户在物理环境暴露服务和在云上暴露服务一致性体验的插件。该插件提供两大功能模块:LBcontroller和agent:controller负责同步BGP路由到物理交换机;agent以DaemonSet方式部署到节点上负责维护引流规则;EIPservice,包括EIPpool管理和EIPcontroller,controller会负责更新服务的EIP信息。OpenELB是 KubeSphere 的一个子项目。物理部署架构下图是物理部署架构图,假设有一个服务部署在node1(192.168.0.2)和node2(192.168.0.6)上,需要通过公网IP1.1.1.1访问该服务,服务部署人员按照示例部署该服务后,Porter会自动同步路由信息到leaf交换机,进而同步到spine,border交换机,互联网用户就可以通过EIP1.1.1.1直接访问该服务了。插件部署架构插件通过一个Manager监控集群中的Service的变化,广播相关路由。同时集群中所有节点都部署有一个Agent,每当有一个EIP被使用时,就会在主机上添加一条主机路由规则,将发往这个EIP的IP报文引流到本地。插件逻辑该插件以服务的形式部署在Kubernetes集群中时,会与集群的边界路由器(三层交换机)建立BGP连接。每当集群中创建了带有特定注记(一个annotation为lb.kubesphere.io/v1apha1:porter,见示例)的服务时,就会为该服务动态分配EIP(用户也可以自己指定EIP),LBcontroller创建路由,并通过BGP将路由传导到公网(私网)中,使得外部能够访问这个服务。OpenELBcontroller是基于 Kubernetescontrollerruntime 实现的customcontroller,通过watchservice的变化自动变更路由信息。部署插件在物理部署的K8s集群上部署在青云上用模拟路由器的方式测试从代码构建新的插件软件需求go1.11,插件使用了 gobgp 创建BGP服务端,gobgp需要go1.11docker,无版本限制kustomize,插件使用了 kustomize 动态生成集群所需的k8syaml文件如果插件会推送到远端私有仓库,需要提前执行 dockerlogin步骤gitclonehttps://github.com/kubesphere/porter.git,进入代码目录按照上面教程的要求修改config.toml(位于 config/bgp/ 下)(optional)根据自己需要修改代码(optional)根据自己的需求修改镜像的参数(位于 config/manager 下)(optional)按照模拟教程部署一个Bird主机,修改hack/test.sh中的BirdIP,然后运行makee2e-test进行e2e测试修改Makefile中的IMG名称,然后 makerelease,最终的yaml文件在 deploy 目录下kubectlapply-fdeploy/release.yaml 部署插件开源许可OpenELB islicensedundertheApacheLicense,Version2.0.See LICENSE forthefulllicensetext.声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论