Kubernetes和CSI插件
Kubernetes是一個開源的容器集群管理系統,可以實現容器集群的自動化部署、自動擴縮容、維護等功能。通過Kubernetes可以快速部署應用,快速擴展應用,無縫對接新的應用功能,節省資源,優化硬件資源的使用。
在Kubernetes集群中運行工作負載時,有應用數據持久化存儲、配置數據存儲、存儲資源動態供應等存儲需求。Kubernetes集群基于CSI插件實現了容器存儲功能,借助存儲資源盤活系統提供并管理靜態或動態存儲卷資源。容器存儲接口(CSI)插件是當前Kubernetes社區推薦的插件實現方案。
企業在使用Kubernetes部署容器時,通常需要使用持久化存儲。持久卷(Persistent Volume)是獨立于Pod的存儲資源,它的生命周期與Pod無關,在存儲節點中創建持久卷后,即可將其提供給計算節點中的Pod使用,實現了計算資源和存儲資源的解耦。Kubernetes CSI 插件可以為有狀態應用提供持久化存儲能力。Kubernetes集群中的計算節點掛載持久卷作為磁盤,供節點上運行在Pod內的數據庫等應用使用。容器中使用的數據庫或有狀態應用程序,需要依賴于高穩定性、高性能的存儲系統,數據需要在硬件或軟件重啟后仍能繼續保留。Kubernetes通過PV、PVC、Storageclass提供了一種強大的基于插件的存儲管理機制,并且引入了容器存儲接口Container Storage Interface(CSI)機制,用于在Kubernetes和外部存儲系統之間建立一套標準的存儲管理接口,通過該接口可以為容器提供存儲服務。存儲提供方只需要基于標準接口進行存儲插件的實現,就能使用Kubernetes的原生存儲機制為容器提供存儲服務。
HBlock CSI插件
HBlock Container Storage Interface(CSI)插件是一種符合CSI規范的驅動程序。HBlock CSI插件與Kubernetes集成,可以為Kubernetes提供高性能、可擴展、高可靠的持久化存儲。HBlock CSI插件架構如下圖所示。
HBlock CSI插件運行在CSI Pod中,CSI Pod通過此插件管理持久卷的生命周期,包括創建、刪除、掛載和卸載持久卷等操作。每個持久卷在 HBlock存儲集群中對應一個iSCSI LUN。當Kubernetes中的Pod需要使用該卷時,將通過 iSCSI 協議在Pod所在的物理節點上掛載該LUN,Pod使用LUN對應的數據目錄進行讀寫。
HBlock CSI插件特點
穩定性強
HBlock CSI插件將存儲和計算資源完全解耦,實現了資源的隔離。HBlock CSI插件以容器化方式部署,充分保證了運行的穩定性。
安全性高
對于需要配置在HBlock CSI插件中的敏感信息,支持使用加密方式配置,充分保證用戶數據安全,不會泄露密碼密鑰等重要信息。
兼容性強
HBlock CSI插件以容器化方式部署,不依賴于操作系統版本的限制,可以運行在多種操作系統上,消除環境差異帶來的不確定性以及其他約束。
靈活性強
支持靜態PV,動態PV,動態PVC等多種調用方法,用戶可根據實際應用需要靈活創建、掛載存儲卷。
靜態PV:即直接使用YAML文件創建的PV,適用于存儲卷較少,并且不會頻繁修改配置信息的場景。
動態PV:即通過PVC創建的PV,無需提前創建PV,只要通過StorageClass把存儲資源定義好,Kubernetes就會根據PVC動態創建PV。適用于存儲卷較多,但存儲卷的類型都相同的場景。
動態PVC:通過StatefulSet中指定的StorageClass動態創建PVC,Kubernetes根據StorageClass中配置的信息,自動觸發HBlock CSI插件創建HBlock 卷。適用于需動態創建多個Pod,并為其掛載存儲的場景。
數據保護
支持快照和克隆,實現數據的快速備份與恢復。
快照是指存儲卷在某一特定時間點的狀態副本。
克隆是指為已有的Kubernetes卷創建副本,它可以像任何其它標準卷一樣被使用,唯一的區別就是配置后,后端設備將創建指定完全相同的副本,而不是創建一個“新的”空卷。