Kubernetes使用NVMe有哪些好處?
譯文【51CTO.com快譯】NVMe協議簡介
非易失性內存主機控制器接口規范(NVMe)是一種存儲訪問協議,允許CPU通過外圍組件互連(PCIe)快速訪問SSD存儲器。通過一系列協議和技術,NVMe極大地加快了數據傳輸、存儲和檢索的速度。而使用NVMe,CPU直接訪問SSD硬盤上的數據,實現了SSD硬盤的更高利用率和靈活的可擴展性。NVMe還允許存儲分解,并且可以與Kubernetes結合使用以擴展應用程序。
本文將探討NVMe如何重新定義Kubernetes中的存儲編排。
NVMe分布式存儲的優勢
通過使用PCIe接口將CPU連接到SSD硬盤,NVMe移除了將計算連接到存儲的層,從而實現了高效的存儲抽象和分解。這為現代數據中心運行提供了各種好處,其中包括:
- 高效的內存傳輸。NVMe的每個CPU直接與SSD硬盤通信,降低了輸入-輸出控制器的內部鎖定速度。NVMe還支持消息信號中斷以防止CPU瓶頸,從而提高存儲效率和可擴展性。NVMe通過將消息信號中斷與CPU中的大量內核相結合來實現I/O并行性,從而減少網絡延遲。
- NVMe提供大量隊列并行性
與每個隊列最多支持32個命令的SATA硬盤不同,NVMe使用私有隊列,在超過64,000個隊列的情況下,每個隊列最多可提供64,000個命令。這是因為每個I/O控制器都有自己的一組隊列,這會隨著可用CPU內核的數量線性增加吞吐量。
- NVMe提供更高的安全性
NVMe over Fabri規范支持由可信計算組織(TCG)等信譽良好的安全社區制定的安全隧道協議。這意味著NVMe支持企業級安全功能,例如訪問控制、靜態數據加密、清除級擦除,以及加密擦除等。
- NVMe依賴于高效的命令集
該協議依賴于一個簡單、精簡的命令集,它將處理I/O請求所需的CPU指令數量減半。除了提供較低的延遲之外,該方案還支持電源管理和預留等高級功能,從而將優勢擴展到輸入和輸出操作之外。
NVMe-oF
NVMe-oF是一種允許CPU通過網絡結構連接到SSD存儲設備的規范,旨在利用NVMe協議在存儲區域網絡(SAN)上的優勢。主機可以使用基于MSI-X的命令將SSD存儲設備作為目標,而網絡可以使用各種網絡協議來實現,其中包括光纖通道、以太網或Infiniband。
NVMe-oF在現代網絡中越來越受歡迎,因為它允許組織為高度分布式、高度可用的應用程序實施橫向擴展的存儲。通過將NVMe協議擴展到SAN設備,NVMe-oF提高了CPU的使用效率,同時提高了服務器和存儲應用程序之間的連接速度。
NVMe-oF支持各種數據傳輸機制,例如:
- RDMA
- 光纖通道
- TCP/IP
NVMe-oF將網絡閃存存儲與服務器連接起來,使應用程序能夠在共享網絡存儲上運行,從而為數據中心提供額外的網絡整合。采用SSD可以在應用程序工作負載之間動態共享,從而實現資源的高效消耗、靈活性和可擴展性。
Kubernetes編排和存儲持久性
雖然容器的存儲是暫時的,但Kubernetes通過提供引用物理存儲設備的抽象來支持有狀態的應用程序。容器化應用程序實際上與在其他容器上運行的其他進程和應用程序相隔離。這使得Kubernetes環境具有高度的靈活性和可擴展性,因為它允許應用程序在虛擬機、裸機系統、支持的云計算系統或各種部署的組合中運行。雖然這種方法有一些好處,但當需要在容器之間存儲和共享數據時,也帶來了一些挑戰。
Kubernetes提供了各種抽象和選項來將容器POD連接到物理存儲,例如:
- 卷
- 持久卷和持久卷聲明
- 存儲類
- 容器存儲接口(CSI)和存儲插件
使用直接附加存儲(DAS)進行編排的挑戰
雖然直接附加存儲(DAS)提供了一種簡單、高度可用且快速的存儲,但僅靠DAS不足以運行Kubernetes集群。這是因為DAS設備的存儲容量有限,無法動態配置以匹配有狀態的Kubernetes工作負載。此外,DAS不包含網絡功能或促進不同用戶組的數據訪問,因為存儲只能由單個服務器/桌面機器直接訪問,而Kubernetes在分布式集群上進行編排。
用于Kubernetes的NVMe
NVMe通過高速PCIe-oF接口將服務器連接到SSD硬盤,將DAS的低延遲擴展到網絡附加存儲設備。這使得NVMe成為在Kubernetes上運行的動態、可擴展和靈活的有狀態應用程序提供存儲的有效選擇。容器存儲接口(CSI)標準將這些池化的NVMe設備連接到運行有狀態應用程序的Kubernetes集群。通過結合NVMe-oF提供的低延遲網絡存儲和CSI插件的靈活性,組織可以為Kubernetes應用程序提供高效、敏捷以及需求驅動的存儲解決方案。
NVMe-oF持久卷
為了避免在單個本地服務器上運行NVMe SSD出現的瓶頸,一些組織正在努力為Kubernetes存儲啟用NVMe-oF插件。Kubernetes支持使用RESTAPI以允許存儲供應商通過NVMe-oF協議。存儲供應商然后創建標準卷API對象,這些對象可用于將一部分池化的NVMe SSD連接到POD。然后,Kubernetes POD和其他資源可以像任何持久卷對象一樣在這個池化存儲上讀寫數據。
MayaData創建的OpenEBS是一種流行的敏捷存儲堆棧,適用于需要更小延遲的有狀態Kubernetes應用程序。OpenEBS的軟件基礎設施和插件與NVMe-oF提供的快速、分解的物理存儲完美集成。將NVMe SSD與OpenEBS插件集成可以為具有狀態工作負載的松散耦合應用程序提供更簡單的存儲配置。
OpenEBS是Kubernetes為性能敏感數據庫設計的一種流行的開源、靈活的存儲堆棧。Mayastor是OpenEBS的最新存儲引擎,與底層設備的性能能力相比,其開銷非常低。雖然OpenEBS Mayastor不需要NVMe設備,也不需要工作負載通過NVMe訪問數據。而通過低開銷的OpenEBS Mayastor和最終的NVMe設備,從運行一個通過TCP支持NVMe的容器的工作負載進行端到端部署,將盡可能接近底層設備的理論最大性能,這是可以理解的。
OpenEBS Mayastor構建了一個基礎層,使工作負載能夠以聲明式的Kubernetes原生方式根據需要合并和控制存儲。在這樣做時,用戶可以專注于重要的事情,即部署和操作有狀態的工作負載。
如果用戶有興趣試用Mayastor,可以尋找一些有關如何設置集群以及運行“fio”等基準測試的說明。
原文標題:The Benefits of Using NVMe for Kubernetes,作者:Sudip Sengupta
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】