挑战
在欧洲核子研究组织 (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 个核心存储和处理 330 PB 的数据,这些数据来自 4,300 个项目和 3,300 个用户。
多年来,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 解析。Rocha 说:“Kubernetes 为我们提供的一件事是应用程序的完全自动化。因此,它为部署在 Kubernetes 中的所有应用程序和工作负载提供内置的监控和日志记录功能。这极大地简化了我们当前的部署。” 为复杂的分布式存储系统部署新集群的时间已从超过 3 小时缩短至不到 15 分钟。
向集群添加新节点过去需要一个多小时;现在只需不到 2 分钟。自动扩展系统组件副本所需的时间已从一个多小时缩短至不到 2 分钟。
Rocha 指出,粒子加速器中使用的指标可能是每秒事件数,但实际上“真正重要的是我们能够以多快的速度处理多少数据”。Kubernetes 确实提高了效率。最初,虚拟化会导致 20% 的开销,但经过调整后,这一比例降至约 5%。迁移到裸机上的 Kubernetes 将使其降至 0%。预计无需托管虚拟机还可以节省 10% 的内存容量。
自 2018 年 2 月以来,CERN 一直将其部分生产工作负载使用 Kubernetes 联邦,这使得该组织能够采用混合云战略。而且这样做非常简单。Rocha 说:“我们有一个暑期实习生在研究联邦。多年来,我一直致力于开发分布式计算软件,这需要很多人花费大约十年的时间和大量的努力才能使其稳定并确保其正常工作。而对于我们的实习生来说,他在几天内就能够向我和我的团队演示,我们在 CERN 有一个集群,在外部的公有云中有几个集群,它们联合在一起,我们可以向其提交工作负载。这对我们来说是震惊的。这确实显示了使用这种成熟技术的力量。”
有了这样的成果,Kubernetes 在 CERN 得到了迅速普及,该团队也渴望回馈社区。Rocha 说:“如果我们回顾 90 年代和 2000 年代初,当时并没有很多公司专注于必须扩展到这种规模、存储 PB 级数据、分析 PB 级数据的系统。Kubernetes 得到如此广泛的社区和不同背景的支持,这激励着我们回馈社区。”
这些新技术不仅带来了基础设施的改进。CERN 还使用基于 Kubernetes 的 Reana/Recast 平台进行可重复分析,Rocha 说,这是“将物理分析定义为一组完全容器化的工作流的能力,这些工作流集中在一个入口点”。“这意味着物理学家可以构建他或她的分析并将其发布到存储库中,与同事共享,并在 10 年后使用新数据重新进行相同的分析。如果我们回顾 10 年前,这只是一个梦想。”
所有这些都极大地改变了 CERN 的文化。十年前,“趋势总是:‘我需要这个,我找几个开发人员,然后我实现它,’”Rocha 说。“现在是‘我需要这个,我相信其他人也需要这个,所以我会四处问问。’CNCF 是一个很好的资源,因为它有一个非常大的应用程序目录。现在很难证明在内部开发新产品的合理性。真的没有理由继续这样做。对我们来说,尝试一下要容易得多,如果我们发现它是一个好的解决方案,我们会尝试联系社区并开始与该社区合作。”