挑戰
在歐洲核子研究中心(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 是一個很好的來源,因為它提供了大量的可用應用程式目錄。現在很難再為內部開發新產品辯護。真的沒有理由再繼續這樣做。對我們來說,嘗試一下要容易得多,如果我們認為這是一個好的解決方案,我們就會嘗試接觸社群並開始與該社群合作。”