春天来了
小蜜蜂也出来了
梨花、杏花、桃花都开了

企业所得税后续管理云起之时,开源有道-红帽

云起之时,开源有道-红帽
开源容器云
为了响应快速变化的业务需求,IT业界正在进行一场变革,在这场变革中,用户通过容器作为手段,在应用程序开发、测试、部署,在IT运维的各个环节进行方方面面的改进和提升。如同第二次工业革命,新技术的应用带来了生产效率和生产力的提升,意味着顺应变革的企业会有更强的竞争能力。它们的应用能更快地上线,想法能更快地变成现实,变成企业的现金收入。相反,没有拥抱新技术和变革的企业的竞争能力将会快速下滑。通过对社区及国内的几场大型容器会议的观察,可以明显感觉到经过了这些年的发展,目前容器技术的使用已经是不可逆转的趋势。企业现在的关注重点已经不再停留于容器技术可不可用,而转变到了如何使用容器,如何用好容器来提升自己IT的效率,提升企业的竞争能力。
既然决定要投入这场变革,拥抱新的技术,那么下一个问题就是:应该怎么做?通过Docker启动一个容器很简单,但是要管理好千千万万个容器东宁天气预报,需要的不仅仅是热情和勇气。
我们需要回答许多问题,如容器镜像从哪里来?怎么保证容器运行环境的安全?如何进行容器的调度?多主机上的容器如何通信?容器的持久化数据怎么解决?处理好这些问题,需要有切切实实可以落地的方案。一个企业要自行解决所有的这些问题,可以说是不可能完成的任务,其需要投入的人力、物力和时间成本,不是单纯一个企业可以接受的。通过现有的技术或平台快速构建企业自有的容器平台,从经济成本及技术难度角度考量,可以说是更为符合现状的合理选择。
现代容器技术的根据地是开源社区。开源社区提供了一个活跃的舞台,这个舞台凝聚来自世界各地的企业、团队及个人。可以说目前开源社区是IT行业创新发生最高度密集的地方。开源软件目前被应用在IT行业的方方面面,如我们的开发工具、编程语言、编程框架、中间件、数据库、操作系统、储存、网络、云等。通过开源社区的技术藤萍作品集,完全可以构建出一个稳定可靠的企业IT技术堆栈。现今企业要基于已有的解决方案构建自有的容器云平台,我认为,开源的容器云平台是一个必然的选择。
OpenShift

图1-1 容器云OpenShift开源项目主页
OpenShift是一个开源容器云平台,是一个基于主流的容器技术Docker及Kubernetes构建的云平台。作为一个开源项目,OpenShift已有5年的发展历史,其最早的定位是一个应用云平台(Platform as a Service,PaaS)。在Docker时代来临之前,各个厂商和社区项目倾向构建自己的容器标准,如CloudFoundry的Warden、OpenShift的Gear,但是在Docker成为主流及社区的技术发展方向后,OpenShift快速地拥抱了Docker,并推出了市场上第一个基于Docker及Kubernetes的容器PaaS解决方案。OpenShift对Docker及Kubernetes的整合和OpenShift项目最大的贡献方红帽公司(Red Hat Inc.)有着很大的关系。Red Hat对于Linux和开源爱好者而言不用过多的介绍,在某个时代,Red Hat几乎成为了Linux的代名词,它是目前世界上最大的开源软件公司,是开源社区的领导者。Red Hat是OpenShift项目最大的贡献者,同时也是Docker和Kubernetes项目重要的贡献方。正是Red Hat对社区技术发展的敏锐触觉促成了OpenShift与Docker及Kubernetes的整合。事实证明这个决定非常明智悍妃无敌。OpenShift前几年在容器和PaaS领域的经验积累,叠加上Docker和Kubernetes容器及容器编排上的特性,一经推出就受到了广泛的关注和好评,连续两年获得InfoWorld年度技术创新大奖。
通过OpenShift这个平台,企业可以快速在内部网络中构建出一个多租户的云平台,在这朵云上提供应用开发、测试、部署、运维的各项服务(如图1-2所示)。OpenShift在一个平台上贯通开发、测试、部署、运维的流程,实现高度的自动化,满足应用持续集成及持续交付和部署的需求;满足企业及组织对容器管理、容器编排的需求。通过OpenShift的灵活架构,企业可以以OpenShift作为核心,在其上搭建一个企业的DevOps引擎,推动企业的DevOps变革和转型。

图1-2 OpenShift上运行的容器应用
Docker、Kubernetes与OpenShift
许多刚接触OpenShift的朋友会有这样一个疑问:“Open-Shift与Docker及Kubernetes的关系究竟是什么?”OpenShift是基于容器技术构建的一个云平台。这里所指的容器技术即包含Docker及Kubernetes。如图1-3所示,OpenShift底层以Docker作为容器引擎驱动,以Kubernetes作为容器编排引擎组件。OpenShift提供了开发语言、中间件、自动化流程工具及界面等元素,提供了一套完整的基于容器的应用云平台。
容器引擎
Docker的优势在于它可以构建一个隔离的、稳定的、安全的、高性能的容器运行环境。目前,OpenShift使用原生的Docker作为平台的容器引擎,为上层组件及用户应用提供可靠安全的运行环境具有十分重要的价值:
Docker有非常大的用户基础。以Docker为基础引擎,降低了用户学习的成本。熟悉Docker的用户可以非常容易地上手。
Docker Hub上有海量的镜像资源新疆工学院。我们日常使用的绝大部分软件,都可以在Docker-
Hub上找到官方的或社区贡献的镜像。所有的这些镜像都可以无缝地运行在OpenShift平台上。
Red Hat本身就是Docker的一个主要贡献者,它们对社区有着很强的影响力,对这个技术的发展也有着很强的领导力。这一点对企业用户来说非常关键,因为谁也不想投资在一个没有前景或过时的技术上。
这里值得关注的一点是OpenShift使用的Docker是原生的Docker,没有任何闭源的修改。因为历史的原因,有些应用云平台如CloudFoundry的选择是兼容Docker的。通过拷贝Docker的部分源代码加入它们的容器引擎中,以读取Docker镜像的内容,然后启动一个非Docker的容器实例。这种兼容的做法,我个人认为是值得商榷的。这让我联想起了当年安卓崛起后,为了挽回颓势,黑莓手机(BlackBerry)推出在自家系统中兼容运行安卓应用的做法。作为曾经黑莓Z10的用户,我非常喜欢那款精致的手机,但不得不说,在黑莓系统上运行安卓应用,简直就是一个噩梦。
容器编排
Docker的流行使得当下每每提起容器时,大家更容易想到的是Docker,甚至说是只有Docker。但是现实是,Docker其实只是容器技术中的一个点。Docker是一款非常优秀和受欢迎的容器引擎,但是当企业或者某一个组织要大规模地将容器技术应用到生产中时,除了有优秀的容器引擎提供稳定可靠及高效的运行环境之外,还需要考虑集群管理、高可用、安全、持续集成等方方面面的问题。单凭一个容器引擎,并不能满足容器技术在生产环境中的需求,尤其是规模较大的生产环境。
在大规模的容器部署环境中,往往涉及成百上千台物理机或者运行于IaaS之上的虚拟机库尔德王 。面对数量庞大的机器集群,用户面临着巨大的管理挑战。举个简单的例子,假设我们需要在100台机器上启动100个容器实例,通过手工的方式在100台机器上执行docker run命令将会是一件疯狂的事情。又比如,我们希望20个容器部署在美国机房、20个容器部署在上海机房、20个容器部署在深圳机房有SSD的服务器上,20个容器部署在深圳机房带万兆网卡的机器上,通过人工或者传统的自动化工具来实现复杂的部署需求将会十分低效。现实是,为了满足容器集群所需的调度、网络、储存、性能及安全的需求,我们必须有专业的工具和平台。这些关于容器集群管理的问题,其实就是容器编排的问题,即Kubernetes要解决的问题。
Kubernetes是Google十多年容器使用经验的总结,虽然Google使用的容器是Docker时代之前的容器,但是业务应用对安全、性能、隔离、网络、储存及调度方面的需求,在最原始的本质上其实并没有发生变化。Google选择和Red Hat一同开源了Kubernetes,且目前在GitHub上的关注程度远远高于其他同类的平台,未来非常可能在容器编排领域成为类似Docker一样的“事实标准”辛香汇官网。
OpenShift集成了原生的Kubernetes作为容器编排组件。OpenShift通过Kubernetes来管理容器集群中的机器节点及容器,为业务应用提供:
容器调度:按业务的要求快速部署容器至指定的目标红土香。
弹性伸缩:按业务的需要快速扩展或收缩容器的运行实例数量。
异常自愈:当容器实例发生异常,集群能自动感知、处理并恢复服务状态。
持久化卷:为散布在集群不同机器上的容器提供持久化卷的智能对接。
服务发现:为业务微服务化提供服务发现及负载均衡等功能。
配置管理:为业务应用提供灵活的配置管理及分发规则。
容器应用云
前文谈到了容器引擎及容器编排,这两项是容器技术的重要基石。掌握这两个基石,用户就具备了运维大规模容器集群的能力。现实中用户考虑使用容器应用平台的一个最终的目的就是提高生产效率。容器引擎及容器编排组件是两项关键的技术,但是光有技术还不能满足生产效率的要求。在这些技术及框架的基础上,必须有更丰富的内容以及更友好的用户接入方式,把这些技术转化成实实在在的生产力。
OpenShift在Docker和Kubernetes的基础上提供了各种功能,以满足业务应用、研发用户及运维用户在生产效率上的诉求。
应用开发框架及中间件。OpenShift提供了丰富的开箱即用的编程开发框架及中间件,如Java、PHP、Ruby、Python、JBoss EAP、Tomcat、MySQL、MongoDB及JBoss系列中间件等。
应用及服务目录。OpenShift提供了如软件市场式的服务及应用目录蔡贵照,可以实现用户一键部署各类应用及服务,比如一键部署Hadoop集群和Spark集群。
自动化流程及工具。OpenShift内置了自动化流程工具S2I(Source to Image),帮助用户自动化完成代码的编译、构建及镜像发布。
软件自定义网络阻击罪恶。企业所得税后续管理通过OpenVSwitch,OpenShift为用户提供了灵活强健的软件定义网络。实现跨主机共享网络及多租户隔离网络模式。
性能监控及日志管理。OpenShift提供了开箱可用的性能监控及日志管理的组件。通过平台,业务能快速获取运行状态指标,对业务日志进行收集及分析。
多用户接口。OpenShift提供了友好的Web用户界面、命令行工具及RESTful API。
自动化集群部署及管理。OpenShift通过Ansible实现了集群的自动化部署,为集群的自动化扩容提供了接口。
通过前面的介绍,我们可以了解到OpenShift在Docker及Kubernetes的基础上做了方方面面的创新,最终目的就是为用户及业务应用提供一个高效、高生产力的平台。
OpenShift社区版与企业版
OpenShift是一个开源项目,所有的源代码都可以在GitHub仓库上查阅及下载。企业和个人都可以免费下载和使用OpenShift构建属于自己的容器云平台。我们也可以加入OpenShift的社区成为一名光荣的OpenShift社区贡献者。
开源软件的一大好处在于,用户可以自由选择和免费使用。缺点是没有人会对软件的使用提供支持保障。对于个人用户来说,这不是问题。但是对于企业来说,更多是希望有人能在出现问题的时候提供专业的支持和保障。这种需求给一些公司提供了机会,他们在开源软件的基础上进行定制、测试、修复及优化,推出企业版本,并对之进行支持冷宫凰后。这种软件称为开源商业软件。Red Hat就是开源软件商业模式的奠基人,而且是目前世界上最大的开源软件公司。OpenShift的开源社区版本叫OpenShift Origin,Red Hat在OpenShift Origin的基础上推出了OpenShift的企业版本,其中包含了公有云服务OpenShift Online及私有云产品OpenShift Container Platform(以前也称为OpenShift Enterprise)。更多关于OpenShift企业版的信息可以访问OpenShift企业版的主页:http://www.openshift.com。
OpenShift的企业版和社区版在代码上十分相似,功能上可以说是基本一致。企业版是基于某个社区版版本产生的。作为一个开源软件公司,Red Hat所有产品的企业版的源代码也是完全公开的。就我个人的经验而言,企业版往往会更稳定,因为社区版的代码变化会更频繁。
经常会被问到这样一个问题:“究竟我们是使用社区版还是企业版比较好?”这个问题没有唯一的答案,要视用户所处的使用场景而言。对于个人用户的开发测试及出于研究目的而言,社区版会是一个不错的选择,王敏彤但是其实OpenShift的企业版也对个人用户免费开放。对于企业的关键业务应用的部署而言,企业版自然会是更好的选择,企业版除了稳定以外,还有专业的售后支持。
目前一些OpenShift的企业客户,在使用OpenShift企业版的同时,也会将他们的需求以提案或代码的方式提交到社区,在被社区评审接纳以后融入成为OpenShift产品未来版本的核心特性。这样做的好处是,企业所需的功能往后就由社区进行维护,不存在如自定义的修改在未来版本还需要进行测试及匹配,从而带来不可预知的工作量和风险。企业用户参与到开源社区,可以对产品的发展方向发表自己的看法赵c 。从而避免在传统的闭源商业软件时代用户只能被厂商牵着鼻子走的窘境。
本书的内容将以OpenShift社区版OpenShift Origin进行探讨及讲解。相关的经验也适用于OpenShift的企业版OpenShift Container Platform。在一般情况下,本书将直接使用OpenShift来指代OpenShift的社区版和企业版。在企业版和社区版存在差异的情况下,将会特别标注。
接下来让我们扬帆起航,开启一段通往企业容器云的旅程。
关于作者

陈耿吉米造型,红帽资深方案架构师,RHCA。是国内最早接触OpenShift容器云的技术专家之一,红帽中国OpenShift核心团队成员。有丰富的容器及应用容器云项目经验,致力于开源容器技术的推广与实践。
Red Hat官方技术专家出品,来自中国的OpenShift社区专著
开源容器云OpenShift:构建基于Kubernetes的企业应用云平台
ISBN:978-7-111-56951-0
作者:陈耿
深入浅出地介绍如何搭建OpenShift容器云平台,并在这个平台上进行应用的开发和部署。探讨在OpenShift上如何满足软件研发常见的需求,如持续集成和交付,微服务化、数据持久化等。同时,探讨OpenShift的软件定义网络、高可用、配额控制等与运维息息相关的话题。
该书正在京东热卖,点击“阅读原文”查看更多信息。
聚合内容