公司盒子 地点加州雷德伍德城 行业技术

挑战

这家成立于2005年的企业内容管理公司允许其超过5000万用户管理云中的内容。盒子主要是在公司自己的数据中心内用裸机构建的,使用一个单片PHP代码库。Box的联合创始人和服务架构师Sam Ghods说,随着公司的全球扩张,它需要关注“我们如何在从裸金属到公共云的许多不同的云基础设施上运行我们的工作负载”。“这是一个巨大的挑战,因为不同的云,特别是裸金属,有非常不同的界面。”

解决方案

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

影响

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

在2014年夏天,盒子感受到了十年的硬件和软件基础设施的痛苦,这些基础设施并没有跟上公司的需求。

一个允许超过5000万用户(包括政府和大企业)的平台通用电气(General Electric))来管理和共享云中的内容,Box最初是一个PHP由数百万行代码组成的庞然大物,完全是在它自己的数据中心内用裸机构建的。它已经开始慢慢地蚕食这个庞然大物,把它分解成微服务。和“我们已经扩张到全球地区,随着公共云的战争一直在升温,我们更多关注如何我们运行工作负载在许多不同的环境和不同的云基础设施提供商,“说盒子建筑师山姆Ghods创始人和服务。“到目前为止,这是一个巨大的挑战,因为所有这些不同的供应商,特别是裸金属,有非常不同的接口和方式,你与他们合作。”

那年六月,当神降临时,Box的云之旅加速了DockerCon。该公司已经实现,实现它只能脱离裸金属的应用,并在用Docker,使用OpenStack虚拟化,并支持公共云。

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

另一个好处是:神喜欢这样Kubernetes.拥有一组通用的API对象,如pod、服务、副本集和部署对象,它们为构建工具创建了一个一致的界面。“即使是PaaS层OpenShift一些在Kubernetes的基础上构建的,仍然将这些对象视为一流的原则,”他说。“我们很高兴能够在整个生态系统中共享这些抽象概念,这将比我们看到的其他潜在解决方案带来更多动力。”

仅仅6个月后,Box就在一个生产数据中心的集群中部署了Kubernetes。Kubernetes在0.11版本上仍然处于预测试阶段。他们从小处着手:Ghods的团队在Kubernetes上运行的第一件事就是一个Box API检查器,以确认Box已经启动。“那只是编写和部署一些软件,让整个管道运作起来,”他说。接下来是一些处理作业的守护进程,它们“很好,也很安全,因为如果它们遇到任何中断,我们就不会无法同步来自客户的传入请求”。

第一个实时服务是在几个月后推出的,团队可以通过它来获取信息。当时,Ghods说:“我们对Kubernetes集群的稳定性感到满意。我们开始移植一些服务,然后我们增加集群的规模,再移植一些服务,最终在每个数据中心中有大约100台服务器完全用于Kubernetes。在接下来的12个月里,这一数字还会扩大很多,可能有数百人,甚至数千人。”

在观察那些开始使用Kubernetes微服务的团队时,“我们立即看到发布的微服务数量出现了上升,”Ghods指出。“对于通过微服务更好地构建软件的方式,显然存在一种被压抑的需求,而敏捷性的提高帮助我们的开发人员提高生产力,做出更好的架构选择。”

“对于通过微服务更好地构建软件的方式,显然存在一种被压抑的需求,而敏捷性的提高帮助我们的开发人员提高生产力,做出更好的架构选择。”

GHODS反映了作为早期采用者,盒子现在有不同的旅程。“我们肯定是锁定一步等待某些事情来稳定或要发布的功能,”他说。“在早期的日子里,我们正在为kubectl申请的组件进行很多贡献,并等待kubernetes释放它们,然后我们升级,贡献更多,然后多次来回来回致辞。整个项目从我们的第一次真正部署到Kubernetes的第一个真实部署到了一般可用性。如果我们今天确切地做了这一点,那么它可能不超过六个。“

无论如何,Box不需要对Kubernetes做太多修改,就可以为公司工作。“我们团队在Box中实现Kubernetes的绝大多数工作都是让它在我们现有的(通常是遗留的)基础架构中工作,”Ghods说,“比如将我们的基础操作系统从RHEL6升级到RHEL7,或者将其集成到其中Nagios,我们的监控基础设施。但总的来说,Kubernetes非常灵活,能够适应我们的许多限制条件,我们在裸金属基础设施上运行得非常成功。”

也许盒子的更大挑战是文化之一。“Kubernetes,和云本地人一般,代表了一个非常大的范式转变,而且它不是很大的增量,”Ghods说。“我们基本上是为了使这场投球是为了解决一切,因为它是正确的方式,一切都突然更好。但要记住它几乎没有被证明在那里的许多其他解决方案。你不能说这是多长时间或者公司采取了多长时间,因为还有很多人。我们的团队必须真正为资源而战,因为我们的项目有点是一个月光。“

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

1.尽早并经常交付。

服务发现对Box来说是一个巨大的问题,团队必须决定是构建临时解决方案还是等待Kubernetes原生地满足Box的独特需求。经过多次讨论,“我们开始专注于交付一些有效的东西,然后在之后处理迁移到一个更本地的解决方案,”Ghods说。“团队最重要的目标应该总是为基础设施上的实际生产用例提供服务,无论这些用例有多琐碎。这有助于保持团队本身和项目组织观念的势头。”

2.继续思考贵公司摘要从开发人员抽象的内容以及它没有什么。

在早期,团队在Docker文件之上构建了一个抽象,以帮助确保图像有正确的安全更新。这是多余的工作,因为容器映像被认为是不可变的,您可以在构建后轻松地扫描它们,以确保它们不包含漏洞。因为通过容器化管理基础设施是一个不连续的飞跃,所以最好从直接与本机工具交互开始,了解它们的独特优势和注意事项。抽象应该只在实际需要出现之后才构建。

最终,影响是巨大的。“在Kubernetes之前,”Ghods说,“我们的基础设施非常陈旧,以至于我们花了六个多月的时间来部署一个新的微服务。现在,一个新的微服务只需不到5天的时间就可以部署。我们正在努力把时间缩短到一小时。当然,这6个月的大部分时间都是由于我们的系统有多坏,但裸金属本质上是一个很难支持的平台,除非你有Kubernetes这样的系统来帮助管理它。”

通过Ghods的估计,盒子仍然是几年来,他的目标是为90多个Kubernetes商店。“我们很远在拥有关键任务,稳定的Kubernetes部署,提供了很多价值,”他说。“现在大约需要在Kubernetes上运行的5%,我认为在未来六个月内,我们可能会在20%到50%之间。我们正在努力启用所有无国籍服务用例,然后转移我们的在此之后专注于有状态服务。“

事实上,这也是他对整个行业的设想:Ghods预测Kubernetes有机会成为新的云平台。Kubernetes在不同的云平台(包括裸机)上提供了一致的API,“我认为人们还没有看到针对单一接口编程的全部潜力,”他说。“同样的方式AWSKubernetes使您能够专注于您正在运行的容器,这是非常令人兴奋的。的愿景。”

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

盒子,早期决定使用裸金属,踏上了kubernetes超出了必要的旅程。但是GHODS表示,即使公司今天不必讨正于云提供商,Kubernetes也可能很快成为行业标准,因为API周围建立了越来越多的工具和扩展。

“同样地,偏离Linux也没有意义,因为它是这样一个标准,”Ghods说,“我认为Kubernetes正在走同样的道路。现在还处于早期阶段——文档还需要改进,编写和发布Kub德赢是不是大平台ernetes集群规范的用户体验还很粗糙。当你站在最前沿时,你可能会流血。但底线是,这是这个行业的发展方向。三到五年之后,如果你以其他方式运营基础设施,那真的会令人震惊。”

Baidu