公司盒子 位置加州雷德伍德城 行业技术

挑战

这家企业内容管理公司成立于2005年,允许其5000多万用户在云中管理内容。盒子主要用公司自身的数据中心内的裸金属建成,单片PHP代码库。由于该公司在全球范围内扩展,因此需要关注“我们如何在裸机到公共云中的许多不同的云基础架构中运行我们的工作量,”盒子的Sam Ghods,Cofound和服务架构师表示。“由于不同的云,特别是裸露的金属,这是一个巨大的挑战,具有非常不同的界面。”

解决方案

在过去的几年中,Box一直在将其基础设施分解为微服务,并成为了微服务的早期采用者和贡献者,Kubernetes集装箱编配。Ghods说,Kubernetes让Box的开发者“瞄准了一套通用的概念,可以在所有的云上移植。”

影响

“在Kubernetes之前,”Ghods说,“我们的基础设施非常陈旧,以至于我们花了6个多月的时间来部署一个新的微服务。如今,一项新的微服务只需不到5天就可以部署完毕。我们正在努力把时间缩短到一小时。”

2014年夏天,Box感到了十年来硬件和软件基础设施跟不上公司需求的痛苦。

一个允许其超过5000万用户的平台(包括政府和大型企业通用电气(General Electric))在云中管理和共享内容,框最初是一个PHP数以百万计的代码线属于其自身的数据中心内部的裸机构建。它已经开始慢慢削减巨石,将其分解为微服务。“正如我们在全球各地的地区扩展,随着公共云战争一直在升温,我们就在讨论我们在许多不同环境中运行我们的工作量以及许多不同的云基础架构时,我们一直专注于我们的工作量。提供商,“Box Cofounder和Services Architect Sam Ghods说。迄今为止,这是一个巨大的挑战,因为所有这些不同的提供商,尤其是裸露的金属,具有非常不同的接口和与他们一起工作的界面。“

在那年6月,当Ghods参加的时候,Box的云之旅加速了dockercon.。该公司已经意识到,它不能再在裸金属上运行应用程序,并正在研究Docker的容器化、OpenStack的虚拟化以及支持公共云。

在那次会议上,谷歌宣布发布其Kubernetes集装箱管理系统,Ghods赢得了支持。“我们考虑了很多不同的选择,但库伯内特真的很突出,尤其是因为他的团队非常强大Borg他指的是谷歌内部的容器协调者Borg。“事实上,它在第一天就被设计成在裸金属上运行,就像谷歌云这意味着我们可以在我们的数据中心内部迁移到它,然后使用这些相同的工具和概念在公共云提供商之间运行。”

另一个好处是:神喜欢这样Kubernetes具有普遍的API对象集,如POD,服务,副本集和部署对象,它创建了一致的曲面来构建工具。“即使是Paas层也喜欢OpenShift一些建立在Kubernetes的基础上,仍然把这些对象当作第一流的原则,”他说。“我们很高兴这些抽象能够在整个生态系统中共享,这将带来比我们在其他潜在解决方案中看到的更多的动力。”

框在生产数据中心的群集中部署了Kubernetes,只需六个月后。Kubernetes仍然是第0.11版的预测试。他们开始小:Ghods团队在Kubernetes上跑的第一件事是一个盒子API检查器,确认框。“这只是为了编写和部署一些软件来获取整个管道功能,”他说。接下来是一些处理作业的守护进程,这是“很好,安全的,因为如果他们经历了任何中断,我们不会失败来自客户的同步呼入请求。”

第一个现场服务是在几个月后推出的,该团队可以访问并询问信息。在这一点上,Ghods说,“我们对Kubernetes星团的稳定性感到满意。我们开始移植一些服务,然后我们增加集群的规模并移植更多的服务,最终每个数据中心大约有100台服务器完全用于Kubernetes。在接下来的12个月里,这一数字还会大幅增长,可能会有成百上千。”

虽然观察开始使用Kubernetes的团队为他们的微服务,“我们立即在被释放的微服务数量中看到一个上升,”Ghods Notes。“通过微操作系统来说,对更好的建设软件的融合方式显然,敏捷的增加有助于我们的开发人员更加富有成效并做出更好的建筑选择。”

“通过微操作系统来说,对更好的建设软件的融合方式显然,敏捷的增加有助于我们的开发人员更加富有成效并做出更好的建筑选择。”

Ghods反映出,作为早期采用者,Box经历了一段与现在公司不同的旅程。他说道:“我们一直在等待某些内容趋于稳定或新功能的发布。“在早期,我们做了很多贡献(比如kubectl apply组件),然后等待Kubernetes发布它们中的每一个,然后我们会升级,贡献更多,这样反复好几次。整个项目从我们在Kubernetes上的第一次真正部署到获得普遍可用性花了18个月的时间。如果我们今天做同样的事情,可能不会超过6个。”

无论如何,Box不需要对Kubernetes做太多修改就能让它为公司工作。Ghods说:“我们团队为在Box实现Kubernetes所做的绝大多数工作都是让它在我们现有(通常是遗留的)基础设施中工作,比如将我们的基本操作系统从RHEL6升级到RHEL7,或者将其集成到其中Nagios,我们的监控基础设施。但整体Kubernetes都是非常灵活的,适合我们的许多限制,我们已经在裸机基础设施上成功地运行了它。“

也许Box面临的更大挑战是文化方面的。“总的来说,Kubernetes和原生云代表了一个相当大的范式转变,而且不是非常渐进的,”Ghods说。“我们本质上是在推销Kubernetes将解决一切问题,因为它用正确的方式做事情,一切突然变得更好。但重要的是要记住,它还没有像其他许多解决方案那样得到证明。你不能说这个或那个公司花了多长时间,因为还没有那么多。我们的团队必须为资源而战,因为我们的项目有点像登月计划。”

根据经验,Ghods为面临类似挑战的公司提供了以下两条建议:

1.早期和经常交付。

服务发现对Box来说是一个巨大的问题,团队必须决定是构建一个临时解决方案,还是等待Kubernetes在本地满足Box的独特需求。经过大量的讨论,Ghods说:“我们只是开始专注于交付一些可以工作的东西,然后再处理可能迁移到更本地的解决方案的问题。”“团队最重要的目标应该始终是为基础设施上的实际生产用例服务,无论它有多微不足道。这有助于保持团队本身和组织对项目的看法的势头。”

2.对于你的公司必须从开发人员那里抽象出什么,不能抽象出什么,保持开放的心态。

早期,团队在Docker文件的顶部构建了一个抽象,以帮助确保图像具有正确的安全更新。这结果是多余的工作,因为容器图像被认为是不可变的,并且您可以轻松扫描它们后构建,以确保它们不包含漏洞。因为通过集装箱化管理基础设施是如此不连续的飞跃,因此最好开始直接与本机工具进行互动,并学习其独特的优势和警告。只有在实际需要它出现后才建立一个抽象。

到底,影响是强大的。“在Kubernetes之前,”Ghods说:“我们的基础设施如此陈旧,它带我们超过六个月的时间来部署一个新的微服务。现在,一个新的微寿机需要不到五天的部署。我们正在努力实现它小时。授予,大部分时间六个月是由于我们的系统多么突破,但裸机是一个艰难的支持平台,除非你有一个像Kubernetes这样的系统来帮助管理它。“

据Ghods估计,Box距离Kubernetes店铺90%以上的目标还有几年的时间。他说:“我们在关键任务、稳定的Kubernetes部署方面已经取得了很大进展,它提供了很多价值。”“目前,我们所有的计算机中大约有5%是在Kubernetes上运行的,我认为在未来6个月,这一比例可能会在20%到50%之间。我们正在努力启用所有无状态服务用例,并在此之后将重点转移到有状态服务上。”

事实上,这就是他在行业中设想的内容:GHODS预测Kubernetes有机会成为新的云平台。Kubernetes提供了跨不同云平台的API,包括裸机,“我认为人们没有看到可以在可以针对一个界面进行编程时可能的潜力,”他说。“一样的方法AWS改变了基础设施,这样您就不必再考虑服务器、机柜或网络设备,Kubernetes让您只关注正在运行的容器,这非常令人兴奋。的愿景。”

Ghods指出,Kubernetes已经在开发或最近发布了一些用于云平台的项目:集群联合、Dashboard UI和CoreOSetcd运营商。“老实说,我认为这是我在云基础设施领域见过的最令人兴奋的事情,”他说,“因为它围绕着基础设施的自动化和智能化达到了前所未有的水平,它是可移植的,而且对你可以运行基础设施的任何方式都是未知的。”

Box最初决定使用裸金属,出于需要开始了它的Kubernetes之旅。但是Ghods说,即使现在的公司不必对云提供商不了解,Kubernetes可能很快就会成为行业标准,因为越来越多的工具和扩展都是围绕着API构建的。

“偏离Linux并没有意义,因为它是如此标准,”Ghods说:“我认为Kubernetes正在下降相同的路径。它仍然是早期 - 文档仍然需要工作和用户体验乐动体育是干嘛的为了写作和发布规范,群体群体仍然是粗糙的。​​当你在切割边缘时,你可以期待一点。但是底线是,这是行业正在进行的地方。从现在开始三到五年如果您以其他方式运行基础架构,真的会令人震惊。“