陈沙克

Nov 092017
 

通过图来了解一个软件,效果应该是最好的。

部署架构图

ocp_smart_start_diagram

What isOpenShift

Snap1

Roadmap

Snap2

流程

Snap3

  1. developer provides git repo
  2. Developer chooses image from grgistry
  3. layer is applied to image
  4. layer is added back to registry
  5. image is scheduled and deployed
  6. Developer can declare webhooks
  7. updated image is added back to the registry
  8. New Images is depoyed as rooling update

Snap5

Compare

Snap4

Architecture

Snap6

Nov 042017
 

这个软件,对我来说,真的是那句话,既熟悉又陌生。在OpenStack的开发世界里,其实基本会天天听到Jenkins这个单词,但是我自己真的没玩过。

不过最近要搞PaaS,要给开发提供平台使用,那么这种常用工具,我就必须了解。

快速了解一个软件,项目,如果是成熟的,其实很简单,就是youtube看视频,Slideshare看PDF。基本很快就能让你熟悉起来。

很快就可以找到Jenkins的一系列教程,选择一套,发现Jenkins的视频,很多都是老印讲的,听老印的英文,其实还可以,他们讲的内容,还是整理的非常不错。一共是16章,我确实听完,感觉是有一个初步了解。

Jenkins Beginner Tutorial,一共16段,感觉做的还是非常不错。

Introduction and Getting Started

Jenkins是一个java开发的应用,用途是实现 CI/CD.大概的玩法是

Snap1

Jenkins背后也是有不少故事,

Jenkins was originally developed as the Hudson project. Hudson’s creation started in summer of 2004 at Sun Microsystems. It was first released in java.net in Feb. 2005.[7]

https://en.wikipedia.org/wiki/Jenkins_(software)#History

Jenkins的官方网站

https://jenkins.io

当前Jenkins版本是:2.73.2 。

安装Jenkins,其实很多方式,通过java启动,

How to setup Jenkins on Tomcat

这是讲如何通过Tomcat来启动Jenkins,都是java相关知识。windows,mac,linux都会有所不同。这个都是一个比较简单的过程。

启动的时候,要注意避免端口冲突就行。默认jenkins是8080启动。

How to change Home Directory

就是改变jenkins默认存放文件的位置。这个需要自己深入一下,了解一下目录下有什么内容。基本jenkins的所有相关,都会在这个目录下。

How to use CLI (command line interface)

其实就是客户端,如何用命令行来进行相关工作。如何安装客户端和使用。

对client端来说,验证和jenkins的地址,是必须知道的。这方面需要记住。

How to create Users + Manage + Assign Roles

这章我认为是技术含量最高,同时也比较震撼,一个开源软件,权限管理,居然做的如此牛,这是很少见的。估计这也和他是sun开源有关。

对于jenkins,功能基本都是通过插件来添加。搞清楚权限管理,是非常必要的。

Basic Configurations

在web界面对jenkins进行配置,需要理解的东西不少。软件的帮助做的很好,不明白,旁边直接可以看帮助和例子。

Getting started with JOBS

演示如何创建一个job。多个job互相如何关联,这是核心啊。

Jenkins integration with GIT (SCM)

如何和git集成,现实中,必须是和git集成。如何代码修改,就触发构建。这都是挺有意思的。

How to use CATLIGHT (Jenkins Build Monitor)

这是一个桌面软件,帮助你实时了解jenkins的job运行状况,非常酷。能大大提高效率。

What is Automated Deployment

这个是必须看。

Snap2

How to do Automated Deployment

看视频

Notifications – How to send Email from Jenkins

就是邮件通知的一个设置。

What is Pipeline in Jenkins

介绍pipeline,很有意思,单词的含义到具体的使用。

How to setup DELIVERY PIPELINE in Jenkins

新版本pipeline是重点。

How to setup BUILD PIPELINE in Jenkins

What is BLUE OCEAN

这是新版本的jenkins的UI,结合pipeline.

Nov 022017
 

对于OpenStack社区来说,一般峰会开完前,大家都比较懒惰,处于休息状态。该干活的,都是开完峰会以后再做。

对于Kolla来说,倒是有不少东西可以说一下。

我最近搞OpenShift,发现K8s的其他公司,基本很难找到机会,因为红帽已经认定的方向,并且OpenShift挣了大钱,收入排第二位,操作系统第一位。

对于OpenStack厂商来说,由于红帽犯了一些错误,内部斗争等原因,导致红帽的OpenStack没真正做起来,其实就是没给公司创造太多价值。这样OpenStack创业公司才能有口饭吃。

Ansible,Ceph,都是红帽的,cobbler也算是红帽的,kolla的PTL,也是红帽工程师。

OpenStack现在一年2个版本,大家都叫吃不消。K8s一年4个版本,红帽的OpenShift还在紧跟,这就是区别啊。

2年历程

2015年,也大概是10月份,我第一次见到Jeffrey zhang。也基本上从哪个时候,我们开始搞Kolla。

Jeffrey zhang  Kolla的第一个commit  https://review.openstack.org/#/c/242339/

遇到Jeffrey zhang,无论对我还是Kolla项目,都是一件非常幸运的事情。

可以这样说,因为Jeffrey Zhang,Kolla项目的成熟度,提前了至少半年时间。让Kolla在Mitaka版本,可以正式服务客户,同时也搞出全球第一个kolla的生产案例,一个规模非常不小的案例,53台超融合架构的环境,考验了Kolla灵活性,强壮性。

可以这样说,2015年4月份的时候,全球有能力落地kolla的,应该不会超过5个人。

 

Ocata版本

OpenStack的Newton版本,经过一年的时间,现在已经正式宣布退役,不再维护。那么对于Kolla来说,Newton版本退役,其实是甩掉了一个包袱。

因为kolla在Ocata版本进行了代码的拆分,kolla 和Kolla-ansible。导致都后续很难对Newton版本进行代码维护。

Ocata版本,也是非常特别,第一个改变发布时间的版本,从4月份发布,改成2月份发布。对于kolla来说,Ocata版本,是4.0的版本,这算是一个真正推向客户的版本。

从Mitaka版本到Ocata版本,整整一年的时间。用户也开始慢慢接受Kolla,OpenStack放到容器里跑。

经过了用户了大量测试和开发半年的维护,目前Ocata版本的Kolla,已经非常稳定。在Pike版本修复的bug,全部都回馈到Ocata版本。

其实我们在5月份,给用户上Ocata版本的Kolla的时候,也遇到不少所谓坑。不过这些坑,都已经填平。简单说

CentOS 7.4+Ocata的Kolla,就等于非常稳定,可以放到生产运行。

可以这样说,OpenStack以前任何一个新的版本,都没有Ocata普及的快。发布不到半年,用户已经达到相当的规模。

市场新闻

10月份OpenNFV发布了一个版本,Kolla被集成了一次。那么这也可以看到Kolla的优势。无论是SDN,NFV,最终交付给客户,以前都是非常复杂的,如果容器化后,结合Kolla,那会非常简单。

现在OpenNFV,OpenDaylight,官方的安装文档,都是用Kolla来集成,

红帽的Tripleo版本,也要全面转向kolla,使用kolla的镜像,不过他们还是用puppet来玩。不过这个太折腾。

kolla社区

相比别的OpenStack项目,kolla的热度是非常高的。有想法,追求的,还是很多的。

  1. Xen的支持
  2. 微软Hyper-v,也要容器化
  3. Prometheus,容器的监控
  4. Manila的CephFS支持

文档也在进一步完善。

FAQ

很多朋友都问我一个问题,甚至包括Kolla的社区开发者,我有没有留一手,在kolla上面。

是否留一手,道理很简单,是否会带来利益。如果留一手,你能获得更多的客户,那肯定会留一手。不过玩开源,想通过留一手来获取客户,其实是注定失败。没有客户会因为你留一手,给你单子。只会因为你留一手,丢失了一个kolla的潜在用户。

正确的玩法,就是让Kolla无比好用,大家用的很爽。根据长尾理论,总会有客户找你提供服务。

威力已经在发挥中。

Oct 262017
 

最近深入了解了一下OpenShift,基本功能已经会玩。不过后续要深入的地方,还是很多,这里整理一下,应该是今年要完成的工作。

Pipeline

这个就是OpenShift 的CI功能,应该需要好好研究。

https://blog.openshift.com/openshift-3-3-pipelines-deep-dive/

有视频,可以好好看看,有相关的代码demo。

Deploying Applications from Images

现在很多应用,已经是采用容器来发布,提供Docker file,我们如何使用OpenShift 来发布呢?这个问题,其实非常值得研究,红帽连续写了3篇文章来介绍。

https://blog.openshift.com/deploying-applications-from-images-in-openshift-part-one-web-console/

Spark And Tensorflow

这是玩大数据的,目前主流的工具。这个能不能放到OpenShift来跑,这是需要我去验证的工作。

https://radanalytics.io/

专门有一家公司来做这个。相关代码都放到github。应该验证不难。

Tensorflow是做机器学习的。这是值得关注和研究的。

目标就是要把这两个应用,变成App Store.

升级

OpenShift,目前基本是1年3,4个版本,其实一定要面临升级的问题。目前使用的3.6,如何升级到后续的3.7版本。这个是需要好好去测试的。

数据库服务

目前有状态服务,数据库,redis,都是用IaaS的vm来跑。是否也可以用Docker来验证一下,看看实际效果如何。这个需要好好测试。

Oct 252017
 

其实回顾一下虚拟化和容器的发展历程,很大程度是惊人相似。我这里其实肯定不是很严谨的描述。仅仅是大概介绍一下过程。

虚拟化

技术

商业的虚拟化技术其实也不少。开源的的也是一样。著名的就是Xen和KVM两家。

  1. Xen
  2. KVM

Xen是2003年发布。KVM进入linux内核,真正第一个操作系统支持,当时据说是:ubuntu 8.04,也就是2008年,当时的KVM,还是一个玩具.

2010年,红帽发布RHEL 6.0,KVM算是正式进入主流。当时全球虚拟化,公有云,基本都是Xen的天下。

经过了5年的PK,现在已经是KVM独大。目前AWS,阿里云,已经全面转向KVM。

Xen的没落,很多原因,其中一个,就是intel搞了一套cpu虚拟化的东西,帮助kvm胜出。

KVM的想法其实应该是2006年,为了对抗Xen,intel,红帽,IBM,联手搞出一个KVM,放到内核里。

抽象层

那么多虚拟化引擎,那么肯定有人想到要做一个统一管理工具,这样可以管理多个。这样Libvirt就出现了。

Libvirt最擅长管理KVM,不过其实别的都是可以管理。

Libvirt_support.svg

管理引擎

虚拟化的技术,其实需要有管理工具,那么他的管理工具有哪些呢

  • OpenStack
  • CloudStack
  • Eucalptus
  • OpenNebula

其实还要很多,这些管理工具,当时是能管理Xen和Kvm,也有专门针对某个虚拟化的管理工具

  1. Xen Server,专门管理Xen
  2. Ovirt,专门管理KVM

这些工具,从2008年,一直pk到2014年,终于分出的高低。最后是OpenStack+KVM胜出。

管理引擎,也是通过抽象层,Libvirt去管理KVM的。

产品化

其实就是针对管理引擎的产品化。你需要把管理引擎包装出来,加上很多辅助的工具,让用户用的很爽。

  1. 红帽TrippleO
  2. Mirantis的Fuel
  3. Kolla

其实Ubuntu和Suse,都有他们的产品。

Mirantis的Fuel和Suse的Crowbar,大概是2014年出现,到现在也经历了3年多。从我的角度,最终就是Kolla彻底胜出,毫无悬念啊。

OpenStack的创业公司,目前还能有口饭吃,其实是要谢谢红帽。红帽因为在OpenStack上的策略有所失误,导致没能在OpenStack一统天下。要记住啊,

  1. 当年kolla项目可是TrippleO的一个子项目,
  2. Kolla项目的创始人,也是红帽的工程师,
  3. ansible,Ceph都是红帽自家产品啊,
  4. Cobbler,也是Ansible公司的人在维护。
  5. libvirt,qemu,kvm都是红帽的

谢谢红帽给大家留口饭吃吧。

容器

技术

容器的技术,起源很早,我最早接触是OpenVZ,这个让国内很多卖虚拟机挣钱的软件。对于开源,流行的容器来说

  1. LXC
  2. Docker
  3. LXD
  4. RTK
  5. Clean container

LXC,国内互联网2010年就开始使用。不过目前最流行的是Docker,

Docker从2013年发布到现在,其实发展速度很快,很多厂商都来不及响应,这个东西就成为主流。这个时候,intel又想重施故技,搞一个和cpu有关的容器技术,所谓的Clean Container.

不过这次由于Docker发展过于迅速,intel这次搞容器,完全是自己玩,不像当年和红帽勾搭在一起。所以很难在市场立足。

抽象层

和虚拟化其实一样道理,底层那么多容器技术,如何方便管理呢。

CRI Interface, Container RunTime Interface,就出现了,做了一层抽象后,各个厂商就可以和平共处。

dockerkubernetesintegrationmap-octotechnology

管理引擎

对于容器来说,也叫编排引擎,这个大家就比较熟悉3大编排引擎

  1. K8S
  2. Swarm
  3. Messos

K8S是从2014年7月份推出,到2017年7月份,基本上是完胜。厂商纷纷投降。K8s+Docker

和虚拟化也是一样,目前K8s,是通过CRI,去管理Docker。

产品化

用户要用起来,要把k8s,或者messos用起来,那么还是需要做很多工作。业界最著名的产品就是

  1. OpenShift
  2. Racher

国内的很多容器公司,k8s公司,其实都是在做类似的工作,在K8s上增加自己定制,形成自己的产品。包括现在CloudFountry,都号称要支持K8s。

背后的故事也很多,Racher当时号称要管理3个引擎,k8s,swarm和messos,最新的2.0的版本,就只管理K8s。

还是红帽厉害,2014年K8s发布,马上转方向,全面发力K8s,包装自己的OpenShift产品。

当红帽已经做出势头的时候,那是无人能敌的。这种K8s的产品化,基本也是毫无悬念,OpenShift胜出。

Snap1

Oct 192017
 

现在开始搞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

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的版本,版本就清晰很多

  1. 开源版本:OpenShift Origin 3.6
  2. 商业版本: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

k8s

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层跑有状态的应用,业界的测试还是不够的。