挑战
在欧洲核子研究中心(CERN),物理学家们进行实验以探究基础科学。“在粒子加速器中,我们使质子加速到非常高的能量,接近光速,并使两束质子碰撞,”CERN 软件工程师 Ricardo Rocha 说。“最终结果是大量我们需要处理的数据。”CERN 目前在其数据中心存储了 330 PB 的数据,预计未来几年加速器升级后,这个数字将增加 10 倍。此外,该组织在大型会议前的工作负载会达到极端峰值,需要其基础设施能够扩展以应对这些峰值。“我们希望拥有一个更混合的基础设施,既有我们的内部基础设施,又能在这些峰值出现时暂时使用公共云,”Rocha 说。“我们一直在寻找新的技术来帮助提高我们基础设施的效率,以便我们可以将更多的资源用于实际的数据处理。”
解决方案
CERN 的技术团队采纳了容器化和云原生实践,选择 Kubernetes 进行编排,Helm 进行部署,Prometheus 进行监控,以及 CoreDNS 进行集群内的 DNS 解析。Kubernetes 联邦技术使该组织能够在内部和公共云中运行一些生产工作负载。
影响
“Kubernetes 实现了应用程序的完全自动化,”Rocha 说。“它为部署在 Kubernetes 中的所有应用程序和工作负载提供了内置的监控和日志记录。这极大地简化了我们当前的部署。”部署一个复杂分布式存储系统的新集群所需的时间已从 3 小时以上缩短到不到 15 分钟。向集群添加新节点过去需要一个多小时;现在不到 2 分钟。系统组件副本的自动扩展时间已从一个多小时缩短到不到 2 分钟。最初,虚拟化带来了 20% 的开销,但经过调优后,已降至约 5%。迁移到裸机上的 Kubernetes 将使其降至 0%。无需托管虚拟机预计还将恢复 10% 的内存容量。
实验在粒子加速器中进行,其中最大的加速器周长达 27 公里。“我们使质子加速到非常高的能量,接近光速,并使两束质子在特定位置碰撞,”CERN 软件工程师 Ricardo Rocha 说。“我们围绕这些碰撞地点建造实验设备。最终结果是大量我们需要处理的数据。”
他所说的“大量”数据绝非虚言:CERN 目前在其数据中心使用 10,000 台虚拟机管理程序和 320,000 个核心,存储和处理来自 4,300 个项目和 3,300 个用户的 330 PB 数据。
多年来,CERN 技术部门建立了一个基于 OpenStack 私有云的大型计算基础设施,以帮助该组织的物理学家分析和处理所有这些数据。该组织的工作负载会出现极端峰值。“通常,在会议召开之前,物理学家需要进行大量的额外分析以发表他们的论文,我们必须扩展以应对这些峰值,这意味着在某些情况下会过度承诺资源,”Rocha 说。“我们希望拥有一个更混合的基础设施,既有我们的内部基础设施,又能在这些峰值出现时暂时使用公共云。”
此外,几年前,CERN 宣布将对其加速器进行一次大规模升级,这意味着可收集的数据量将增加十倍。“因此,我们一直在寻找新的技术来帮助提高我们基础设施的效率,以便我们可以将更多的资源用于实际的数据处理,”Rocha 说。
Rocha 的团队在 2015 年下半年开始研究 Kubernetes 和容器化。“我们使用分布式基础设施已经几十年了,”Rocha 说。“Kubernetes 与我们非常相关,因为它天生就是分布式的。它为我们提供了一个跨异构资源的统一 API 来定义我们的工作负载。过去,当我们想要将资源扩展到我们的基础设施之外时,这让我们非常头疼。”
该团队创建了一个原型系统,供用户在 CERN 的基础设施中部署自己的 Kubernetes 集群,并花了六个月时间验证用例,确保 Kubernetes 与 CERN 内部系统集成。主要用例是批处理工作负载,它占 CERN 资源使用量的 80% 以上。(仅一个进行大部分物理数据处理和分析的项目就消耗了 250,000 个核心。)“在这方面,对部署、日志和监控的简化投入会很快获得回报,”Rocha 说。其他用例包括基于 Spark 的数据分析和机器学习,以改进物理分析。“这些技术中的大多数都能很好地与 Kubernetes 集成,这让我们的工作变得更轻松,”他补充道。
该系统于 2016 年 10 月投入生产,同时使用 Helm 进行部署,Prometheus 进行监控,CoreDNS 进行集群内的 DNS 解析。“Kubernetes 为我们提供了应用程序的完全自动化,”Rocha 说。“因此,它为部署在 Kubernetes 中的所有应用程序和工作负载提供了内置的监控和日志记录。这极大地简化了我们当前的部署。”部署一个复杂分布式存储系统的新集群所需的时间已从 3 小时以上缩短到不到 15 分钟。
向集群添加新节点过去需要一个多小时;现在不到 2 分钟。系统组件副本的自动扩展时间已从一个多小时缩短到不到 2 分钟。
Rocha 指出,粒子加速器中使用的指标可能是每秒事件数,但实际上,“真正重要的是我们能多快、处理多少数据。”Kubernetes 确实提高了效率。最初,虚拟化带来了 20% 的开销,但经过调优后,已降至约 5%。迁移到裸机上的 Kubernetes 将使其降至 0%。无需托管虚拟机预计还将恢复 10% 的内存容量。
CERN 自 2018 年 2 月以来一直将其部分生产工作负载用于 Kubernetes 联邦,这使得该组织能够采用混合云策略。而且实施起来异常简单。“我们有一个暑期实习生在研究联邦,”Rocha 说。“多年来,我一直开发分布式计算软件,这花了我十年时间,并投入了大量人力物力才稳定并确保其正常运行。而我们的实习生,在几天之内就能向我和我的团队演示,我们在 CERN 有一个集群,在公共云中还有几个联邦集群,我们可以向它们提交工作负载。这让我们感到震惊。它确实展示了使用这种成熟技术的强大力量。”
取得如此成就,Kubernetes 在 CERN 的采用率迅速提高,团队渴望回馈社区。“如果我们回溯到 90 年代和 2000 年代初期,没有多少公司专注于需要扩展到如此规模、存储 PB 级数据、分析 PB 级数据的系统,”Rocha 说。“Kubernetes 得到如此广泛的社区和不同背景的支持,这激励我们回馈社会。”
这些新技术不仅能改进基础设施。CERN 还使用基于 Kubernetes 的 Reana/Recast 平台进行可重用分析,这“能够将物理分析定义为一组工作流,这些工作流完全容器化在一个单一入口点中,”Rocha 说。“这意味着物理学家可以构建他或她的分析并将其发布到存储库中,与同事共享,并在 10 年后用新数据重新进行相同的分析。如果我们将时间倒退 10 年,这简直是梦想。”
所有这些都极大地改变了 CERN 的文化。十年前,“人们总是倾向于:‘我需要这个,我找几个开发人员,然后我去实现它,’”Rocha 说。“现在则是‘我需要这个,我确信其他人也需要,所以我会四处打听。’CNCF 是一个很好的来源,因为它提供了大量的可用应用程序目录。现在很难再为内部开发新产品辩护。真的没有理由再继续这样做。对我们来说,尝试一下要容易得多,如果我们认为这是一个好的解决方案,我们就会尝试接触社区并开始与该社区合作。”