背景

从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. 05爬虫-requests模块基础(2)

    今日重点: 1.代理服务器的设置 2.模拟登陆过验证码(静态验证码) 3.cookie与session 4.线程池 1.代理服务器的设置 有时候使用同一个IP去爬取同一个网站,久了之后会被该网站服务器 ...

  2. JeeSite | 保存信息修改记录

    需求点 在很多场景中信息是不能轻易被修改的,修改时要么需要具备权限,要么需要审批,但是无论是哪种方式,修改前后的数据都是需要留有“案底”的,也就是说关键的信息被修改后是有修改记录的,一般修改记录会记录 ...

  3. 三、动态SQL

    动态SQL MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. 动态SQL的元素 元素 作用 备注 if 判断语句 单条件分支判断 choose.whe ...

  4. jQuery 源码分析(十七) 事件系统模块 实例方法和便捷方法 详解

    实例方法和便捷方法是指jQuery可以直接通过链接操作的方法,是通过调用$.event上的方法(上一节介绍的底层方法)来实现的,常用的如下: on(types,selector,data,fn,one ...

  5. commonDispatchException 函数的逆向

    看书中给出的内容: 1:在栈中构建 EXCEPTION_RECORD 结构体 2. 根据函数传递参数逆推得到 "判断先前模式"的反汇编代码

  6. 2018-8-10-win10-uwp-进度条-Marquez-

    原文:2018-8-10-win10-uwp-进度条-Marquez- title author date CreateTime categories win10 uwp 进度条 Marquez li ...

  7. PHP面试题2019年滴滴出行工程师面试题及答案解析

    一.单选题(共30题,每题5分) 1.下列关于PHP垃圾回收的说法,错误的是? A.开启/关闭垃圾回收机制可以通过修改php配置实现 B.可以在程序中使用gc_enable() 和 gc_disabl ...

  8. JavaWeb之Fliter & Listener

    Fliter & Listener Listener 监听器 作用 监听某一事件的发生.状态的改变. 监听器内部实现机制 接口回调 接口回调 A在执行循环,当循环到5的时候, 通知B. 事先先 ...

  9. 从《华为的冬天》到AI的冬天 | 甲子光年

    知难不难,惶者生存. 作者 | DougLong 编辑 | 火柴Q.甲小姐 *本文为甲子光年专栏作家DougLong独家稿件.作者为AI从业者.Gary Marcus<Rebooting AI& ...

  10. Android开发当中的JavaBean实现

    一般我们在Android开发当中如果会对一些数据类进行解析,那么则需要写出一个JavaBean的类,比如在进行json解析的时候,就需要使用这个类进行数据的处理,下面是我们的JavaBean的模板代码 ...