混合雲環境中的Kubernetes和HPC應用程序Part II

本文為該系列的第二篇文章,第一篇文章點擊此處。

作者:Daniel Gruber,Burak Yenier和Wolfgang Gentzsch,UberCloud。

該公司成立於2013年,致力於開發HPC容器技術和容器化工程應用程序,以促進在共享的本地或按需雲環境中訪問和使用工程HPC工作負載。本文及上一篇文章中,他們描述了過去12個月在Kubernetes上使用UberCloud HPC容器的經驗。

隨著雲服務的興起,CIO意識到在各種計算環境中運行的應用程序,中間件和基礎架構需要通用的管理和操作模型。通過為每個雲提供商使用不同的專用基礎架構和應用程序管理解決方案,在本地和雲環境中維護不同的應用程序和中間件堆棧,會在動態分配,使用和管理這些資源時增加很多麻煩。

混合雲環境中缺乏通用的管理和運營模型可能導致:

  • 不均勻,分散的環境給管理人員,操作人員和安全性帶來了額外的複雜性。

  • 由於沒有通用管理的混合環境,創新速度降低了。

  • 當依賴於雲提供商的特定服務時,很難更改或關閉雲資源。

  • 當綁定到特定的雲環境設置時,工作負載不容易遷移回本地環境,反之亦然。

正如上一篇文章中指出的那樣,Kubernetes已成為事實上的標準容器編排器。所有主要公司都在隨處可用的標準化API之上提供並構建解決方案。CIO現在正在研究Kubernetes在混合雲中對HPC的適用性,因為它為每種環境提供了通用的管理和操作模型。

Kubernetes:混合雲的通用管理和運營模型

Kubernetes促進了服務器隊列中運行的無數容器的使用和管理,它是由許多IT供應商和雲提供商支持的用於混合環境的新標準平臺。現在,CIO可以分配一個完全配置並受支持的容器編排器,作為其所有應用程序工作負載的基礎。

與專有基礎架構解決方案不同,Kubernetes具有可移植性,易於管理,高可用性,可集成性和監視功能。在Kubernetes上管理資源時,CIO不再綁定到特定的基礎架構。他們可以使用相同的應用程序堆棧為用戶提供相同的功能集,無論是本地還是在任何雲中。用戶甚至不知道自己的應用程序正在Kubernetes上運行,也不知道它們在哪個基礎架構上運行:是在自己的數據中心還是在特定的雲提供商(例如Google,Microsoft或Amazon)上。

通過使用像Kubernetes這樣的標準化軟件棧來降低混合雲環境的複雜性具有許多優點:對一個平臺進行的改進可以自動在其他平臺上使用;部署和運營方面可以簡化;安全審核更容易,更嚴格地執行。

Kubernetes和HPC

Kubernetes已經是AI和ML的事實平臺,但是,當涉及到傳統的高性能計算時,仍然存在一些挑戰。HPC工作負載管理器中內置了一組功能,Kubernetes中尚不可用。我們之前在第一篇文章已經討論了主要差異,Kubernetes在HPC方面的主要差距是:對分佈式內存作業(即MPI應用程序)的本機支持,以及與現有HPC應用程序兼容的缺少的作業排隊系統。

Kubernetes在許多層上都內置了高可用性。但是,對於HPC作業,僅重啟一個失敗的容器是不夠的,因為整個分佈式作業本身可能已經失敗了。在這種情況下,需要對整個分佈式內存作業進行自動重新計劃。這是Kubernetes無法處理的。

除了這些挑戰之外,Kubernetes還為HPC帶來了許多好處:例如,工程師和容器化HPC應用程序的環境始終是相同的,無論是本地部署還是在基於雲的環境中運行;快速從一種基礎架構轉換為另一種基礎架構的能力使HPC團隊能夠與其公司的雲路線圖保持一致。在基於通用API(Kubernetes API)的基礎架構之間移動工作負載的自由變得很有價值。

Kubernetes上的容器化HPC應用程序

在過去的五年中,已經將數十種HPC應用程序進行了容器化,無論是商業化的,例如ANSYS,COMSOL,STAR-CCM +,還是開源軟件包(如OpenFOAM和GROMACS),以及HPC集群調度程序,例如Univa Grid Engine和Slurm。由於採用了容器技術,因此可以提供持續不斷的更新和改進,客戶可以快速,無縫地對其進行更新。此外,容器映像允許用戶隨時返回到先前的應用程序版本,以便他們始終可以重現其先前的結果。

混合云环境中的Kubernetes和HPC应用程序Part II

在託管Kubernetes上運行的示例HPC應用程序集群架構

同時,通過使用諸如Terraform和Puppet之類的基礎架構和配置管理工具或通過將特定於雲的HPC集成構建到現有門戶中,已經實現了許多容器環境。但是隨著Kubernetes的到來,容器環境變得更易於維護並且更加動態。控制器不斷驅動集群,從而將集群推出,重新調整工作節點的規模,使用一組恆定的可搶佔實例以及高可用性。

因此,Kubernetes和HPC主要差距已被消除。這樣,今天,任何Kubernetes環境都可以支持分佈式內存/ MPI作業,該環境提供了在HPC容器內運行的內置HPC工作負載管理器集成。這使傳統的HPC應用程序無需任何更改即可運行。同時,通過在內部運行的高性能支持GPU的Pod,已成功啟動了基於Ansys和COMSOL的GPU和未支持GPU的應用程序。登錄到桌面後,工程師可以開始提交批處理作業或單個MPI應用程序,這些應用程序分佈在多個節點上分配的一組Pod中。

結論

Kubernetes不僅支持基於微服務的企業應用程序,而且還支持自助服務工程HPC應用程序。總而言之,正如該研究表明的那樣,使用Kubernetes作為運行容器化工程應用程序的基礎的主要優點是:

  • 幾乎所有基礎架構上均可使用統一應用程序堆棧;

  • 真正的混合雲使用方案,可滿足工程負載的需求。對於工程師而言,無論在本地還是在雲中運行應用程序,它都是透明的;

  • 通過始終分配雲中可用的最新和最快的機器,從而為運行工程應用程序提供最佳性能;

  • 作為工程師的自助服務,構建並調整獨立的HPC應用程序和計算集群的大小,並且僅受每個時間段的雲配額和預算限制;

  • 強大的管理堆棧,得到許多雲提供商的支持;

  • 僅通過支付使用費用來優化成本。不需要閒置資源,這些閒置資源將在使用前被分配;

  • 通過獨立的專用計算集群實現高安全性;

  • 通過自我配置和一次性組件(將更新簡單地銷燬並重新創建命令),將操作開銷降至最低;

  • 基於Kubernetes的工作負載更易於集成到廣泛採用的持續集成和部署解決方案中(例如Tekton,Concourse或Jenkins的未來版本)。

在這項研究中,基於容器的HPC應用程序環境已在Kubernetes之上實現(例如,在Google GCP和Amazon AWS上),並且還用作自助服務測試環境,可由HPC應用程序專家而非運營商從頭開始部署。它也已用於CI / CD管道中,以自動構建測試環境,以針對現有容器解決方案運行測試並隨後關閉基礎架構。在客戶環境中,IT部門受益於使用受支持的託管Kubernetes易於維護的系統,該系統可以在幾分鐘之內增加,調整大小和刪除計算資源。

雷鋒網編譯,viahpcwire.com(雷鋒網雷鋒網)


分享到:


相關文章: