Dec 082016
 

怎么让OpenStac镜像k更加好用,这是我一直都想去解决的问题。我想整理一下我的需求,后续让同事跟进,把这些问题都彻底解决。

于CentOS和Ubuntu,其实都有有官方镜像,默认的官方镜像,其实还是非常不错,也比较流行,那么这些官方镜像,我们直接拿来使用,其实还是有不少问题,在一些特别环境下。

很多用户都是拿上传的镜像修改完,转成镜像,其实我一向不喜欢这种方式,这样做,应该会有不少隐患。所以我希望在镜像上传前,可以做更多的定制。

也是在私有云领域里,用户对镜像的需求。

镜像磁盘大小

这个CentOS官方镜像默认是8G,Ubuntu默认是3G,通过镜像带的磁盘扩大的软件,其实是可以在创建,resize的时候,调整硬盘的大小。

现在公有云默认的linux磁盘大小是20G,40G,系统盘是不能调整大小的。这其实也是有利用提高性能,在创建的过程中,不需要调整硬盘大小,加快创建速度。

windows的镜像大小是60G。

所以在实际中,公司内部私有云,我希望所有的镜像默认的磁盘大小都是60G,这样其实也好管理,同时在大部分情况下,都是不需要增加磁盘,就可以满足需求。

另外还是要有工具,在镜像上传前,调整系统盘大小。

需要强调的是,在OpenStack上传镜像的时候,一定要填写上对硬盘和内存的最小要求,这样可以避免用户创建虚拟机的出错。

操作系统版本

由于我们经常遇到不少软件是需要指定版本,才能跑起来,所以我们镜像要写上os的版本号。建议

  1. centos 6.5
  2. CentOS 6.8
  3. Ubuntu 12.04.x
  4. Ubuntu 14.04.X
  5. Ubuntu 16.04.x

centos 6.5的镜像,就只能自己单独制作。其他镜像,可以下载官方镜像,进行定制修改。

操作系统的源

要对操作系统的源进行定制。指向国内的源,阿里,中科大等目前速度非常不错的源。同时如果有必要,也是可以指向内网的源。让运维人员可以修改镜像里的源。

调整磁盘大小

在公有云的场景下,其实系统盘,是不允许调整大小。不过这个需求,在企业私有云里其实是很旺盛。默认OpenStack也是支持磁盘扩大。

所以我们需要在确保镜像是支持磁盘大小的调整。对于不同的linux,装的包是有点不一样。

http://xcodest.me/centos-root-partition-auto-grow.html 

启动速度

优化虚拟机的启动速度,其实还是很有意义的。这里面最需要处理的就是cloud init。

http://xcodest.me/cloud-init-cause-vm-boot-slow.html

尤其在没有联网的环境下,会导致虚拟机启动速度很慢。

镜像的密码

作为服务商,肯定会建议用户采用秘钥登录,但是现实中,用户都是把虚拟机设置root的密码,做快照,生成新的镜像。

centos和ubuntu,默认的登录的用户名也是不一样。

我倾向是都改成root账号

如果我采用密钥登录,会出现一个尴尬的情况,就是控制台无法登录。

我考虑是,给镜像的root设置一个密码。同时也是可以在上传镜像前,把root的密码修改成自己需要的。

同时ssh的设置,也需要做些调整。默认是不允许root登录,密码登录。

如果虚拟机创建的时候,设置了root密码,那么就覆盖了默认的密码。这时候,是允许root的远程登录的。

vnc设置

vnc其实是比较消耗资源,如何在vnc不使用的情况下,自动退出,这个其实是需要考虑的。在私有云使用里,因为vnc没有关闭,导致最终资源消耗过大,是一个场景的问题。

解决这个问题,可以从镜像入手。

SSH优化

默认ssh访问,是需要请求dns,所以需要在ssh的配置文件里,设置

UseDNS no

定制包安装

在实际中,用户经常会提出要安装linux的桌面,开发环境的镜像,这样方便,这些需求太多,所以有一种办法,让工程师,可以直接操作镜像,把需要的组件安装好,再上传镜像。

事实上,OpenStack后续很多项目,sahara,murano,trove,都涉及镜像的定制。都是使用disk-image-builder 工具,可以好好深入研究一下。

https://github.com/openstack/diskimage-builder

Nov 302016
 

我一直都在评估,我自己是否能坚持写下去,当确认没有问题,那就可以正式开始写Kolla的月报

11月份,其实算是Ocata版本正式开发的一个月,成绩还是非常喜人的。

项目拆分完成

kolla的项目要拆分成Kolla和kolla-ansible,这个已经计划了很久,为了保证Newton版本的稳定性,推迟到现在才开始拆分。日后

  • Kolla,就负责build docker image
  • kolla-ansible负责编排,部署。和Kolla-k8s是平行的。

负责这个工作的就2位,Steven Dake 负责repo的拆分,九州云张雷同学负责Kolla的CI的修复。比想象中顺利,不到一周的时间,一切都恢复正常,现在跑一个测试,时间已经缩短到半小时内,效率大大提升。

如果想做Kolla的二次开发,维护自己的分支,那么建立自己内部的CI是必须的。

Big Tent项目

项目拆分的一周时间,开发工作基本都停止。不过在项目的Merge上,进展还是非常顺利。

  1. Searchlight (麒麟的李英俊)
  2. Solum(九州云曹威同学)
  3. Trove(九州云朱冰兵同学)
  4. Designate(九州云朱冰兵同学)

这4个项目,已经成功Merge。希望可以做到尽早把各个项目Merge,后续有足够的时间进行测试。

目前Master里,

  1. Tacker
  2. Freezer
  3. Karbor

这3个项目已经在积极review中,有望在12月份实现merge。

目前Big Tent底下就剩下6个项目,我整理了一下

  1. Dragonflow
  2. Monasca (Monitoring)
  3. Tricircle (Networking automation across Neutron service) 华为的级联OpenStack项目
  4. Vitrage (RCA (Root Cause Analysis) service)
  5. Zaqar (Message service)
  6. Zun (Containers service)

Horizon UI插件

现在Horizon各个项目的UI,都是用插件的形式放到Horizon里的。那么对于Kolla项目来说,如何把各个项目的Dashboard放到Horizon里呢?

最开始的设想,就是提供方法,让用户在build 镜像的时候,把需要的UI放到Docker file里,不过这个其实也就导致很多用户很迷惑。经过社区讨论,最后决定,把所有的UI都放到Horizon的Docker file里,这样大家使用起来就更加方便,不需要为了使用某个项目,自己去build一遍镜像。

项目很多,差不多有20个项目的UI要放到Horizon里,估计12月份,开发者都需要忙着处理这块。这样Ocata版本发布后,就会更加方便,易用。

Heka替换

Kolla计划在Ocata版本,把Kibana,Elasticsearch升级到5.x版本。不过如何替换Heka,就大家有不同的看法。选择其实不多。目前Fluentd呼声最高。

无论什么结果,替换的工作量还是不小。希望早日定下来,赶紧开工。

北京OpenStack聚会

11月26日,张雷同学参加北京组织的OpenStack聚会,介绍一下巴塞罗那的峰会的见闻。这次聚会讨论的内容其实是比较特别,Heat,Senlin,Searchlight,Karbor,Heat估计大家可能还听说过,剩下几个项目,其实就算是OpenStack社区开发人员,都很难说出他们的具体用途,更别提如何安装,部署。所以作为项目的开发者,不仅仅是开发代码,还需要参与项目的推广,让用户把你做的项目用起来,你的价值才能得到提升。

那么如何推广起来呢?这个就是一个很有挑战的事情,首先要让发行版支持你,有rpm包,deb包,否则你是寸步难行。不过这种情况已经发生改变,Kolla出现,已经可以实现通过源码进行OpenStack项目的安装,如果你想了解Senlin,Searchlight,Karbor,那么最佳的途径,就是通过Kolla,一键安装,生产ready。

张雷同学做了一个演讲主题《容器化OpenStack的机遇和挑战》,一个很有趣的观点,Kolla的运气还是非常不错的。

Snap4

Docker 1.10在2016年2月份发布,解决了所有的OpenStack容器化遇到的所有难题。否则是不可能在4月份的Mitaka版本正式投入商用的。

突然发现我的运气,也是非常好。

Nov 282016
 

有人的地方,就会有江湖,开源社区也不会例外。背后的故事,其实还是很有意思。大家当故事读读就可以。

Kolla的项目是2014年9月份,Steven Dake创建的,作为TripleO的一个子项目。当时Steven Dake还在红帽公司,估计是没有受到公司的重视,出走思科,代表思科来推动Kolla这个项目。

TripleO的项目,本来是HP发起,不过由于Docker的出现,当时HP当任的PTL,直接辞职不干,放弃,认为做下去已经没有前途。结果红帽把TripleO接管过来,继续推动。

2015年,OpenStack采用big Tent的模式管理项目来应对Docker的威胁,Kolla项目在2015年8月份进入的Big Tent。

OpenStack的项目现在已经很多,不过有一个惯例,如果没有红帽,Mirantis,Rackspace,HPE,IBM支持的项目,其实是很难活下来的,你可以看到目前在Big Tent底下的项目,很多都已经快要没人了。

你很难想象一个项目没有:红帽,Mirantis,HP,Rakcspace,IBM参与,Kolla项目的活跃度,各个指标,其实都可以算是10大热门项目之一。

对于Kolla来讲,真的是经历过大风大浪,能走到今天这样,是非常不容易了。下面把Kolla的经历都给大家讲讲。

看他经历过那么多的风浪,还能发展那么好,你就会对Kolla项目更有信心。

当前Ocata版本Kolla的Commit数量分布图 2016年11月28日

Snap3

 

核心成员Sam Yaple出走

在Mitaka版本发布后,Sam因为个人原因退出,Sam有多牛的一个人呢?至少在我看到过OpenStack社区里干活的人,我认为他真的是神。Sam最开始是代表Rackspace,后来独立身份贡献Kolla项目。

OpenStack容器化,有那些难点呢

  1. Neutron容器化
  2. libvirt容器化
  3. qemu容器化
  4. mysql群集
  5. rabbitmq群集
  6. Ceph
  7. 控制节点的HA

你无法想象,上面所有的功能,全部都是一个人在半年内完成。而且你会发现这些完成的功能,是没找到任何的bug。可以这样说,Mitaka我拿去给客户部署50个节点的时候,那是第一次在真实机器上部署,居然一点问题都没有。

如果你有机会和这样的人一起工作,真的是一件无比幸福的事情。

Sam的退出后,后续的Newton版本,会如何呢?其实我当时心里是有一个很大的问号。不过终于扛过来。我想真正的原因是大家都看到OpenStack容器化是未来,很多企业都进来尝试,也导致在Newton版本完成的功能,Feature,超出Steven Dake的期望,基本把Big Tent的所有项目都集成,Kolla的影响力进一步扩大。

Mirantis放弃

Kolla上的Ubuntu支持,其实是Mirantis支持实现的,当时在Mitaka版本的时候,Mirantis力推kolla-mesos, 不过到Mitaka版本发布后,宣布放弃,要自己搞Kubernete的OpenStack。

Mirantis也正在容器化OpenStack的过程中,策略一直都摇摆不定,也就导致最后收购TCP Cloud,裁员。

Fuel的头号敌人,应该是Kolla,而不是红帽的RDO

红帽退出

Steven Dake,是红帽出来的工程师,其实也是有红帽情结的,Kolla对红帽操作系统支持很好,同时也吸引了很多红帽的工程师过来参与,在Kolla的发展历程,红帽的工程师,贡献是很大的。不过Newton发布后,红帽基本把所有的员工撤退回去。

红帽干了一件很纠结的事情,考虑在TripleO里利用kolla实现容器化,实现OpenStack是升级。

红帽在OpenStack上,有时候就和华为一样,手上的牌,永远都是最好的,但是有时候,真的晕招连连。给Mirantis逼着,刚刚松口气,还是要继续走TripleO不归路。

在Ocata版本里,Kolla的社区,开发者,参与者,其实更多,更活跃,更广泛。

IBM的离开

其实IBM当时有1位工程师,因为项目原因,派来调研Kolla,对Kolla项目做了很大的贡献,Kolla的Kuryr项目,就是他努力实现的。

不过由于工作的原因,离开的IBM,后来回归IBM,已经不从事相关的工作。也就导致IBM已经没人参与Kolla的开发。

IBM自己内部的Power的OpenStack产品,也在尝试使用kolla来实现容器化。

Intel的摇摆不定

大家从新闻里,其实应该都可以看到,Mirantis联合Intel,Google一起,要搞K8S管OpenStack,风头很猛。江湖的传闻也就很多,Intel在Kolla的投入,会不会减少,甚至撤走呢?

其实很多人都是有疑问的。不过在Ocata版本里,Intel当选的Kolla的PTL,公司在Kolla的投入,还是保持着,继续推Intel的各个组件Dpdk,各种新的技术。

Steven Dake离任

Steven Dake在Newton版本结束后,决定不担任PTL,那么这个时候Kolla的团队里,是否有人能扛起PTL的这个重任呢?

其实目前OpenStack很多项目,想当PTL的人不多。很多项目,都是没人竞选。Kolla这次核心团队里,有两位成员站出来竞选,最后Intel的员工当选。

一个开源项目,如果过分依赖一个人,其实是一个很大的问题。很多项目因为创始人离开,导致项目停滞不前。Steven Dake这点其实做的很不错,在不断的培养和物色PTL的候选人。让团队充满活力。

其实Steven Dake以前是Heat的PTL,一个人可以同时创建两个那么成功的项目,真的是非常难得。

Kolla为啥能成功呢?

Kolla的成功因素真的很多,不过从技术上来讲,就是他的时间点非常好,没有成为先烈。都是在合适的时候,做合适的事情。引用Kolla项目的Core张雷同学整理的一个路线图,大家有机会听听张雷同学的解读。

Docker 1.10版本,是2016年2月份发布,对于Kolla来说,或者OpenStack容器化,是一个非常关键的版本,解决了所有技术上的挑战。如果有公司吹牛说他在2015年就实现OpenStack容器化,你就当笑话听就可以。

如果没有2016年2月份发布的Docker 1.10,那么根本就是不可能真正做到OpenStack 100%容器化,并且投入到生产使用,这点对于Mitaka版本来说,也是无比的重要。正因为赶上了这个好时光,Kolla的Mitaka版本,就已经可以投入生产使用。

Snap4

Kolla的下一个挑战,就是K8s,目前Steven Dake在负责这个事情。

Oct 272016
 

OpenStack的Newton版本是10月6号发布,几个部署安装的项目到10月20日发布。stackalytics这次统计做了调整,10月6号以后提交的代码,都划分到Ocata版本里,这样也就显得比较简单。

到现在为止,国内其实已经有好几篇的排名文章,估计大家对排名也都比较了解,我都考虑是否还要写一篇。如何写出一些新意。

就当成一种习惯,把这篇文章完成。把公司对社区贡献统计,改成对公司的投入统计。希望大家对OpenStack的未来有深入的了解。

国际五强

传统的OpenStack五强,HP,Mirantis,RedHat,Rackspace和IBM,发生了变化,这些变化,其实也体现在OpenStack的社区变化上。

我根据

参与人天(person-day effort)

排名 公司 Newton Mitaka
1 Mirantis 17777 20431
2 Redhat 11718 8440
3 HPE 7377 8390
4 IBM 6177 9217
5 Intel 5835 4020
6 Rackspace 5165 4617
  华为 3341 2835

 

根据数据的对比,其实我们可以看到传统5强的变化,同时也可以印证很多传言

  1. Mirantis:最近在峰会传出裁员,OpenStack容器部署项目,也在威胁Mirantis。所以社区的投入减少。
  2. 红帽:稳定增加社区的投入。
  3. HPE:分拆的影响还是很大的。
  4. IBM:投入减少30%
  5. Rackspace:投入还是在增加,私有化没有影响到社区的投入。
  6. intel投入社区,差不多增加了50%
  7. 华为也在稳定提高社区投入,不过增加幅度不大,和第六名还是有很大的差距。

国内

这次国内企业排名很有意思,如果按照commit量,产生所谓4强。

如果采用 Person-day effort,这个指标可以理解成公司投入的成本。

排名 公司 Newton Mitaka
1 华为 3341 2835
2 ZTE 1850 206
3 99cloud 1522 1299
4 EasyStack 1117 765
5 Awcloud 399 457
6 kylin cloud 214 180

 

从上面数据可以得出结论,国内企业投入OpenStack社区在增加。中兴的投入,基本是10倍的增长。

Oct 172016
 

目前Kolla 3.0 Newton版本,马上就要发布,巴塞罗那峰会马上就要举行,讨论下一个版本Ocata如何开发。那么这里我就对kolla提出以下自己的期望,同时也希望参与社区开发的九州云同事全力去推进。

真正参与OpenStack社区项目开发,不仅仅要了解当前版本项目完成的那些功能,还需要知道项目在未来,下一个版本的重点在哪里,用户最需要的功能,能不能实现。

OpenStack基金会计划明年把OpenStack峰会拆分成两个会议,用户和开发者,不同的时间点举行。开发峰会,就在版本发布的时候举行。用户大会,会再晚两个月。用Ocata为例,发布周期  Ocata 2月24号发布,开发者大会PTG(Project Teams Gathering)发布后马上举行,用户大会在五月份。

Ocata详细的发布时间 https://releases.openstack.org/ocata/schedule.html

这样1年4个季度,都会有会议参加,都会有报道的热点。

meeting

社区的思路也就是版本发布后,厂商2个月,就可以交出产品。

 

CloudKitty+Telemetry验证

在Newton版本里,九州云同事付出了很大努力,基本把组件都已经集成到Kolla里。那么其实还是有很多工作要去做,监控,计量,计费。确保可以做到真正生产可用。

目前Telemetry还有一个新组件,panko,event功能,还没有集成到kolla里,这块也和计费密切相关。

Ceilometer,目前支持Collectd来收集服务器的数据信息,传输到gnocchi,gnocchi把数据存放在Ceph的对象存储中,通过grafana来做数据的展示,利用aodh来做报警。

 

Barbican安全秘钥管理

OpenStack进入企业,那么大家对安全关注程度比以往都要高,那么如何把Barbican用起来,就是解决用户对安全的关心。

在Newton版本里,Barbican也已经集成到Kolla里,并且有开发者在逐步的整合到其他项目里,keystone,Magnum等。后续可以在cinder加密上,也真正用起来。

Barbican还有一个子项目 astellan,需要集成到kolla里,那么这是Ocata版本要做的事情。

Ironic和Bifrost

这就是裸机管理的功能,在Newton版本,intel投入的大量的精力去开发,不过目前看到的情况,还不能完全跑起来,还需要在Ocata版本进行大量的bug修复。

kolla要解决一个问题就是如何装操作系统,这样就能很好帮助用户解脱出来。

Ocata版本,一定要确保Ironic真正能用起来。

日志

Newton版本是采用heka来做日志收集,在Ocata版本需要替换掉,那么这个工作量还是比较大的。确保所有项目的的docker日志都能收集,并且能通过kibana实现很好的展示,这是我们要去努力实现的。

另外grafana也是支持日志的展示,如何结合。这是一个需要投入精力去完善的问题。

 

Tick 监控

Kolla是基于容器去部署OpenStack,采用的监控的方案和手段,其实和以往有很多不同。以前监控OpenStack服务,现在变成监控容器。

这是基于influxdb的一套监控体系,非常酷

tick-stack-grid

基本功能,其实已经集成到Kolla里,不过要想真正跑起来,还是需要Ocata版本努力。

TICK-Stack

 

Ceph集成验证

当前Ceph的块设备在OpenStack和Kolla已经得到了很好的验证,那么对象存储和文件,其实还是没有经历考验。今天和朋友开玩笑,下次搞Ceph聚会,就要给大家展示一下Kolla集成Ceph的文件,对象和块设备的功能。

对象存储主要还是gnocchi的监控数据,也是一个比较有价值的考验。

专门请教的豪迈,Cephfs在manila上基本是没法玩,还没有可行的方案,实现原生的多租户。所以一年内也就可以不需要考虑manila

计算节点自动疏散功能

这个功能,其实vmware用户一直提的需求,当一个节点挂掉后,上面的虚拟机自动疏散到其他节点上。OpenStack一直都没有真正好好解决这个自动的问题。

Kolla的Newton版本已经集成了所有和该功能相关的组件,到底用什么方式来实现,我们好好验证一下,在Ocata版本,交出一个满意的答案。

Virtual Machine High Availability (VMHA) service

这个是vmware用户经常问的问题,虚拟机如何自动实现所谓的HA。

实现这个,目前有三种方案,http://docs.openstack.org/ha-guide/instance-ha.html

需要好好评估一下,选择一种代价最小的方案来实施。大家要分清楚计算节点的疏散功能和vm的HA功能,是完全两个概念。VM的HA,类似vmware的FT功能的实现。

下面这个方案,在OpenStack峰会上有介绍。

https://github.com/openstack/masakari

ha

 

项目集成

目前在Big tent底下的项目,还剩下10个没有集成到Kolla里,里面的项目的成熟度,不少项目其实还没有达到可用的情况。相信在Otaca版本,可用把能用的项目都集成到kolla里。很多工作已经在进行中.

  1. Designate (DNS service)  (九州云朱冰兵同学负责)
  2. Dragonflow (海云捷迅马力同学)
  3. Freezer (Backup, Restore, and Disaster Recovery service) (九州云曹威同学负责)
  4. Karbor (Data Protection Orchestration Service)
  5. Searchlight (Search service) (麒麟李英俊同学,目前已经完成,merge)
  6. Solum (Software Development Lifecycle Automation service)  (九州云曹威同学负责)
  7. Tacker (NFV Orchestration service)  (老外已经在进行中,九州云的同事们会积极推进)
  8. Trove (Database service) (九州云朱冰兵同学负责)
  9. Vitrage (RCA (Root Cause Analysis) service)
  10. Zaqar (Message service)

我也希望联系国内上面项目的开发者,帮忙一起把项目放到Kolla里,真正做到想用啥就enable一下就可以。

剩下3个服务,看看最终谁来完成。

等Ocata版本发布,我们回顾一下,看看我们的成果如何。