附录C Box:案例研究

以下内容最初由CNCF发布在Kubernetes.io上,并且在此获得许可。

在2014年夏天,Box对沉淀了十年的硬件和软件基础架构的痛苦,这无法与公司的需求保持一致。

该平台为超过5000万用户(包括政府和大型企业如通用电气公司)管理和共享云中的内容,Box最初是一个使用PHP写的具有数百万行的庞大代码,内置裸机数据中心。它已经开始将单体应用分解成微服务。 “随着我们扩展到全球各地,公有云战争正在升温,我们开始专注于如何在许多不同的环境和许多不同的云基础架构提供商之间运行我们的工作负载”,Box联合创始人和服务架构师Sam Ghods说。 “迄今为止,这是一个巨大的挑战,因为所有这些不同的提供商,特别是裸机,都有非常不同的接口和与合作方式。”

当Ghods参加DockerCon时,Box的云原生之旅加速了。该公司已经认识到,它不能再仅仅使用裸机来运行应用程序,正在研究Docker容器化,使用OpenStack进行虚拟化以及支持公有云。

在那次会议上,Google宣布发布Kubernetes容器管理系统,Ghods成功了。 “我们研究了许多不同的选择,但Kubernetes确实很出色,特别是因为Borg老兵的团队非常强大,可以以基础架构不可知的方式来运行云软件,”他谈到 Google内部的容器调度器Borg。 “事实上,一开始它设计与裸机一样运行,就像我们可以在数据中心内迁移到它一样,然后也使用相同的工具和概念在公有云提供商上运行。”

另外:Ghods喜欢Kubernetes拥有一套通用的API对象,如pod、服务、副本集和部署,这些对象创建了一个一致的接口来构建工具。 “甚至像OpenShift或Deis这样的构建在Kubernetes之上的PaaS层仍然将这些对象视为统一的原则,”他说。 “我们很高兴能够在整个生态系统中共享这些抽象概念,这会产生比我们在其他潜在解决方案中更多的动力。”

六个月后Box在一个生产数据中心的集群中部署了Kubernetes。Kubernetes在0.11版本之前仍然是测试版。他们从小版本开始:Ghods的团队在Kubernetes上运行的第一个服务就是Box API监视器,确认了Box可以运行。 “这只是一个让整个管道运作正常的测试服务,”他说。接下来是一些处理作业的守护进程,它们“很好而且安全,因为如果他们遇到任何中断,也不会让来自客户的同步传入请求失败。”

几个月后,该团队可以发送并要求提供信息的第一个实时服务启动。那时,Ghods说:“我们对Kubernetes集群的稳定性感到满意。我们开始迁移一些服务,然后我们将扩大集群的规模和端口数量,最后每个数据中心的服务器数量大约为100台,这些服务器纯粹专用于Kubernetes。在未来的12个月里,这个数字将会增长很多,达到数百甚至数千。“

在观察开始使用Kubernetes进行微服务的团队时,“我们看到正在发布的微服务数量有所增加,”Ghodsnotes说。 “显然,通过微服务构建软件的方式已被压抑很久,随着灵活性的提高帮助我们的开发人员提高了生产力,并为更好的架构选择做好了准备。”

Ghods反映,作为早期采用者,Box经历了不同的旅程。他说:“我们肯定是在等待某些事情稳定和功能发布,我们在这一步上被锁定,​​”他说。 “在早期,我们对Kubectl应用等组件做了很多贡献,并等待Kubernetes发布,然后我们会升级,贡献更多,并来回多次。整个项目从我们第一次在Kubernetes上进行实际部署到GA需要大约18个月的时间。如果我们今天自己来做一遍同样的事情,可能会少于六个月。“

无论如何,Box无需为Kubernetes做过多修改。Ghods说:“我们团队在Box中实施Kubernetes所做的绝大多数工作一直致力于在我们现有的(往往是遗留下来的)基础架构内的工作,例如将我们的基础操作系统从RHEL6升级到RHEL7或将其整合纳入到我们的监控基础架构Nagios。但总体而言,Kubernetes非常灵活,能够适应我们的许多限制因素,并且它在我们的裸机基础架构上运行非常成功。“

对于Box来说,更大的挑战也许是文化上的挑战。Ghods说:“Kubernetes和一般的云本身代表了一个非常大的范式转换,并且它不是非常渐进的,”Ghods说。 “我们可以这样说,Kubernetes将会解决所有问题,因为它能够以正确的方式做事,一切都会变得更好。但是要记住,它不像其他许多解决方案那样可靠。你不能说这家或那家公司花了多少时间做这件事,因为还没有那么多。我们的团队必须真正为资源而战,因为我们的项目有一点点的恐惧。“

从经验中学习,Ghods为经历类似挑战的公司提供了以下两条建议:

  1. 提前和经常交付。对于Box来说,服务发现是一个巨大的问题,团队必须决定是建立一个临时解决方案还是等待Kubernetes本身满足Box的独特要求。经过多次辩论之后,“我们刚开始专注于提供可行的解决方案,然后处理可能在稍后迁移到更原始的解决方案,”Ghods说。 “无论多么微不足道,团队的上述目标应始终是为基础架构上的实际生产用例服务。这有助于保持团队本身和组织对项目的看法。“
  2. 保持开放的态度,了解公司必须从开发人员那里抽象出什么和没有抽象出什么。早期,团队在Dockerfiles之上构建了一个抽象,以帮助确保所有容器镜像具有正确的安全更新。事实证明这是多余的工作,因为容器镜像是不可变的,您可以在构建后扫描它们以确保它们不包含漏洞。因为通过容器化来管理基础架构是一个不连续的飞跃,所以最好先直接使用本地工具学习其独特的优势和注意事项。抽象只能在实际需要出现之后才能建立。

最后,影响力非常强大。“在Kubernetes之前,”Ghods说,“我们的基础架构非常陈旧,需要6个多月才能部署一个新的微服务。现在,一个新的微服务部署时间不到五天。我们正在努力让它达到不到一天。诚然,这六个月的大部分时间都是由于我们的系统有多么糟糕,但裸机本质上是一个难以支持的平台,除非您有像Kubernetes这样的系统来帮助管理它。“

按Ghods的估计,Box距离完成90%运行在Kubernetes上的目标还有几年的时间。 “到目前为止,我们已经完成了一项稳定的,关键任务的Kubernetes部署,它提供了很多价值,”他说。 “现在我们10%左右服务器都运行在Kubernetes上,我认为明年我们可能会超过一半。我们正在努力实现所有无状态服务使用案例,并计划在此之后将我们的重点转移到有状态服务。“

事实上,这就是他在整个行业中的设想:Ghods预测Kubernetes有机会成为新的云平台。 Kubernetes提供了一个涵盖不同云平台的API,包括裸机,以及“当我们可以针对单一界面进行编程时,我不认为人们已经看到了可能的全部潜力”,他说。 “与AWS改变基础架构一样,您不必再考虑服务器或机柜或网络设备,Kubernetes使您能够专注于您正在运行的软件,这非常令人兴奋。这是愿景。“

Ghods指出了已经在开发或最近发布的作为云平台的项目:集群联邦,Dashboard UI和CoreOS的etcd operator。 “我真的相信这是我在云基础架构中看到的最激动人心的事情,”他说,“因为它是一个前所未有的自动化和智能环境,其基础架构对每个基础架构平台都是可移植和不可知的。”

由于早期决定使用裸机,Box不得已开始了Kubernetes之旅。但是Ghods表示,即使公司现在不必对云提供商不可知,Kubernetes也可能很快成为行业标准,因为越来越多的工具和扩展是围绕API构建的。

“同样的方式,偏离Linux是没有意义的,因为它是如此的标准,”Ghods说,“我认为Kubernetes正在走相同的道路。现在还处于早期阶段 ——文档仍然需要工作,用于编写和发布YAML到Kubernetes集群的用户体验仍然很艰难。当你处于潮流最前线时,你可能会做出一些牺牲。但底线是,这是行业发展的方向。从现在开始的三到五年,如果您还会以其他方式运行基础架构,那么真的会让人非常震惊。“

Copyright © 2017-2022 | Distributed under CC BY 4.0 | jimmysong.io all right reserved. Updated at 2022-07-13 05:10:08

results matching ""

    No results matching ""