背景

从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. laravel使用Dingo\Api通过response()->json()返回空对象

    laravel使用Dingo\Api写接口跟android对接时,android一直反应解析错误,无法解析数据. { "status_code":200, "messag ...

  2. WPF 使用EventTrigger时设置SouceName技巧

    使用情节触发器时,如果有触发源/触发源控件时可以将情节触发器放置最顶级的面板控件的触发器中. 通过blend这个神器真的是可以学到不少东西. 代码: //情节动画放置于顶级控制面板 <Widno ...

  3. GitHub 2019年年度报告:Python最受欢迎,VScode贡献者高达19.1K

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 开源最前线(ID:OpenSourceTop) PS:如有需要Pyt ...

  4. maven新建项目的几种方式和启动

    方式一: 第1步:转到 New 菜单 Other.. -> Maven -> Maven Project ,然后单击 Next .如下图所示 - 第2步:在New Maven Projec ...

  5. Zipkin架构简介

    Zipkin基本概念 Span:基本工作单元,一次链路调用就会创建一个Span Trace:一组Span的集合,表示一条调用链路.举个例子:当前存在服务A调用服务B然后调用服务C,这个A->B- ...

  6. Linux域名服务DNS

    什么是 DNS DNS 全称是 Domain Name System,大意是域名解析系统,它的职责是把域名翻译成一个一个可以识别的 IP 供不同的计算机设备连接. linux 有关 DNS 解析的配置 ...

  7. SAP HUMO VLMOVE不支持E库存发货到成本中心

    SAP HUMO VLMOVE不支持E库存发货到成本中心 如下HU 194810300235,里面物料的库存是E库存, 执行VLMOVE,试图将该HU整托发货到成本中心, 输入成本中心后,点击按钮'P ...

  8. ctr预估论文梳理和个人理解

    问题描述 ctr的全称是click through rate,就是预估用户的点击率,可以用于推荐系统的ranking阶段.ctr预估可以理解为给用户的特征.item的特征以及context的特征(比如 ...

  9. rocksdb和leveldb性能比较——写性能

    前面学习了一下rocksdb,这个db是对leveldb的一个改进,是基于leveldb1.5的版本上的改进,而且leveldb1.5以后也在不断的优化,下面从写入性能对两者进行对比. 前言 比较的l ...

  10. docker安装执行问题

    ubuntu14.04上安装docker问题: sudo apt-get update curl -fsSL https://get.docker.com -o get-docker.sh sh ge ...