数据中心如何实现传统网络与容器网络的架构共存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据中心如何实现传统网络与容器网络的架构共存相关的知识,希望对你有一定的参考价值。
一、概述随着数据中心网络技术的革新,并伴随容器的落地,如何在数据中心内部构建一个合理可用的网络架构,以满足不同形态的业务部署模式,成为一个网络人员越来越需要注重和考虑的方向。
二、业务背景
在互联网公司的数据中心,通常你会越来越多的看到容器(k8s)作为业务/服务的载体,各业务/服务之间(pod间)彼此调用,以下从pod间调用、容器网络选型、容器网络架构、网络隔离几个方面进行阐述。
三、pod间调用
-
同一node内pod间调用
pod间通过容器网络纯内部交互,这时外部网络无感知。 - 不通node的pod间调用
pod间需要经过容器网络→外部网络进行交互,交互过程可提前将pod ip或cluster ip暴露到外网,具体依据业务需求和网络模型而定。
四、容器网络选型
容器网络选型通常参照以下几点:
- 业务实现方式;
- 网络资源调配;
- 网络扩展及灵活性;
- 对底层物理网络的依赖度;
- 网络资源的收放要求;
开源容器网络组件按照网络覆盖类型大致可分为:overlay和underlay,underlay相比overlay在传输效率、部署实现及维护等方面更有优势(详细的各种容器网络组件横向比较,可自行查询学习,此处不详细展开)。
以calico为例,作为underlay的容器网络解决方案,依靠动态路由协议bgp实现网络互通,并通过原生的network policy解决容器间网络隔离。
calico介绍:
- felix: calico agent,运行在每个node节点上,负责配置各节点路由及 ACL信息来确保每个pod的连通状态;
- etcd: 分布式键值存储,负责保存所有node节点的网络状态信息;
- bird: 负责把路由信息分发到当前calico网络,确保node间通信的有效性;
- 简单理解,calico可视作运行在node节点上的一个只有bgp功能的路由器(详细的calico介绍,可参见calico官网:https://www.projectcalico.org)
- calico支持e/ibgp邻接关系,支持next-hop-self/next-hop-unchanged,建议优化bgp timer,开启graceful restart;
五、容器网络架构
calico建议组网架构如下图:
-
BGP-RR落在master节点,集群内的其他node与RR建立iBGP,考虑到容器网络稳定性,建议RR数量≥2:
- 集群全部节点与外部物理网络建立iBGP/eBGP:
上述两种组网架构,结合实际业务场景进行选择,但无论哪种结构,均需要做好网络资源的科学合理规划,包括但不限于:
- IP地址
- BGP邻接关系选择
- ASN规划
- 路由收放策略
- 容器网络与底层网络的隔离需求
六、网络隔离
环境隔离,例如:生产环境和测试环境隔离,这里还需要考虑:
- 以node为环境最小粒度——隔离策略部署在外部物理网络,可通过ACLs、VRF等;
- 以pod为环境最小粒度——通过calico原生的network policy进行环境隔离;
七、总结
当前数据中心随着虚拟化/容器等技术的引进,对网络结构提出更高、更精细的规划需求,底层网络的技术选取、架构模型将更多的影响虚拟/容器网络的落地成本、实施难易度,因此需要网络规划者要在前期介入时,了解业务发展方向、技术发展方向及成本、灵活性等因素。
以上是关于数据中心如何实现传统网络与容器网络的架构共存的主要内容,如果未能解决你的问题,请参考以下文章