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

本文根据博云在dockerone社区微信群分享内容整理


过去几年博云在企业中落地容器云平台遇到了很多痛点,其中一个比较典型的痛点来自网络方面,今天很高兴跟大家聊聊这个话题并介绍下我们基于OVS自研的CNI插件——内部称之为fabric项目。


01

容器平台落地时网络方面的需求


从2013年左右Docker技术在开发者中流行起来,到如今kubernetes已经成为事实上的容器编排引擎,容器、微服务、DevOps互相支持互相促进,容器云平台的实际落地案例开始越来越多。特别是2018年以来,越来越多的企业开始思考如何利用容器云平台支持其生产场景最终提高生产效率。


不同于开发测试场景,生产场景上线一套平台或系统要求会严格很多。安全、监控、流程、现有系统集成、业务暴露等等的建设要求都要匹配上,否则不可能上线。在这个过程中,特别是在传统的金融类企业对监管要求严格的情况下,容器云平台落地时会碰到很多问题,这其中,最典型的一个需求就是容器云平台的网络建设,必须同时满足业务方,运维人员,安全人员,网络人员的诉求。


现在容器云平台大部分都是基于Kubernetes构建,市面上的CNI插件也非常多,各个企业现网的需求也有很大的不同,所以几乎不可能出现一种网络模型适配所有客户场景的情况。现在主流的比较成熟稳定的CNI比如calico在扩展性、稳定性等方面表现优秀,但在传统金融类企业落地时非常困难,经常需要对不同的需求做出妥协。


我们和多家客户进行了深入沟通,虽然需求有所差异,但总结下来主要的诉求包括:

  • 在主流的二层组网的数据中心中,受限于硬件能力或管理复杂度,大部分客户不希望引入BGP等三层路由概念。

  • 企业业务系统往往会在容器云平台内外同时同时部署,希望平台内外网络能够直接打通。

  • IP地址是业务的身份识别,希望能够具备固定IP的能力,而且是可管理、可审计的IP地址。

  • 管理网络和数据网络分离。

  • 具备网络隔离能力,硬件隔离的强安全性和软件隔离的灵活性都需要。

  • 网络模型应该尽量简单,易于掌控,易于调试。

  • 高性能,低抖动的网络吞吐能力。

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


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


我们对市面上主流的CNI插件进行了广泛的调研后,发现主流的CNI对以上“国产化”的需求的支持并不理想,主要的不满足点包括:


  • 网络模型差异(三层VS二层,当然L2的方案也很多,OVS有流表等等高级功能,非常适合当今云化的环境),要适配现网环境、安全策略等。


  • 云原生理念。主流的CNI较好的满足了云原生的概念,但客户的实际需求中其实是有些“anti-cloudnative”的,如何在cloudnative和anti-cloudnative之间做到平衡其实普遍缺少实践经验。


  • 简单稳定可靠。这其实是非常重要的要考虑的点,厂商、企业都要有相应的人员能够掌控网络模型,毕竟网络作为云平台的底层,出现问题后影响太大。


我们针对网络建设的核心需求及社区现状综合分析之后,决定启动beyondFabric项目,目前该项目已经作为博云容器云平台重点支持的两个网络模型(calico/beyondFabric)之一,支撑了多家企业的生产系统的稳定运行。


02

BeyondFabric


BeyondFabric是我们自研的kubernetes CNI插件,利用etcd作为其数据存储单元,内置完善的IPAM能力,能够很好的满足前面提到的客户的核心诉求。因为BeyondFabric是基于二层网络设计的,同时针对特定需求做了很多优化,所以其在一部分场景下(特别是国内高度重视安全的金融类企业数据中心中)表现良好;但同时也决定了BeyondFabric不能适合于所有的场景,具体选择哪种CNI还是要根据自身情况作出评估。(实际上没有任何一种CNI能满足所有的场景需求。)


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

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