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