挑战
2016年,Booking.com迁移到OpenShift平台,使产品开发人员能够更快地访问基础设施。但是由于Kubernetes被抽象出来,远离了开发人员,当挑战出现时,基础设施团队就变成了“知识瓶颈”。试图扩大这种支持是不可持续的。
解决方案
在OpenShift运行了一年之后,平台团队决定构建自己的香草Kubernetes平台,并要求开发人员学习一些Kubernetes才能使用它。“这不是一个神奇的平台,”B platform Track首席开发者Ben Tyler说。“我们并不是说你闭着眼睛就可以使用它。开发者需要学习,我们将尽一切努力确保他们能够获得这些知识。”
影响
尽管有学习曲线,但Kubernetes新平台的采用仍有很大提升。在使用容器之前,如果开发人员了解Puppet,创建一个新服务可能需要几天时间,如果不了解Puppet,则需要几周时间。在新的平台上,这可能只需要10分钟。在头8个月里,该平台上建立了大约500项新服务。
这项技术给人留下了深刻的印象,但由于需要大规模的企业功能,该网站平均每天处理150多万个房间夜间预订,团队决定采用OpenShift平台。
该平台采用Heroku风格的高级CLI界面,B platform Track的首席开发人员Ben Tyler表示,“我们的产品开发人员肯定很喜欢它。”。“我们让他们更快地访问基础设施。”
但是,他补充道,“任何时候,只要有一些事情稍微偏离了轨道,开发人员都不具备支持自己所需的任何知识。”
他说,在运营这个平台一年之后,基础设施团队发现它已经成为“知识瓶颈”。“大多数使用它的开发人员并不知道它下面是Kubernetes。应用程序和平台的失败都像是heroku式工具的失败。”
扩展必要的支持似乎不可行或不可持续,因此平台团队需要一个新的解决方案。对Kubernetes的了解使他们有信心构建自己的vanilla Kubernetes平台,并对其进行定制以满足公司的需求。
B平台轨道的高级系统管理员Eduard Iacoboaia说:“对于进入这个领域,OpenShift绝对是非常有用的。”“它向你展示了这项技术可以做什么,而且它让你使用起来很容易。在我们花了一些时间之后,我们意识到我们需要更好地学习Kubernetes,以便充分利用它的潜力。在那一刻,我们做出了转变,建立了我们自己的Kubernetes平台。从长远来看,我们迈出这一步,投入时间获取知识,肯定会从中受益。”
Iacoboaia的团队已经定制了很多OpenShift工具,使它们在Booking.com上工作,他说,“这些集成点有点脆弱。”。“我们花了更多的时间了解Kubernetes的所有组件,它们是如何工作的,它们是如何相互作用的。”这项研究导致团队从OpenShift的内置Ansible剧本转向Puppet部署,后者用于Booking的其余基础设施。控制平面也从集群内部转移到了裸机上,因为该公司运行着数万台裸机服务器和一个用于在裸机上运行应用程序的大型基础设施。(预订在不同地区的多个数据中心的多个集群中运行Kubernetes),Iacoboaia说:“我们决定让它尽可能简单,并使用我们最熟悉的工具。”。
另一个大的变化是,产品工程师必须学习Kubernetes才能使用。“这不是一个神奇的平台,”泰勒说。“我们并不是说你闭着眼睛就可以使用它。开发者需要学习,我们将尽一切努力确保他们能够获得这些知识。”这包括培训、博客文章、视频和Udemy课程。
尽管有学习曲线,新Kubernetes平台的采用率还是有了很大的提升。泰勒说:“我认为我们之所以能够成功达成协议,是因为我们没有要求他们学习专有的应用程序系统。”。“我们要求他们学习一些开源的知识,这些知识是可以转移的。他们通过学习Kubernetes来投资自己的事业。”
这一策略取得成功的一个明显迹象是,在支持渠道中,当用户有问题时,其他产品工程师会立即响应。Tyler说道:“我之前从未在公司内部看到过这种针对特定平台产品的社区参与。“这很有帮助,因为它显然是公司之外的一个生态系统标准,所以人们觉得投资这些知识并与他人分享是有价值的,这真的、真的很强大。”
还有其他可量化的证据:在使用容器之前,如果开发人员理解Puppet,创建一个新服务可能需要几天时间,如果他们不理解Puppet,可能需要几周时间。在新的平台上,只需要10分钟。“我们有教程。您可以按照教程进行操作。你的代码正在运行。然后,就是业务逻辑时间了。”泰勒说。“获得资源的时间大大缩短了。”在平台上线的头8个月里,我们创造了大约500个新服务,并且每天都有数百个新版本问世。
泰勒说,这个平台提供了不同的“可以说是不同层次的合同”。“从根本上说,这只是Kubernetes。如果你是Kubernetes的专业用户,这里有一个Kubernetes API,就像你从GKE或AKS获得的一样。我们正试图成为同一级别的提供商。但我们在公司内部的全部工作是成为一个比普通基础设施更大的附加值,因此我们为我们的主要堆栈Perl和J提供一组基本映像艾娃。”
泰勒说:“随着我们的用户学习Kubernetes并成为更加成熟的Kubernetes用户,他们向我们施加压力,要求我们提供更好的、更具本土特色的Kubernetes体验,这非常好。”。“这是一种超级健康的动力。”
该平台还包括其他CNCF技术,如特使、赫尔姆和普罗米修斯。Booking.com的大部分关键服务流量都是通过特使路由的,普罗米修斯主要用于监控基础设施组件。头盔作为包装标准使用。该团队还开发并开放了Shipper,这是Kubernetes的一个扩展,用于添加更复杂的部署策略和多集群编排。
诚然,内部一直在讨论从头开始构建Kubernetes平台是否明智。泰勒说:“这并不是我们的核心竞争力——库伯内特斯和旅游,它们有点相去甚远。”。“但我们已经在CNCF组件上下了几笔赌注,这些组件对我们来说效果非常好。特别是特使和库伯内特斯,对我们的组织非常有益。我们能够定制它们,要么是因为我们可以查看源代码,要么是因为它们有扩展点,我们能够很快从中获得价值不必在内部改变任何范式,就可以轻松地完成任务。”