技术漫谈 | 基于Openstack的Rancher扁平网络
Posted Wise2C
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术漫谈 | 基于Openstack的Rancher扁平网络相关的知识,希望对你有一定的参考价值。
一、需求提出
多层嵌套的网络方案,一方面浪费了大量计算资源来处理网络流量;同时,又导致一些旧的网络监控设备无法透明的监控网络流量。
1.网络转发效率
从两个方面分别来分析:
Rancher的原生网络是使用基于IPSec的overlay VPN技术,由于跨主机的容器之间的流量都需要经过IPSec解封包,因此性能方面有待改善。
Openstack的网络性能受到所使用的网络解决方案的影响。如果使用基于SDN的硬件解决方案来offload流量到外部设备做报文的解封包,这样尚且能够忍受内部容器网络的overlay方案。一旦使用普通的openVswitch,使用软件来解封包,浙江浪费很多的CPU资源来处理报文。
2. 流量监控的需求
金融客户大部分都有自己网络监控工具,这些工具一般能够解封常规的报文,较难处理IPSec加密的报文。为了保障网络对于安全监控的透明性,网络内部严禁使用Overlay VPN的解决方案。
因此,如何在基于openstack的IaaS上层运行Rancher管理平台,就成为亟待解决的问题。
二、解决方案
要实现容器在openstack网络中的扁平化,也就是需要将运行与虚拟机中的容器的端口放到虚拟的层面。网上有一些现成的方案可以达到这一目的,比如MACVLAN, 或者VLAN Trunk等。但是基于Rancher的Metadata server位于其所在宿主机169.254.169.250的这一特殊性,我们最终选用了Bridge的方式来实现。具体如下图:
除此之外,在VM内部,为了访问到绑定到docker0上的metadata server,我们创建了veth-pair来连接br-cni0和docker0。但是这样的连接必须在数据链路层做严格的流量控制,除了允许容器网络侧访问169.254.169.250的流量外,其他流量均不允许通行。
三、核心模块介绍
整个方案中,最核心的是图上深蓝色的两个组件,均由Wise2C开发。
CNI Plugin 主要包含如下功能
创建br-cni0网桥(首次启动检测到该主机上不存在该网桥时)
建立br-cni0到docker0的连接,并写入ebtable规则,保障只有metadata流量可以通信,其他流量禁止
挂载container-port到br-cni0网桥
Wise2C Neutron Controller主要实现:
启动后从openstack Neutron读取所有port,并过滤出容器端口作为缓存
监听容器port新增和删除的请求
当收到请求或,将请求转化为对openstack Neutron的具体操作,创建/删除port以及更新parent port的“allow address pair”属性
四、效果展示
将核心组件都做成Rancher Catalog后如下图所示,主要包含Wise2C Flat Network 和 Wise2C Neutron Controller两个Catalog:
Openstack中的flat-net用于VM Management子网,将vlan_subnet用于Container通信的子网:
使用OpenStack的虚拟机作为Rancher运行的宿主机:
将Rancher环境拉起来后,基础设施应用列表如下图所示:
➡
文末福利
请大家关注【Wise2C】并回复【进群】,睿云小助手会第一时间拉你进入【 Docker企业落地实践群】,我们分享的各个企业案例项目的技术专家与用户代表,正在敬候您的光临,期待大家就项目的更多细节与疑问与群里的大牛们进行咨询探讨。
若需要了解更多有关Wise系列PaaS产品的详情,请与我们的市场团队联系:contact@wise2c.com
成功案例客户
微信:wise2c
官网:wise2c.com
以上是关于技术漫谈 | 基于Openstack的Rancher扁平网络的主要内容,如果未能解决你的问题,请参考以下文章
Opensetack + Kubernates(K8S)黄金搭档漫谈
Rancher2.6 Monitoring Grafana 对接 LDAP