Kubernetes、OpenShift 与 IBM 简史

最近,IBM Cloud 上推出了 Red Hat® OpenShift® (注:Red Hat 即红帽),这引发了我对于其起源以及它为何如此受开发者欢迎的好奇心。在最近的 KubeCon 会议上,不论是坐在我旁边听讲座的开发者还是我在午餐时碰到的许多开发者都在谈论他们是如何使用 OpenShift 的。他们都对 OpenShift 赞不绝口,从他们那里,我了解到金融机构正在使用 OpenShift 对交易进行分析,零售商正在使用 OpenShift 为他们的客户创造新的体验。

OpenShift 是一个面向混合云的企业级 Kubernetes 应用程序平台。IBM Cloud 现在将其作为托管型解决方案提供,或者作为内部平台即服务(PaaS)提供。它是在 Red Hat Enterprise Linux 的基础上围绕容器技术构建的,由 Kubernetes 进行容器编排和管理。

随着云计算的发展,OpenShift 已成为最受欢迎的开发和部署平台之一,因其显著的优势而广受好评。随着云应用开发日渐成为我们的“常态”,作为工具箱中的又一件创建正确解决方案的新工具,考虑 OpenShift 的合适定位是很有趣的事情。它可与传统的内部应用软件、云函数服务(cloud functions)、Cloud Foundry 或物理机等选项混合使用。

在本博客中,我和我的同事 Olaph Wagoner 回顾了 OpenShift 的起源,并展望了它在基于 Kubernetes 的企业级应用程序开发领域中所发挥的作用。

下图展示了 OpenShift、IBM 和 Kubernetes 的时间线:

OpenShift、IBM 和 Kubernetes 时间线

早期的 OpenShift:2011 年 – 2013 年

OpenShift 最初于 2011 年推出,依赖于 Linux 容器来部署和运行用户应用程序,Joe Fernandes 在红帽为何要为 OpenShift 选择 Kubernetes 中对此进行了描述。OpenShift 于 2011 年诞生之时依靠 Linux 容器来部署和运行用户应用程序。OpenShift V1 和 V2 使用红帽自自己的的平台专有的容器运行时环境和容器编排引擎作为基础。

然而,OpenShift 的传奇故事在其发布前就已经开始了。OpenShift 的一部分源自于红帽 2010 年 11 月宣布的 Makara 收购行动。那次收购将软件作为系统基础之上抽象层提供,并且包含了适用于 PHP 和 Java 应用程序、Tomcat 或 JBoss 应用服务器以及 Apache Web 服务器的运行时环境。

早期 OpenShift 使用了一种称为“齿轮”(gear)的专有类型的容器技术。OpenShift 的节点包含了某种形式的容器化。“齿轮”这一比喻正是基于容器的本质。OpenShift 将孤立的集群称之为“齿轮”:此类齿轮无需拆解整个机制即可生产工作。单个齿轮与一个用户相关联。为了利用这些齿轮制作模板,OpenShift 使用了从 Makara 获取的 cartridge 技术。(注:cartridge 可以理解为 OpenShift 中承载应用的实体。)

OpenShift 本身直到 2012 年才正式开源。2013 年 6 月,OpenShift V2 发布,带来了cartridge 格式的改变。(注:2015 年发布的 OpenShift V3 中,cartridge 概念已不再使用,它对应于 OpenShift V3 中的 pod,pod 也是 Kubernetes 中的一个概念。)

Docker 颠覆了一切

Docker 最初是由一家名为 dotCloud 的公司发起的项目,在 2013 年 3 月才作为开源项目提供。Docker 的出现让容器技流行起来并带来了一批优雅的工具,使得开发者能够在这个新平台上利用并转移现有的技能进行开发。

红帽是 Docker 的早期采用者,双方于 2013 年 9 月宣布合作。2014 年 12 月,IBM 与 Docker 达成战略合作伙伴关系。从项目的早期开始就有多名 IBM 工程师一直在为以 Docker 为代表的多个基础容器技术项目贡献代码。

Kubernetes 的出现

Kubernetes 于 2014 年诞生于 Google,并逐渐成为管理容器的标准方法。

虽然 Kubernetes 最初由 Google 设计,但现如今它已成为一个开源项目,由云原生计算基金会(CNCF) 负责维护,红帽和 IBM 都为 Kubernetes 贡献了大量的代码,对于其开源功不可没。

根据 kubernetes.io 的说法,Kubernetes 旨在提供一个跨主机集群的“应用程序容器的自动部署、扩展和运维系统”。它适用于包括 Docker 在内的一系列容器工具。

利用容器,您可以进入模块化应用程序设计,其中数据库是独立的,并且您无需对机器进行扩展即可对应用程序进行扩展。

Kubernetes 是 IBM 早期就参与并作出贡献的另一个开源项目。在下图中,您可以看到对 Docker、Kubernetes 和 Istio 这几个容器相关项目中贡献度排名前 5 的组织,以及 IBM 在这其中作出贡献所占的百分比。它突显了容器技术对 IBM 的重要性,以及 IBM 在这些开源项目中的工作量。

IBM 对开源容器技术的部分贡献

OpenShift V3.0:开放和标准

红帽在 2014 年 8 月宣布将在 OpenShift V3 中使用 Docker。事实上在幕后,从 V2 到 V3 的跨越是巨大的。OpenShift 从使用 gear 和 cartridge 转变为使用容器和镜像。为编排这些镜像,红帽从 V3 开始使用 Kubernetes

开发者世界同样因 Kubernetes 的吸引力而群情激昂,原因包括但不限于:

  • Kubernetes Pod 支持将一个或多个容器作为单个原子单元进行部署。
  • 服务可以使用固定的地址访问一组 Pod,并使用集成 IP 和基于 DNS 的服务发现功能将这些服务链接在一起。
  • 复制控制器(replication controllers)确保指定数量的 Pod 的始终运行,并使用标签(label)来识别 Pod 和其他 Kubernetes 对象。
  • 借助功能强大的网络模型,可以跨多个主机管理容器。
  • 编排存储的能力允许您可以在容器内运行无状态和有状态服务。
  • 简化的编排模型可以让应用程序快速运行,而不需要复杂的两层调度器。
  • Kubernetes 的架构设计是基于对开发者和运维人员的不同需求的理解,并且将双方的需求都纳入考量,从而避免了为了折衷而牺牲任何一方的情况。

OpenShift 引入了功能强大的用户界面,其利用源代码到镜像(Source-To-Image)和管道(pipeline)技术来快速创建和部署应用程序。Kubernetes 之上的这些附加层得到简化并吸引了新的开发者受众。

IBM 早已开始为构建 OpenShift 所基于的关键开源组件贡献代码。下图展示了 OpenShift 使用 Kubernetes 的时间线:

OpenShift 使用 Kubernetes 的时间线

OpenShift V4.0 及其未来展望

红帽在容器技术方面的身先士卒是有目共睹的,它对于 CNCF 项目所作出的贡献仅次于 Google。我还想提一提红帽最近的另一项成就,即 2018 年 1 月收购了 CoreOS。CoreOS 的旗舰产品是一款轻量级的 Linux 操作系统,旨在运行容器化的应用程序,红帽在 OpenShift V4 中将其作为 “Red Hat Enterprise Linux CoreOS” 推出。

这只是 V4 中实现的诸多激动人心的改进之一。正如之前的时间线图中所示,OpenShift Service Mesh(服务网格)将 Istio 的监视功能与 Jaeger 和 Kiali 的显示功能合二为一,还加入 Knative 无服务器的支持,以及使用 Kubernetes 操作程序(operators)来实现应用程序管理的自动化。

殊途同归。IBM 也是 IstioKnativeTekton 开源代码的重要贡献者。这些技术将为未来 10 年基于容器的企业级应用开发铺平道路。

OpenShift V4.0 最近才公诸于世。Red Hat OpenShift on IBM Cloud™ 是 IBM 和红帽的全新合作,它将 Red Hat OpenShift 与 IBM Cloud Kubernetes Service 整合在一起。更多亮点信息,可查看先前的时间线图。

结束语

研究 OpenShift 的起源和历史很有意思。以 OpenShift 为镜鉴,我们可以看到软件开发这 10 年正是容器技术突飞猛进的 10 年。

在过去 10 年中,通过深度分层、推进同样令 IBM 感兴趣的技术的发展,并为此投入大量工程资源,红帽为了打造出 OpenShift 这样一个引人注目的容器平台所付出的努力、精力和动力都令人印象深刻。

我们期待着在今后岁月里能够学习并使用这些云技术来构建新的应用。

参考资源

本文翻译自:A brief history of Kubernetes, OpenShift, and IBM(2019-08-01)

加入讨论