资讯专栏INFORMATION COLUMN

OpenStack 与 Rancher 融合的新玩法

android_c / 405人阅读

摘要:本次分享给大家带来与能够融合使用的一些玩法。计算节点的进程不能在运行在中。部署的过程需要拉取很多镜像,需要耐心的等待。之前的计划应该是在版会添加的支持,差不多就是今年月份左右。

OpenStack是开源Iaas云的事实标准,功能大而全,除了能管理虚机同时也能管理容器,OpenStack项目中的Magnum、Kuryr、Kolla、Murano、Nova-docker等都是与容器场景很不错的结合点;而Rancher不同,Rancher是为容器而生,只是顺道做了一些VM的管理工作,与OpenStack不同的是针对VM的管理,Rancher并不是对标AWS,Rancher相对来说要精简很多,当然Rancher对容器的掌控要远强于OpenStack。本次分享给大家带来Rancher与OpenStack能够融合使用的一些玩法。

我会分为几个场景来讲解一下,这样对OpenStack不是太了解的朋友而言可以更直观一些。

场景一:使用OpenStack的VM来提供Rancher Host

这种结合是最先能想到的,可以说是顺理成章的需求。Rancher添加以OpenStack的VM为Host资源,我觉得主要有两种方式:custom host方式和docker-machine driver方式。

第一种方式,我们都知道Rancher在Add Host时可以用在目标主机执行一条shell的方式来添加host,而OpenStack在创建VM的时候可以在注入一个执行脚本,这个脚本会在VM创建完毕后在VM的OS内部执行,所以我们就可以利用这些特性:

这样VM在创建完毕后会自动成为Rancher的一个Host资源,这里一点小建议就是VM的镜像最好是自带Docker,这样可以注入的脚本中省去安装Docker Engine的过程,可以大幅提升速度。

第二种方式就是利用docker-machine driver,而且openstack driver也是docker-machine的官方驱动之一,不过这个driver的参数确实太多,易用性上差很多。除了使用openstack driver,其实我们完全可以使用generic driver,openstack对主机秘钥有很好的管理,所以我们完全可以使用openstack和Rancher的api,利用generic driver来简化openstack driver的复杂性,当然前提是VM的镜像最好还是自带Docker Engine:

说完Host资源,我们看看存储方面。OpenStack对存储的支持区分的比较细,对象存储、块存储、文件系统都有各自的项目来支持,如swift、cinder、manila等,存储系统对接的不仅仅是Rancher,Docker Engine本身也要处理好一些优化细节。

对于对象存储Swift,可以作为Docker registry的backend存储,我们可以registry服务部署到VM上,然后镜像的存储放在swift上。另外,目前convoy backup可以备份到AWS S3上,对于国内用户来说比较麻烦,实际上完全可以备份到swift上,当然需要在convoy上添加这个驱动的支持,或者可以把swift配置成S3的接口,这样也可以和convoy结合起来使用。

对于块存储Cinder,更多的结合场景在Docker Engine上,Docker有很多种storage driver,也就是我们熟知的rootfs可以有多种形式,常用的有aufs、devicemapper、overlayfs等,通常VM的flavor根磁盘都比较小,所以我们需要用cinder创建一块盘来挂载到/var/lib/docker上或者直接指定这块盘为devicemapper对应的设备。

对于文件系统manila,manila本身能够创建一个对外的NFS服务,也可以创建一个glusterfs集群服务,这样也可以和convoy能够有很好的集成。目前相对对象存储和块存储 ,Manila的成熟度还不是太高。

计算存储之后便是网络,我们都知道Rancher中Cattle的网络使用ipsec,ipsec本身就是一种overlay技术,而OpenStack的Neutron很多也会使用GRE/VXLAN之类的overlay网络,这样容器之间的网络通信就变成overlay嵌套overlay,性能上必然打打折扣,所以OpenStack与Rancher结合使用时,强烈建议Neutron使用vlan网络。

当然可能由于各种环境因素必须在neutron中使用overlay,此时VM的网卡的mtu需要设置成1400或者1450,那么同样需要对Docker容器的mtu做设置,否则容器内一些应用层的协议(HTTP)将会无法正常使用。DOCKER_OPTS=”$DOCKER_OPTS –mtu=1400″

场景二:构建容器与虚机的混合网络

上一场景所提到的嵌套overlay的问题,是在OpenStack中使用Docker集群的普遍问题,如下图所描述:

这种性能的损耗是巨大的,繁荣的OpenStack社区孵化的一个子项目Kuryr就是解决这个需求场景的。Kuryr本质上就是把容器内namespace的port与neutron port绑定,这个neutron port根据不同neutron-plugin-agent略有不同:

最终可以实现容器和容器之间组网,容器和虚机之间组网等模式,Neutron会作为IPAM存在,我们可以随意地定义网络:

这样我们可以把很多Neutron的特性带入到容器网络中,诸如安全组、浮动ip、Qos、Lbaas、Fwaas等等。

目前Kuryr只支持CNM(libnetwork),在OpenStack N版的release周期中会放出对CNI(主要是Kubernetes)的支持,届时Rancher 1.2也将会支持CNI,这样两者可以有一个很好的结合,后期可长期关注这个方向。

场景三:使用Murano来快速部署Rancher

Murano是OpenStack的应用市场,将应用基于Murano约定的打包标准打包后放入应用市场,用户就可以在OpenStack中快速部署该应用,这个理念非常类似Rancher的Catalog,只不过它是基于VM的。如果需要在OpenStack中快速部署一套简单的Rancher环境,那么使用Murano是个不错的选择。

我们可以在OpenStack Horizon上用拖拖拽拽的方式创建Rancher环境:

最终通过Murano的编排,创建了Rancher服务环境 ,并自动生成部署图:

这种主要是方便、快速创建一套Rancher环境,我目前只是做了个demo,如果更完善还需要把Rancher的HA模式放进来。

场景四:利用Rancher Catalog快速部署OpenStack

玩过OpenStack的朋友都深知其复杂性,对于一个新手来说,刚上来部署OpenStack来个三天三夜不是什么新鲜事。OpenStack的快速部署需求引出了一些开源项目和商用产品,诸如openstack-ansible、kolla、fuel、magicstack等等。

在这其中kolla的理念比较特殊,它立志于以容器方式部署openstack服务,从而能够实现快速部署甚至滚动升级降级等特性。 Rancher本身就是管理容器的利器,完全可以把openstack当做Catalog中的一个应用来部署,这个服务Rancher也已经开始支持https://github.com/rancher/op...,目前实现也比较初级不支持controller的HA,可以将其加到Catalog里面体验一下。

有几点注意事项:

Host必须开启KVM,可以使用这个命令查看一下 egrep -c ‘(vmx|svm)’ /proc/cpuinfo,返回是0说明没开启,各种OS开启KVM可Google之。

计算节点的libvirtd进程不能在运行在base OS中。

各个节点需要两块网卡,一块用于API通信,一块用于Neutron网络,网络需要提前配置好。

部署的过程需要拉取很多镜像,需要耐心的等待。

Q & A

Q:

Rancher现在只有IPSec 这种网络方案吗?性能会有问题吗?

A:

Rancher-net组件目前只支持ipsec。ipsec网络本身是overlay网络,同时还有密钥加密,所以性能上会差一点。不过在Rancher 1.2的发布计划中,会支持CNI,这样我们可以把calico weave等网络组件集成进来,用户可以根据自己的实际业务场景 选择不同的网络组件,Rancher对CNI的支持已经开始开发了。

Q:

Kuryr现在可以对接Rancher吗?

A:

Kuryr 现在暂时不可以,Kuryr目前也是在支持CNI的迭代中,需要等Rancher和Kuryr都完毕后,两面就可以打通了。Kuryr之前的计划应该是在OpenStack N版会添加CNI的支持,差不多就是今年10月份左右。

Q:

【当然可能由于各种环境因素必须在Neutron中使用overlay,此时VM的网卡的mtu需要设置成1400或者1450,那么同样需要对docker容器的mtu做设置,否则容器内一些应用层的协议(HTTP)将会无法正常使用。】关于这一点,是明确要求1400或1450还是说可以小于1400即可?因为强制只能是这两个值应该有点特别原因吧?

A:

特别的原因就是GRE/VXLAN的包头太大了,设置mtu拆包的时候不能用默认的1500 否则数据包就是无法识别了。1400/1450 是可以计算出来的,有一个公式可以计算,小于这个值也可以,但是这样传输效率就太低。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27978.html

相关文章

  • Google正式加入OpenStack基金会 推动Docker混合云加速融合

    摘要:这对于所有的希望尝试云的企业来说是个好消息,因为他们还没准备为云环境重写所有应用,但又希望在投身云计算时有为云优化的全新的应用。 今天,一位最具重量级的新成员签约加入OpenStack基金会,这就是——Google!双方的合作承将在例如Murano应用目录、Magnum容器流程管理服务等一系列开源项目持续贡献工程资源。这使得OpenStack在同一个Dashboard中管理虚拟的、非虚拟的、...

    MASAILA 评论0 收藏0
  • 扒一扒Rancher社区中的小工具

    摘要:可是并没有统一的版本号管理功能,只是额外提供了内包的依赖路径。描述文件支持两种格式,普通方式和方式,可以直接在其中描述依赖库的远程地址版本号等,一个简单的例子我这里使用普通格式然后在根目录执行,即可获得相关版本的依赖包非常轻量级,非常简洁。 与Linux、OpenStack等成熟的技术社区相比,Rancher社区还是处于初级发展阶段,一个技术社区的成败并不是单纯的代码贡献,而学习文档的...

    wwolf 评论0 收藏0
  • Rancher助力美国农业部的容器实践之路

    摘要:年,容器业务拓展至美国农业部,并延续至今。美国农业部已与合作,利用容器管理平台重新调整其容器环境,以支持其将在在年初重新启动的公共网站。至此,美国农业部的评估方案之中就还剩下和了。 2016年,Rancher容器业务拓展至美国农业部(USDA),并延续至今。 美国农业部已与Rancher Labs合作,利用容器管理平台Rancher重新调整其Docker容器环境,以支持其将在在2017...

    rockswang 评论0 收藏0
  • Rancher v1.2基础设施引擎整体架构分析

    摘要:官方于月日发布了其容器部署与管理平台的最新版本,。架构总览在版本的整体架构图如下图所示上,引擎向下深入演化成了基础设施引擎,这一点上在时代也早有体现。基础设施引擎初次安装版本,会发现多了如下图所示的明显标识,默认的引擎需要安装等服务。 Rancher Labs官方于12月1日发布了其容器部署与管理平台Rancher的最新版本,Rancher v1.2。Rancher v1.2可以说是一...

    Sike 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<