原文标题:A brief history of Kubernetes, OpenShift, and IBM
原文链接:https://developer.ibm.com/blogs/a-brief-history-of-red-hat-openshift/
作者:Anton McConville, Olaph Wagoner
发布日期:2019年8月1日
最近,IBM公有云上推出了红帽的OpenShift服务,这引发了我对它的起源以及它为何如此受开发人员欢迎的好奇心。在最近的KubeCon会议上,坐我旁边聊天的或在午餐时碰到的许多开发人员都提到他们是如何使用OpenShift的。我从开发人员那里了解到,金融机构正在使用OpenShift对交易进行分析,零售商正在使用OpenShift为他们的客户创造新的体验。
OpenShift是一个面向混合云的企业级Kubernetes应用平台。现在,IBM公有云将它作为托管解决方案或本地私有平台即服务(PaaS)提供。OpenShift是在红帽企业Linux(Red Hat Enterprise Linux)的基础上,围绕容器技术构建的,由Kubernetes进行容器编排和管理。
随着云计算的发展,OpenShift成为了最受欢迎的应用开发和部署平台之一,赢得了开发者们基于价值的尊重。随着云应用的开发对我们来说变得越来越“正常”,作为创建正确解决方案的工具箱中的又一件新工具,考虑OpenShift的合适定位是很有趣的事情。OpenShift可以与传统的内部应用软件、云函数服务(Cloud functions)、Cloud Foundry或物理机混合使用。
在这篇博客文章中,我和我的同事Olaph Wagoner将回溯过去,搞清楚OpenShift的发展历史。我们也会展望OpenShift在基于Kubernetes的企业级应用程序开发领域的发展前景。
下图展示了OpenShift、IBM和Kubernetes的时间线:
发展早期的OpenShift: 2011-2013
OpenShift于2011年首次推出,依赖于Linux容器来部署和运行用户应用程序,正如Joe Fernandes在《红帽为什么为OpenShift选择Kubernetes》(Why Red Hat Chose Kubernetes for OpenShift) 一文中所描述的那样。
OpenShift V1和V2使用红帽自己的平台专有的容器运行时环境和容器编排引擎作为基础。
然而,OpenShift的故事开始于它正式发布之前。OpenShift的一部分来自于红帽2010年11月宣布的对Makara的收购。那次收购提供了作为操作系统之上抽象层的软件组件,包括PHP和Java应用运行时环境、Tomcat或JBoss应用服务器,以及Apache Web服务器。
早期的OpenShift使用称为“齿轮”(gears)的专有容器技术。OpenShift的节点包括了某种形式的容器化。“齿轮”的隐喻即基于容器的本质。OpenShift将独立的集群称之为“齿轮”:能够作为一个整个机构的一部分协同工作的东西。单个“齿轮”与某个特定用户相关联。为了用这些“齿轮”制作模板,OpenShift使用了从Makara获得的“墨盒”(cartridge)技术。
OpenShift本身直到2012年才正式开源。2013年6月,OpenShift V2发布,带来了cartridge格式的改变。
Docker改变了一切
Docker是由一家名为dotCloud的公司发起的一个项目,于2013年3月作为开源软件推出。Docker的出现让容器技术变得流行,它使得开发者能够利用现有的技能在这个新平台上用优雅的工具进行开发。
红帽是Docker技术的早期采用者,于2013年9月即宣布与Docker的合作。2014年12月,IBM也与Docker建立了自己的战略伙伴关系。多个IBM的工程师从项目的早期开始就一直在为以Docker为代表的多个基础容器技术项目贡献代码。
Kubernetes的出现
Kubernetes源自2014年谷歌的开发工作,到目前为止它已经成为管理容器的标准方式。
虽然Kubernetes最初是由谷歌设计的,但现在它是由云原生计算基金会(CNCF)维护的开源项目,红帽和IBM都为Kubernetes贡献了大量的代码。
根据kubernetes.io的说法,Kubernetes的目标旨在提供一个跨主机集群的“应用程序容器的自动部署、扩展和运维系统”。它可以支持包括Docker在内的一系列容器工具。
使用容器,你可以进入模块化的应用程序设计,其中数据库是独立的,并且你可以扩展应用程序而无需考虑单个机器的扩展。
Kubernetes是另一个IBM作为早期贡献者参与的开源项目。在下图中,你可以看到与容器技术相关的多个项目:Docker、Kubernetes和Istio中贡献度排名前5的组织,以及红帽和IBM的相应贡献度排名情况。它强调了容器技术对IBM的重要性,以及IBM在这些开源项目中的工作量。
OpenShift V3.0: 开放和标准
红帽在2014年8月宣布打算在OpenShift V3中使用Docker。在幕后,从V2到V3的跳跃是相当大的。OpenShift从使用gears和cartridges发展到容器和镜像。为了编排和调度容器镜像,红帽从V3开始正式使用Kubernetes作为核心技术平台。
开发者们被Kubernetes所吸引,对其兴趣与日俱增的主要原因如下:
Kubernetes使用Pod将一个或多个容器作为原子单元部署
通过服务(Services)可以使用固定的地址访问一组Pod,并且可以使用集成的基于IP和DNS的服务发现将这些服务链接在一起
复制控制器(Replication controllers)确保指定数量的Pod的始终运行,并使用标签(Labels)来标识Pod和其它Kubernetes对象
强大的网络模型支持对容器的跨主机管理
存储编排能力允许你在容器中运行无状态和有状态服务
简化的编排模型可以让应用程序快速运行,而不需要复杂的两层调度器
Kubernetes的架构设计是基于对开发人员和运维人员的需求不同的理解,并且将双方的需求都考虑在内,这避免了为折衷而牺牲任何一方的情况
OpenShift引入了强大的用户界面,通过源代码到镜像(Source-To-Image )和管道(pipelines)技术快速创建和部署应用程序。Kubernetes之上的这些附加层简化并吸引了新的开发者受众。IBM也为构建OpenShift的关键开源组件贡献了大量源代码。
下图展示了OpenShift使用Kubernetes的发展历史:
OpenShift V4.0和未来
红帽显然处于容器技术发展的前沿,在CNCF项目上的贡献仅次于谷歌。红帽最近的另一项成就是2018年1月收购了CoreOS。CoreOS的旗舰产品是一款轻量级的Linux操作系统,旨在运行容器化的应用程序。红帽在OpenShift V4中将其作为“红帽企业Linux CoreOS”(Red Hat Enterprise Linux CoreOS)推出。
这只是V4中许多激动人心的进展之一。如上图所示,OpenShift服务网格将Istio的监控能力与Jaeger和Kiali的显示能力相结合,还加入了Knative无服务器的支持,以及使用Kubernetes Operator来实现应用程序管理的自动化。
IBM和红帽在容器技术领域的发展之路也在这里汇合。IBM也是Istio、Knative和Tekton开源项目的主要贡献者。它们将会是未来10年基于容器的企业级应用开发的核心技术。
OpenShift V4.0是近期刚刚发布的。IBM公有云上的红帽OpenShift托管服务是IBM和红帽合作整合OpenShift和IBM Cloud Kubernetes服务的努力。更多关键信息,请查看之前的时间线配图。
结论
研究OpenShift的起源和历史很有趣。将OpenShift的历史作为镜鉴,我们看到了软件开发的这10年确实是以容器为中心大发展的10年。
令人印象深刻的是,在过去10年中红帽公司投入了大量的工程资源和精力、专注和驱动力来创建OpenShift这样一个引人注目的容器平台。IBM也同样对这些技术非常感兴趣。
我们期待着在未来的数年中学习和使用这些云技术来构建新的应用。