一、概述
随着数据中心网络技术的革新,并伴随容器的落地,如何在数据中心内部构建一个合理可用的网络架构,以满足不同形态的业务部署模式,成为网络从业人员越来越需要注重和考虑的方向。

二、业务背景
针对互联网数据中心,通常会越来越多的看到容器(k8s)作为业务/服务的载体,各业务/服务间(pod间)彼此调用,形成容器集群内的微观网络以及容器网络与外部网络的交互网络。
以下从pod间调用、容器网络选型、容器网络架构、网络隔离几个方面进行阐述。

三、pod间调用

  1. 同一node内pod间调用
    数据中心如何实现传统网络与容器网络的架构共存
    ①pod(可理解为终端)间通过容器网络纯内部交互,交互行为发生在微观的容器网络内部,此时外部网络无感知。
    ②pod间通过容器网络组件编织的容器网络彼此进行网络传递行为。
    ③在容器网络内部,全部pod默认互通,且知晓真实的pod ip。

  2. 不同node的pod间调用
    数据中心如何实现传统网络与容器网络的架构共存
    ①pod间需要经过容器网络→外部网络进行交互,交互过程需提前将pod ip或cluster ip暴露至外部网络,具体依据业务需求和网络模型而定。
    ②node间通过底层网络已实现网络互通,本地node知晓自身的全部pod,或者说了解本身的容器网络结构。
    ③node间需要将本地pod“宣告”至外部网络,以实现pod“可见性”。
    ④在向外暴露pod以何种方式时,与选取的容器网络组件有关。

四、容器网络选型
容器网络选型通常参照以下几点:

  1. 业务实现方式;
  2. 网络资源调配;
  3. 网络扩展及灵活性;
  4. 对底层物理网络的依赖度;
  5. 网络资源的收放要求;

开源容器网络组件按照网络覆盖类型大致可分为:overlay和underlay,underlay相比overlay在传输效率、部署实现及维护等方面更有优势(详细的各种容器网络组件横向比较,可自行查询学习,此处不详细展开)。
以calico为例,作为underlay的容器网络解决方案,依靠动态路由协议bgp实现网络互通,并通过原生的network policy解决容器间网络隔离。
calico介绍:

  1. felix: calico agent,运行在每个node节点上,负责配置各节点路由及 ACL信息来确保每个pod的连通状态;
  2. etcd: 分布式键值存储,负责保存所有node节点的网络状态信息,如:路有前缀信息、分发node节点信息、路径属性信息等;
  3. bird: 负责把路由信息分发到当前calico网络,确保node间通信的有效性;
  4. 简单理解,calico可视作运行在node节点上的一个只有bgp功能的路由器(详细的calico介绍,可参见calico官网:https://www.projectcalico.org
  5. calico支持e/ibgp邻接关系,支持next-hop-self/next-hop-unchanged,建议优化bgp timer,开启graceful restart功能;
    注:在外部网络的架构上,我们以当前数据中心流行的clos架构为讨论前提,笔者所在的数据中心底层网络为“3-stage”clos架构,且tor-leaf-spine之间为ebgp关系,并多链路负载均衡。

五、容器网络架构
calico建议组网架构如下图:

  • BGP-RR落在master节点,集群内的其他node与RR建立iBGP,考虑到容器网络稳定性,建议RR数量≥2:
    数据中心如何实现传统网络与容器网络的架构共存

  • 集群全部节点与外部网络建立iBGP/eBGP:
    数据中心如何实现传统网络与容器网络的架构共存

上述两种组网架构,结合实际业务场景进行选择,但无论哪种结构,均需要做好网络资源的科学合理规划,包括但不限于:

  1. IP地址
  2. BGP邻接关系选择
  3. ASN规划
  4. 路由收放策略
  5. 容器网络与底层网络的隔离需求
  6. 横向扩展

备注:BGP在数据中心的设计与规划,有别于运营商,重在通过好的设计缩短网络故障时的“爆炸半径”,笔者这里推荐CUMULUS首席技术专家的一本COOKBOOK-「BGP in the Data Center

六、网络隔离
环境隔离,例如:生产环境和测试环境隔离,这里需要考虑:

  1. 以node为环境最小粒度——隔离策略部署在外部网络,可通过ACLs、VRF、Vxlan等;
  2. 以pod为环境最小粒度——通过calico原生的network policy进行隔离;

七、总结
当前数据中心随着虚拟化/容器等技术的引进,对网络结构提出更高、更精细的规划需求,底层网络的技术选取、架构模型将更多的影响虚拟/容器网络的落地成本、实施难易度,因此需要网络规划者要在前期介入时,了解业务发展方向、技术发展方向及成本、灵活性等因素。