kubernetes資源對象--Volume

在Docker的設計實現中,容器中的數據是臨時的,即當容器被銷燬時,其中的數據將會丟失。如果需要持久化數據,需要使用Docker數據卷掛載宿主機上的文件或者目錄到容器中。在K8S中,當Pod重建的時候,數據是會丟失的,K8S也是通過數據卷掛載來提供Pod數據的持久化的。K8S數據卷是對Docker數據卷的擴展,K8S數據卷是Pod級別的,可以用來實現Pod中容器的文件共享。

支持的類型

EmptyDir

HostPath

GCE PersistentDisk

AWS ElasticBlock Store

NFS

iSCSI

Flocker

GlusterFS

RBD

Git Repo

Secret

PersistentVolume Claim

Downward API

本地數據卷

EmptyDir、HostPath這兩種類型的數據卷,只能用於本地文件系統。本地數據卷中的數據只會存在於一臺機器上,所以當Pod發生遷移的時候,數據便會丟失。該類型Volume的用途是:Pod中容器間的文件共享、共享宿主機的文件系統

EmptyDir

如果Pod配置了EmpyDir數據卷,在Pod的生命週期內都會存在,當Pod被分配到Node上時,會在Node上創建EmptyDir數據卷,並掛載到Pod的容器中。只要Pod存在,EmpyDir數據卷都會存在(容器刪除不會導致EmpyDir數據卷丟失數據),但是如果Pod的生命週期終結(Pod被刪除),EmpyDir數據卷也會被刪除,並且永久丟失。

EmpyDir數據卷非常適合實現Pod中容器的文件共享。Pod的設計提供了一個很好的容器組合的模型,容器之間各司其職,通過共享文件目錄來完成交互,比如可以通過一個專職日誌收集容器,在每個Pod中和業務容器中進行組合,來完成日誌的收集和彙總。

HostPath

HostPath數據卷允許將容器宿主機上的文件系統掛載到Pod中。如果Pod需要使用宿主機上的某些文件,可以使用HostPath。

網絡數據卷

K8S提供了很多類型的數據卷以集成第三方的存儲系統,包括一些非常流行的分佈式文件系統,也有在IaaS平臺上提供的存儲支持,這些存儲系統都是分佈式的,通過網絡共享文件系統,因此我們稱這一類數據卷爲網絡數據卷。

網絡數據卷能夠滿足數據的持久化需求,Pod通過配置使用網絡數據卷,每次Pod創建的時候都會將存儲系統的遠端文件目錄掛載到容器中,數據卷中的數據將被永久保存,即使Pod被刪除,只是除去掛載數據卷,數據卷中的數據仍然保存在存儲系統中,且當新的Pod被創建時,仍是掛載同樣的數據卷。網絡數據捲包含以下幾種:NFS、iSCISI、GlusterFS、RBD(Ceph Block Device)、Flocker、AWS Elastic Block Store、GCE Persistent Disk


信息數據卷

K8S中有一些數據卷,主要用來給容器傳遞配置信息,稱之爲信息數據卷,比如Secret(處理敏感配置信息,密碼、Token等)、Downward API(通過環境變量的方式告訴容器Pod的信息)、Git Repo(將Git倉庫下載到Pod中),都是將Pod的信息以文件形式保存,然後以數據卷方式掛載到容器中,容器通過讀取文件獲取相應的信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章