背景

从2015年开始,博云开始基于Kubernetes和容器帮助客户交付应用管理平台。在开始阶段,博云选择了业界使用度非常广泛且成熟稳定的calico作为默认的网络方案并在calico方面积累了大量生产实践经验。随着容器云平台的落地越来越多,关于容器云平台网络部分的建设要求也越来越高,我们和多家客户进行了深入沟通,虽然需求有所差异,但总结下来主要的诉求包括:

  • 从运维管理角度,更倾向于采用二层网络模型:在主流的二层组网的数据中心中,受限于硬件能力、运维人员的能力和管理复杂度等需求,大部分客户不希望引入BGP等三层路由概念,希望采用大部分运维人员比较熟悉的二层网络方案。

  • 希望容器云内部网络与外部网络互联互通:业务应用往往会在容器云平台内外同时部署,希望平台内外网络能够直接打通,POD与虚拟机/物理机同等地位,也更有利于与已有的云产品无缝整合。

  • 需要支持Pod固定IP地址:应用互访跨防火墙的等场景下,需要POD具备固定IP地址。此需求集中出现在应用实例访问另一个业务分区的防火墙的场景下。

  • 需要管理网络和业务网络分离

  • IPV6支持

  • 高性能,低抖动

  • 灵活的网络隔离:包括强安全性的硬件隔离和灵活的软件隔离。

  • 希望一套网络模型同时支持Underlay和Overlay:Underlay性能好,可以内外网互通;Overlay不依赖底层网络,灵活性强,最好可以同时支持。

  • 希望网络模型应该尽量简单,易于运维管理和调试。

  • 其他的高级特性,如双向限速、DPDK支持等。

博云容器云团队对市面上主流的CNI插件进行了广泛的调研后,发现主流的CNI插件对以上需求的支持并不理想,难以同时满足如上的网络需求,集中体现在内外网互通、管理业务网络分离、灵活的网络隔离机制、易于运维管理和调试等问题上。

我们针对网络建设的核心需求及社区现状综合分析之后,于18年启动基于OVS深度自研的容器网络插件BeyondFabric项目,目前该插件已经作为博云容器云平台重点支持的两个网络模型(calico/BeyondFabric)之一,作为博云容器网络的默认插件,支撑了多家企业的生产系统的长时间的稳定运行

二层网络模型技术对比

得益于CNI规范的简单性(相对于IETF的各种RFC),现在CNI插件的各种实现可以说是百花齐放。网络上对多种CNI的比较也是层出不穷,这里就不一一列举了。因为我们在选型阶段主要考虑二层网络模型(calico已经是非常优秀的三层解决方案了),所以我们主要对二层网络的基本单元进行了比较,因为bridge能力过于简单,所以主要是ovs和macvlan的比较,同时为了对比方便,也引入了calico进行比照。

从表中可以看出,macvlan目前问题较多,可能是由于这个方案比较小众,很多bug或者增强的PullRequest较少,因此我们在做选型时就选择基于OVS的方案。在选择了OVS方案之后,为了支持上述的多种网络需求,我们基于OVS进行了深度自研增强,并将此CNI网络插件命名为BeyondFabric。

BeyondFabric

BeyondFabric是博云基于OVS深度自研的完全满足CNI标准的kubernetes容器网络插件,利用etcd作为其数据存储单元,内置完善的IPAM能力,能够很好的满足第一章节中提到的客户的核心诉求。

1. BeyondFabric示意图

从fabric的概念图中可以一目了然的看清楚云平台的网络拓扑,不论是网络管理人员还是业务人员都可以简单清晰的了解到网络的拓扑情况。而且在这种简化的部署模型中(同时也是使用度最广的模型)不包括控制器等复杂逻辑,提供了简单、高效、稳定的网络环境。

除了网络模型之外,图中出现的分区概念,也是博云容器云平台结合多个客户的实际使用场景,在大量生产实践中总结演化出的概念,主要面对企业多种网络业务分区以及特定业务独占Node资源的需求,后续会专门撰文介绍。分区结合网络模型,更好的体现出了客户数据中心的网络隔离的现状,是对容器云平台实际落地的又一个重要支撑

2. BeyondFabric主要功能列表

  • 同时支持VLAN(Underlay)和VXLAN(Overlay)模式

  • 支持内外网互通

  • 支持Pod固定IP地址

  • 支持管理网络和业务网络分离

  • 支持IPV6

  • 高性能:网络性能接近物理网络

  • 支持Kubernetes NetworkPolicy对象,可实现灵活的网络隔离机制

  • 可以对网络进行可视化管理

  • 支持网络双向限速

  • 支持DPDK(即将发布)

3. BeyondFabric成熟度

  • 大量落地案例

博云容器云平台基于BeyondFabric已经有大量的落地案例,BeondFabric在可管理性、稳定性、性能等多个方面运行良好。

  • 通过kubernetes社区CNI测试套件测试
BeyondFabric完全满足CNI协议规范,我们的测试团队结合社区提供的工具和kubernetes job等网络测试套件对BeyondFabric进行了长时间的严格测试,测试结果证明BeyondFabric具备生产可用能力
  • 多种平台支持

私有云建设中,容器云平台一般运行在物理环境或vmware/openstack等虚拟化环境中。BeyondFabric对于这几种部署环境均能完善支持。对于网络环境复杂不易变更的场景下,BeyondFabric基于vxlan可以显著减少环境依赖。

4. BeyondFabric性能

BeyondFabric采用了稳定可靠的OVS作为其基本单元,所以从原理上讲其性能损耗应该是非常小的,我们在物理环境中基于万兆网络的性能测试也验证了这一点。

图中绿色的线表示物理节点间的带宽,可以作为本次测试的基线。蓝色和红色分别表示POD-POD和POD-NODE之间的带宽测试,可以看到与基线对比,其性能损失在3%以下。

5. 运维管理工具:fabric-admin

考虑到软硬件层面的异常情况,例如kubelet或beyondFabirc的bug,环境(硬件损坏)等均可能对系统的正常运行造成不同程度的影响,所以博云提供了一个fabric-admin的工具,位于/opt/cni/bin目录下,其作用类似于文件系统的FSCK能力,为BeyondFabric的运行时管理提供了有力保障。同时其命令行格式完全匹配kubectl,对熟悉kubernetes的用户非常友好。

例如可以查看pod的IP占用情况(示例输出已被截断):

同时,fabric-admin还提供了多种运行时管理能力支持,运行--help后可以提示:

如同FSCK是文件系统成熟的重要标志,fabric-admin是BeyondFabric项目成熟的有力保障!

总结

当下,网络是容器云平台落地的主要难点之一,BeyondFabric是博云为应对这一业界痛点提出的解决方案,它解决了企业类客户,特别是金融类对监管需求旺盛的客户在网络方面的很多痛点。同时BeyondFabric还在持续增强中,为企业落地容器云平台时网络方面的诉求提供更多的支持。

容器网络插件那么多,博云为什么基于OVS深度自研?的更多相关文章

  1. 干货 | 博云基于OVS自研容器网络插件在金融企业的落地实践

    本文根据博云在dockerone社区微信群分享内容整理 过去几年博云在企业中落地容器云平台遇到了很多痛点,其中一个比较典型的痛点来自网络方面,今天很高兴跟大家聊聊这个话题并介绍下我们基于OVS自研的C ...

  2. kubernetes 配置网络插件 flannel

    概述 在学习docker时知道docker有四种常用的网络模型 bridge:桥接式网络 joined:联盟式网络,共享使用另外一个容器的网络名称空间 opened:容器直接共享使用宿主机的网络名称空 ...

  3. Kubernetes 学习18配置网络插件flannel

    一.概述 1.我们在学习docker时知道docker有四种常用的网络模型 a.bridge:桥接式网络 b.joined:联盟式网络,共享使用另外一个容器的网络名称空间 b.opened:容器直接共 ...

  4. 灵雀云开源网络插件Kube-OVN 1.4.0 版发布!支持跨集群容器网络、NetworkPolicy 日志

    从 1.4 开始 Kube-OVN 支持将多个 Kubernetes 集群容器网络打通,不同集群之间的 Pod 可以通过 Pod IP 直接互相通信.本版本还支持 ACL 日志,可以记录因 Netwo ...

  5. 腾讯云容器服务 TKE 推出新一代零损耗容器网络

    随着容器技术的发展成熟,越来越多的组件迁移到容器,在技术迁移过程中,数据库,游戏,AI 这些组件对容器网络性能(时延,吞吐,稳定性)提出了更高的要求.为了得到更优的时延和吞吐表现,各大云厂商都在致力于 ...

  6. 腾讯云TKE-基于 Cilium 统一混合云容器网络(下)

    前言 在 腾讯云TKE - 基于 Cilium 统一混合云容器网络(上) 中,我们介绍 TKE 混合云的跨平面网络互通方案和 TKE 混合云 Overlay 网络方案.公有云 TKE 集群添加第三方 ...

  7. 灵雀云Kube-OVN进入CNCF沙箱,成为CNCF首个容器网络项目

    昨日,云原生计算基金会 (CNCF) 宣布由灵雀云开源的容器网络项目Kube-OVN 正式进入 CNCF 沙箱(Sandbox)托管.这是全球范围内首个被CNCF纳入托管的开源CNI网络项目,也是国内 ...

  8. 【Networking】容器网络大观 && SDN 资料汇总

    SDNLAB技术分享(十五):容器网络大观   SDNLAB君• 16-06-17 •2957 人围观 编者按:本文系SDNLAB技术分享系列,本次分享来自SDN撕X群(群主:大猫猫)群直播,我们希望 ...

  9. Docker: docker network 容器网络

    容器网络命令 : docker network --help 常用的是 docker network create/ls/rm/inspect 容器网络类型,一共有以下5种 bridge–net=br ...

随机推荐

  1. 拎壶学python3-----(1)输出与字符转换

    一.输入自己的名字打印 二.数字和字符串是不能相加的如下 怎么解决上边的问题呢? 如果是相加我们要把字符串转成数字类型如下 如果不想让他相加可以写成这样如下: ok,关于转换就先讲到这里

  2. app——升级测试点

    APP版本升级的测试点 该文章转载于:https://www.cnblogs.com/changpuyi/p/8618755.html   移动端版本更新升级是一个比较重要的功能点,主要分为强制更新和 ...

  3. windows 10使用vscode进行远程代码开发 | tutorial to use vscode for remote development using ssh on windows

    本文首发于个人博客https://kezunlin.me/post/c93b6ba6/,欢迎阅读最新内容! tutorial to use vscode for remote development ...

  4. Oracle - 截取指定日期的alert log

    工作中DBA经常会查看alert log来检查数据库后台都记录了些什么日志,如果只想看某一天或者某段时间范围的日志,能够把这些日志从大的alert log中截取下来放到一个单独的文件中,对于查看和下载 ...

  5. Python 爬取大众点评 50 页数据,最好吃的成都火锅竟是它!

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 胡萝卜酱 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...

  6. django中're_path'的用法

    1.re_path和path的作用是一样的.只不过're_path'是在写url的时候可以用正则表达式,功能更加强大.2.写正则表达式都推荐使用原生字符串.也就是以‘r’开头的字符串:r'move/' ...

  7. Dynamics CRM 客户端程序开发:自定义系统标准按钮的可用性

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复125或者20140414可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 一般是新建一个解决方案用于客制化 ...

  8. arcgis api for javascript 学习(五) 实现地图绘制工具

    1.本文实现的功能为鼠标与地图之间的交互,能够在地图上绘制不同形状的图形 2.代码部分主要讲到的为Graphic函数的相关功能 <!DOCTYPE html> <html> & ...

  9. AFNetworking遇到错误 Request failed: unacceptable content-type: text/html

    iOS 使用AFNetworking遇到错误 Request failed: unacceptable content-type: text/html 原因: 不可接受的内容类型 “text/html ...

  10. MySQL分组查询统计

    GROUP BY 1.有个店铺表,字段为区域id,设备数量,店铺名称,如下: 2.如何按区域 district 统计 每个区域的设备数量,SQL如下 SELECT district, SUM( dev ...