现在开始搞PaaS平台,那么OpenShift就必须研究一下,这里写篇文章,把我过去一个月的理解,整理一下。
以前都是搞OpenStack,IaaS层面,发现对PaaS层面,了解不多。不过幸好当时搞Kolla,把OpenStack容器化,对我现在理解PaaS,还是有很大的帮助。
容器和Docker
其实这个对我来说,还是比较熟悉,可以说的清楚。市场上的容器,基本都是Docker,有很多其他容器厂商,不过目前看来还是很难和Docker来PK。
那么对于软件行业来说,我自己是深刻体会Docker带来的变化。是一个革命性的应用。Docker从2013年发布,到现在已经五年,已经进入比较稳定的阶段。
编排和kubernetes
编排,这个词,对于不是开发人员来说,还是不好理解。其实就是当你的应用放到容器里的时候,容器的启动顺序是有要求的。那么这个时候就需要用编排。
对容器的编排,其实很多工具可以实现。对于OpenStack容器化项目kolla来说。ansible目前是编排工具,其实也挺好。这主要一个原因就是在规模不大,容量数量不多,环境不复杂的情况下,ansible编排,是可以满足需求的。
对编排一个需求,就是一个服务如果挂掉,编排工具可以自动启动,压力大的时候,会横向扩容。不过在OpenStack的场景下,无状态的服务,从来都不是瓶颈,nova api,服务我用了OpenStack那么久,没遇到过挂掉的。
对于有状态的服务,其实编排工具是无法实现所谓的横向扩容。例如数据库和消息队列。
编排工具,目前最大的玩家,就是k8s。基本所有厂商都用它。
那么k8s和paas是什么关系。经常在会议上,很多讲座,就把k8s当成PaaS来介绍。
K8S是一个容器编排工具,要实现PaaS的功能,其实还需要在上面做很多工作,监控,日志,CI,CD等。那么这些工具,你可以自己组合,结合自己的公司的需求,搞出一套PaaS平台。
PaaS和OpenShift
真正意义上的PaaS,其实就是业界两家:
- vmware 的CloudFoundry
- 红帽的OpenShift
2015年的时候,这两家的PaaS,都是ruby开发,思路基本都是一样,江湖传闻,两位项目创始人酒吧喝完酒,各自搞了一个项目。不过在市场上,CloudFoundry声音是比较大的。远超过红帽。
2015年的时候,华为,IBM,HP的所谓PaaS平台,都是基于CloudFoundry来修改的。
K8s,2014年7月份发布第一个版本,2015年七月份,发布1.0的产品,那么这个时候红帽看到的机会,也是在这个时候,业界的风向发生的改变,红帽,华为,IBM,把底层都改成K8S。
2015年,红帽推出基于k8s的OpenShift。

Openshift 3.0的产品,就全面转向K8S。可以这样理解,以前的代码全部扔掉,重新来过一次。很神奇的事情,2016年,红帽就宣布OpenShift挣大钱。同时也加大投入。
OpenShift对红帽有多么重要呢?已经成为的第二大收入来源。第一大肯定是操作系统。
那么新版的OpenShift和以前的OpenShift有啥区别呢?
其实以前的PaaS平台一个通病,就是要把应用放到PaaS上,你是必须对代码进行修改才行。例如大家可能以前也去红帽的OpenShift官网测试过一个wordpress的实验,这个wordpress,是要经过代码修改的。一旦进行了update更新,就肯定会挂掉。
现在的OpenShift,不需要你做任何的代码修改,就可以放上去PaaS平台,所以肯定也是能update。
CloudFoundry,刚刚也对外宣布,底层也要支持K8s,不过已经晚了。红帽的势头已经起来。你就完全没有机会了。
我和朋友开玩笑说:红帽的OpenStack势头没做起来,导致OpenStack厂商还能有口饭吃。红帽的PaaS平台,K8s已经势头起来了,别的厂商,其实已经空间不大了。
OpenShift版本
红帽的一贯风格,都是开源版本,商业版本,命名也不一样。从上面图其实就可以看出来,也让用户感觉很混乱。
到了OpenShift 3.6的版本,集成的K8s 1.6的版本,版本就清晰很多
- 开源版本:OpenShift Origin 3.6
- 商业版本:OpenShift 3.6
我的理解,代码都是一样,就是一个商业支持的区别。
从红帽的发布OpenShift版本可以看出,基本是一年4个版本,紧跟K8S。目前K8S最新版本是1.8。落后2个版本。
k8s 1.5的版本是2016年12月23日,红帽的OpenShift 3.5,是2017年4月份发布
K8s 1.6的版本是2017年3月22日发布的,红帽的OpenShift 3.6是2017年7月底。红帽需要4个月时间发布一个版本。
https://www.kubernetes.org.cn/1353.html

2017年12月13日 k8s v1.9.0正式版本发布!
Kubernetes 1.1的版本是,2015年11月9日发布。
OpenShift介绍
很多人说红帽的OpenShift就是一个K8S,其实这是一个不算太正确的理解。OpenShift,目前的版本,可以理解成一个真正意义上的PaaS。
红帽在K8S上封装了一层,你基本上已经用不上K8S的命令。上面提供红帽的UI,集成了日志,监控,镜像仓库等功能。也集成的CI,CD。
比如你希望在K8s跑一个mysql的群集,Redis的群集,那么这些都是需要厂商做很多工作才能实现,红帽提供全套的服务。
OpenShift对手
很多厂商基于K8S做出自己的PaaS平台,例如IBM的Bluemix。但是真正能产品化的,也就
OpenShift和Racher。
目前市场上OpenShift肯定是领先的。红帽的开源优势发挥出来。
PaaS和IaaS关系
大家可以受那张图的影响,认为PaaS必须跑在IaaS上。那么其实两者可以没任何关系,也是可以密切联系。
红帽的OpenShift,基本支持所有的平台,物理机器的部署,OpenStack里部署,和虚拟机里部署。
目前OpenShift的部署,是通过Ansible来实现,非常方便。
IaaS平台上,很多组件可以是PaaS通过软件提供,也可以是IaaS提供,例如负载均衡,DNS服务,Nas服务,如果Iaas平台提供这些服务,那么跑PaaS平台,OpenShift,就更加方便可靠。
对于实际的PaaS应用来说,微服务用到有状态的服务,例如数据库,mysql,redis。目前业界都是推荐直接使用IaaS平台的,目前在PaaS层跑有状态的应用,业界的测试还是不够的。