挑戰
在歐洲核子研究組織 CERN,物理學家進行實驗以研究基礎科學。CERN 軟體工程師 Ricardo Rocha 表示:「在我們的粒子加速器中,我們會將質子加速到非常高的能量,接近光速,並使兩束質子束碰撞。」「最終結果是我們必須處理的大量資料。」CERN 目前在其資料中心儲存了 330 PB 的資料,而預計在未來幾年進行的加速器升級將使這個數字增加 10 倍。此外,該組織在大型會議之前的期間,工作負載會出現極端高峰,並且需要其基礎架構能夠擴展以應對這些高峰。Rocha 說:「我們希望擁有更混合的基礎架構,在這種架構中,我們擁有本地基礎架構,但可以在這些高峰出現時臨時使用公有雲。」「我們一直在尋找可以幫助提高基礎架構效率的新技術,以便我們可以將更多資源投入到實際的資料處理中。」
解決方案
CERN 的技術團隊擁抱了容器化和雲原生實踐,選擇 Kubernetes 進行協 orchestration,Helm 進行部署,Prometheus 進行監控,以及 CoreDNS 在叢集內部進行 DNS 解析。Kubernetes federation 使得該組織能夠在本地和公有雲上運行一些生產工作負載。
影響
Rocha 說:「Kubernetes 為我們提供了應用程式的完全自動化。」「它為所有在 Kubernetes 中部署的應用程式和工作負載配備了內建的監控和日誌記錄功能。這大大簡化了我們目前的部署。」部署複雜分散式儲存系統的新叢集的時間已從 3 個多小時縮短到不到 15 分鐘。向叢集添加新節點過去需要一個多小時;現在只需不到 2 分鐘。系統組件自動擴展副本所需的時間已從一個多小時減少到不到 2 分鐘。最初,虛擬化帶來了 20% 的 overhead,但經過調整,這已降至約 5%。遷移到裸機上的 Kubernetes 將使 overhead 降至 0%。預計無需託管虛擬機器還可恢復 10% 的記憶體容量。
實驗在粒子加速器中進行,其中最大的粒子加速器周長為 27 公里。CERN 軟體工程師 Ricardo Rocha 表示:「我們將質子加速到非常高的能量,接近光速,並使兩束質子束在定義明確的位置碰撞。」「我們在這些碰撞發生的地點周圍建立實驗設施。最終結果是我們必須處理的大量資料。」
他的確指的是「大量」:CERN 目前在其資料中心中儲存和處理 330 PB 的資料,這些資料來自 4,300 個專案和 3,300 個使用者,使用了 10,000 個 hypervisor 和 320,000 個核心。
多年來,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% 的 overhead,但經過調整,這已降至約 5%。遷移到裸機上的 Kubernetes 將使 overhead 降至 0%。預計無需託管虛擬機器還可恢復 10% 的記憶體容量。
Kubernetes federation 自 2018 年 2 月以來一直被 CERN 用於其部分生產工作負載,這使得該組織能夠採用混合雲策略。而且這樣做非常簡單。Rocha 說:「我們有一位暑期實習生在研究 federation。」「多年來,我一直在開發分散式運算軟體,這花費了十年左右的時間和許多人的努力來穩定並確保其正常運作。而對於我們的實習生來說,在幾天內,他就能向我和我的團隊展示,我們在 CERN 有一個叢集,在公有雲中有幾個叢集被聯合在一起,我們可以向其提交工作負載。這對我們來說非常震驚。它真正展示了使用這種成熟技術的力量。」
憑藉如此成果,Kubernetes 的採用在 CERN 取得了快速進展,團隊渴望回饋社群。Rocha 說:「如果我們回顧 90 年代和 2000 年代初期,沒有很多公司專注於必須擴展到這種規模的系統,儲存 PB 級資料,分析 PB 級資料。」「Kubernetes 受到如此廣泛的社群和不同背景的支持,這激勵我們回饋社群。」
這些新技術不僅僅是實現基礎架構的改進。Rocha 說:「CERN 還使用基於 Kubernetes 的 Reana/Recast 平台進行可重複使用的分析,這是一種『將物理分析定義為一組完全容器化在單一入口點的工作流程的能力』。」「這意味著物理學家可以建立他或她的分析,並將其發佈到儲存庫中,與同事分享,並在 10 年後使用新資料重新進行相同的分析。如果我們回顧 10 年前,這只是一個夢想。」
所有這些事情都極大地改變了 CERN 的文化。Rocha 說:「十年前,趨勢總是:『我需要這個,我找幾個開發人員,然後我實作它。』」「現在是『我需要這個,我相信其他人也需要這個,所以我會去問問看。』CNCF 是一個很好的來源,因為它有非常大量的應用程式目錄可供使用。現在很難證明在內部開發新產品是合理的。真的沒有理由繼續這樣做。我們更容易嘗試一下,如果我們認為這是一個好的解決方案,我們會嘗試與社群聯繫並開始與該社群合作。」