了解Kubernetes和OpenEBS中的持久卷和持續(xù)卷聲明
譯文【51CTO.com快譯】概述:Kubernetes中的卷是什么?
在Kubernetes中,存儲卷抽象用于提供API,該API將存儲的物理實現(xiàn)從應用程序資源的使用方式中抽象出來。在Kubernetes上運行的容器并不存儲它們所創(chuàng)建或處理的數(shù)據(jù)。卷本質(zhì)上提供了一個存儲目錄,運行在Pod中的容器可以使用該目錄來存儲和共享數(shù)據(jù)。
Kubernetes支持兩種主要類型的卷:
(1)臨時卷——這些是用于需要存儲但不需要在重新啟動后訪問數(shù)據(jù)的應用程序。臨時卷僅持續(xù)其Pod的生命周期,并在Pod停止運行時被刪除。臨時卷適用于內(nèi)存大小有限且可能會影響性能的低延遲應用程序。Kubernetes允許使用各種不同用途的臨時卷,其中包括:
- 空目錄
 - Secrets、ConfigMaps和downAPI
 - CSI臨時卷
 - 通用臨時卷
 
(2)持久卷——這是一個API對象,代表Pod使用的物理存儲的抽象實現(xiàn),但它們的持續(xù)時間超過了Pod的生命周期。持久卷(PV)是Pod連接到的物理存儲的一部分,因此它們可以存儲即使在容器重新啟動后也可用的數(shù)據(jù)。
本文將探討持久卷以及它們在Kubernetes生態(tài)系統(tǒng)中解決的問題。
卷插件
Kubernetes實現(xiàn)了容器存儲接口(CSI),可以標準化用于存儲實現(xiàn)的第三方插件的創(chuàng)建。Kubernetes使用這些插件將節(jié)點上的物理存儲公開給在集群數(shù)據(jù)平臺中運行的Kubelet。通過這種方式,Kubernetes抽象可以為Pod和容器提供存儲資源。CSI支持的插件系統(tǒng)還允許供應商向Kubernetes添加存儲系統(tǒng),而無需修改Kubernetes的核心代碼和二進制文件。
一些最流行的Kubernetes CSI插件包括:
- AWS Elastic Block Storage
 - Azure disk
 - BeeGFS
 - CephFS
 - Dell EMC PowerMax
 - GCE Persistent Disk
 - Google Cloud Filestore
 - GlusterFS
 - Huawei Storage CSI
 - HyperV CSI
 - IBM Block Storage
 - OpenEBS
 - Portworx
 - Pure Storage CSI
 
(1)Kubernetes中的持久化存儲
一旦CSI插件被設置并在Kubernetes中運行,資源和用戶就可以使用Kubernetes存儲API對象來使用卷:持久卷(PV)、持久卷聲明(PVC)和存儲類。本節(jié)探討這些API對象及其在為Kubernetes中的容器提供持久存儲方面的作用。
(2)持久卷(PV)
PV是集群可用的塊存儲,它通過捕獲其實現(xiàn)協(xié)議的詳細信息來公開對象、文件和塊存儲系統(tǒng),無論是iSCSI(互聯(lián)網(wǎng)上的SCSI)、NFS還是特定供應商和云計算提供商提供的任何存儲系統(tǒng)。PV的生命周期獨立于任何使用它的Pod。這意味著PV會在整個應用程序生命周期中持久保存數(shù)據(jù)以供容器使用。
PV是一個Kubernetes API對象,其配置類似于:
持久卷聲明(PVC)
當用戶請求PV存儲時,他們使用PVC作為請求特定存儲要求(例如訪問模式和大小)的Kubernetes對象。PVC是通過將YAML配置文件應用于集群而創(chuàng)建的,其規(guī)范類似于:
Pod通過在Pod配置文件中將其聲明為卷規(guī)范來附加到PVC:
一旦Pod綁定到PVC,PVC會根據(jù)配置文件中指定的指定磁盤大小和訪問模式將其附加到相應的PV。
靜態(tài)資源調(diào)配vs.動態(tài)資源調(diào)配
PV可以進行靜態(tài)配置或動態(tài)配置。在靜態(tài)PV配置中,存儲對象首先在主機上創(chuàng)建和配置,然后可供集群使用。在這種情況下,Pod附加到指向此存儲對象特定部分的PV。
如果PV是動態(tài)配置的,則使用存儲類對象來定義指向物理存儲系統(tǒng)的不同存儲實現(xiàn)特征。存儲類對象請求存儲對象的一部分,然后創(chuàng)建一個與其配置文件中的規(guī)范相匹配的卷。存儲類允許將PV自動且動態(tài)地分配給Kubernetes對象。
存儲類對象的配置文件類似于:
PV和PVC的生命周期
PVC代表對PV資源的請求。兩個對象之間的交互遵循以下模式:
(1)供應——這是物理存儲系統(tǒng)可供集群用戶使用的地方。而供應可以是靜態(tài)的或動態(tài)的。
(2)綁定——將PVC與合適的PV匹配,然后將它們綁定在一起的過程。
(3)使用——Pod消耗卷的過程。
(4)回收——當用戶使用完卷時,將刪除綁定對象,從而回收存儲資源。一些受支持的回收策略包括:
- 保留
 - 刪除
 - 回收
 
可以使用預綁定程序為特定PV保留一些PV。這意味著PVC將始終綁定到PV,無論其Pod是否正在運行應用程序。
單片存儲系統(tǒng)中的PV和PVC
在傳統(tǒng)存儲系統(tǒng)中,Kubernetes與可虛擬化和聚合多個存儲設備的單體存儲軟件接口。這些設備可以是SAN存儲、裸機服務器或基于云的塊存儲解決方案。該軟件與使用PV、PVC和存儲類管理存儲訪問的CSI插件接口。
傳統(tǒng)共享存儲設施
容器附加存儲(CAS)和持久卷(PV)
容器附加存儲(CAS)允許企業(yè)利用云原生平臺的靈活性和可擴展性來擴展卷抽象的功能。在CAS中,存儲解決方案作為微服務部署在容器中,可由Kubernetes等編排器管理。CAS集群的數(shù)據(jù)平臺包括運行容器的副本Pod,這些容器提供卷并允許訪問存儲。CAS集群的控制平臺包括策略、存儲控制器和數(shù)據(jù)平臺配置。
OpenEBS LocalPV卷
OpenEBS支持為Kubernetes中的本地卷配置動態(tài)PV。本地卷是僅可從單個節(jié)點(例如個人計算機(PC)或虛擬機(VM))使用的集群存儲。本地卷用于可以容忍節(jié)點不正常時不可用的應用程序,并使用本地目錄、分區(qū)和磁盤向群集公開存儲資源。這使得該插件更適合需要動態(tài)管理和監(jiān)視的本地需求,以及需要自我管理復制和數(shù)據(jù)安全的高性能應用程序。本地卷的一些使用情形包括:
- 復制數(shù)據(jù)庫。
 - 在單節(jié)點集群上運行的邊緣工作負載。
 - 具有自己的高可用集群(HA)配置的有狀態(tài)工作負載。
 
結(jié)語
PV向Kubernetes集群公開物理存儲實現(xiàn),以便Pod可以存儲和共享數(shù)據(jù)。使用PV,由不可變?nèi)萜魃珊痛鎯Φ臄?shù)據(jù)可以在應用程序的整個生命周期中持久使用。
本文探討了理解Kubernetes持久存儲所需的概念,主要關注PV和PVC。CAS通過依賴微服務和容器編排來擴展卷的功能,還允許創(chuàng)建靈活、精細且高度可用的云原生存儲基礎設施。
原文連接:Understanding Persistent Volumes and PVCs in Kubernetes and OpenEBS,作者:Sudip Sengupta
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】





















 
 
 









 
 
 
 