PorterLB 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
PorterLB 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
PorterLB 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
PorterLB 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
PorterLB 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

PorterLB 是一款适用于物理机部署 Kubernetes 的负载均衡器,该负载均衡器使用物理交换机实现,利用 BGP 和 ECMP 从而达到性能最优和高可用性。我们知道在云上部署的 Kubernetes 环境下,通常云服务厂商会提供 cloud LB 插件暴露 Kubernetes 服务到外网,但在物理机部署环境下由于没有云环境,服务暴露给外网非常不方便,Porter 是一个提供用户在物理环境暴露服务和在云上暴露服务一致性体验的插件。该插件提供两大功能模块:

  1. LB controller 和 agent: controller 负责同步 BGP 路由到物理交换机;agent 以 DaemonSet 方式部署到节点上负责维护引流规则;
  2. EIP service,包括 EIP pool 管理和 EIP controller,controller 会负责更新服务的 EIP 信息。

PorterLB 是 KubeSphere 的一个子项目。

物理部署架构

下图是物理部署架构图,假设有一个服务部署在 node1 (192.168.0.2) 和 node2 (192.168.0.6) 上,需要通过公网 IP 1.1.1.1 访问该服务,服务部署人员按照示例部署该服务后,Porter 会自动同步路由信息到 leaf 交换机,进而同步到 spine,border 交换机,互联网用户就可以通过 EIP 1.1.1.1 直接访问该服务了。

node architecture

插件部署架构

插件通过一个Manager监控集群中的Service的变化,广播相关路由。同时集群中所有节点都部署有一个Agent,每当有一个EIP被使用时,就会在主机上添加一条主机路由规则,将发往这个EIP的IP报文引流到本地。

porter deployment

插件逻辑

该插件以服务的形式部署在 Kubernetes 集群中时,会与集群的边界路由器(三层交换机)建立 BGP 连接。每当集群中创建了带有特定注记(一个 annotation 为 lb.kubesphere.io/v1apha1: porter,见示例)的服务时,就会为该服务动态分配 EIP (用户也可以自己指定 EIP),LB controller 创建路由,并通过 BGP 将路由传导到公网(私网)中,使得外部能够访问这个服务。

Porter LB controller 是基于 Kubernetes controller runtime 实现的 custom controller,通过 watch service 的变化自动变更路由信息。

porter architecture

部署插件

  1. 在物理部署的 k8s 集群上部署
  2. 在青云上用模拟路由器的方式测试

从代码构建新的插件

软件需求

  1. go 1.11,插件使用了 gobgp 创建 BGP 服务端,gobgp 需要 go 1.11
  2. docker,无版本限制
  3. kustomize,插件使用了 kustomize 动态生成集群所需的 k8s yaml 文件
  4. 如果插件会推送到远端私有仓库,需要提前执行 docker login

步骤

  1. git clone https://github.com/kubesphere/porter.git, 进入代码目录
  2. 按照上面教程的要求修改 config.toml (位于 config/bgp/ 下)
  3. (optional)根据自己需要修改代码
  4. (optional)根据自己的需求修改镜像的参数(位于 config/manager 下)
  5. (optional)按照模拟教程部署一个Bird主机,修改hack/test.sh中的BirdIP,然后运行make e2e-test进行e2e测试
  6. 修改 Makefile中 的 IMG 名称,然后 make release,最终的 yaml 文件在 deploy 目录下
  7. kubectl apply -f deploy/release.yaml 部署插件

开源许可

Porter is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表于云计算专区
2020/11/25 11:11

【网研会邀请】使用PorterLB和KubeSphere在物理机K8s轻松暴露服务

日期和时间:2020年12月2日(周三)上午10点(时区:北京) 题目:使用 PorterLB 和 KubeSphere 在物理机 Kubernetes 轻松暴露服务 讲者: 段炯 青云 QingCloud 高级容器网络研发工程师 个人简介:段炯是青云 QingCloud 的一名高级容器网络研发工程师,他是开源项目 PorterLB 和 KubeSphere 核心维护者,也是 Kubernetes 和 OpenStack 网络领域的专家,他参与设计了 KubeSphere 容器平台的 Network Policy 相关功能。 本次网络研...

0
0
发表于云计算专区
2020/11/30 23:35

CNCF 网研会:使用PorterLB和KubeSphere在物理机K8s轻松暴露服务

❝ 12 月 19 日,KubeSphere 开源社区联合 CNCF 将在北京举办一场年度的云原生 Meetup,聚焦用户落地实践的干货分享,以及现场动手实践的 Workshop 和即兴主题演讲,现场有来自 AWS、中通、微众银行的多位重量级讲师进行分享,欢迎大家扫描上方二维码免费报名 Meetup!❞ 分享人介绍 段炯 —— KubeSphere 容器平台容器网络研发工程师 个人简介:段炯是青云 QingCloud 的一名高级容器网络研发工程师,他是开源项目 PorterLB 和 ...

0
0
发表于云计算专区
2020/11/30 06:48

【周三网研会邀请】使用PorterLB和KubeSphere在物理机K8s轻松暴露服务

:来贡献几分钟提交:2020年CNCF中国云原生问卷 问卷链接(https://www.wjx.cn/jq/97146486.aspx) 日期和时间:2020年12月2日(周三)上午10点(时区:北京) 题目:使用 PorterLB 和 KubeSphere 在物理机 Kubernetes 轻松暴露服务 讲者: 段炯 青云 QingCloud 高级容器网络研发工程师 个人简介:段炯是青云 QingCloud 的一名高级容器网络研发工程师,他是开源项目 PorterLB 和 KubeSphere 核心维护者,也是 Kubernetes 和 Op...

0
0
发表于云计算专区
2020/11/28 06:48

CNCF Weekly 20-48

:来贡献几分钟提交:2020年CNCF中国云原生问卷 问卷链接(https://www.wjx.cn/jq/97146486.aspx) CloudNative Days China 2020北京站|云原生边缘计算专场强势来袭 本次北京站Meetup联合KubeEdge社区带来云原生边缘计算专场,诚邀您一起探讨云原生边缘计算技术与落地实践!时间:11月28日(周六)13:00-18:00。地点:北京8KM COFFEE(望京店)。 云原生社区 meetup 上海站 本次 meetup 分别请到了来自 Tetrate、UCloud、PingC...

0
0
发表于开源治理专区
2020/12/12 06:48

CNCF Weekly 20-50

:你填了吗?2020年CNCF中国云原生问卷 问卷链接(https://www.wjx.cn/jq/97146486.aspx) 云原生社区年度盛会重磅来袭! 一场来自CNCF、VMware、PingCAP、网易数帆等重磅演讲嘉宾集结的云原生领域盛会—“2020云原生生态大会”即将开幕。诚挚邀请您届时参会!12月16-17日(周三、四)线上直播。 12.19 相约北京!云原生 Meetup | KubeSphere & Friends 2020 为了跟社区朋友们零距离交流,12 月 19 日(星期六),KubeSphere 社...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
3 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部