一、概述
随着数据中心网络技术的革新,并伴随容器的落地,如何在数据中心内部构建一个合理可用的网络架构,以满足不同形态的业务部署模式,成为一个网络人员越来越需要注重和考虑的方向。
二、业务背景
在互联网公司的数据中心,通常你会越来越多的看到容器(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进行环境隔离;
七、总结
当前数据中心随着虚拟化/容器等技术的引进,对网络结构提出更高、更精细的规划需求,底层网络的技术选取、架构模型将更多的影响虚拟/容器网络的落地成本、实施难易度,因此需要网络规划者要在前期介入时,了解业务发展方向、技术发展方向及成本、灵活性等因素。
来源:51CTO
作者:challenchen
链接:https://blog.51cto.com/tommy1108/2481314