1. 程式人生 > >k8s的持久化儲存PV&&PVC

k8s的持久化儲存PV&&PVC

1.PV和PVC的引入

Volume 提供了非常好的資料持久化方案,不過在可管理性上還有不足。

拿前面 AWS EBS 的例子來說,要使用 Volume,Pod 必須事先知道如下資訊:

  1. 當前 Volume 來自 AWS EBS。

  2. EBS Volume 已經提前建立,並且知道確切的 volume-id。

Pod 通常是由應用的開發人員維護,而 Volume 則通常是由儲存系統的管理員維護。開發人員要獲得上面的資訊:

  1. 要麼詢問管理員。

  2. 要麼自己就是管理員。

這樣就帶來一個管理上的問題:應用開發人員和系統管理員的職責耦合在一起了。如果系統規模較小或者對於開發環境這樣的情況還可以接受。但當叢集規模變大,特別是對於生成環境,考慮到效率和安全性,這就成了必須要解決的問題。

Kubernetes 給出的解決方案是 PersistentVolume 和 PersistentVolumeClaim。

PersistentVolume (PV) 是外部儲存系統中的一塊儲存空間,由管理員建立和維護。與 Volume 一樣,PV 具有永續性,生命週期獨立於 Pod。

PersistentVolumeClaim (PVC) 是對 PV 的申請 (Claim)。PVC 通常由普通使用者建立和維護。需要為 Pod 分配儲存資源時,使用者可以建立一個 PVC,指明儲存資源的容量大小和訪問模式(比如只讀)等資訊,Kubernetes 會查詢並提供滿足條件的 PV。

有了 PersistentVolumeClaim,使用者只需要告訴 Kubernetes 需要什麼樣的儲存資源,而不必關心真正的空間從哪裡分配,如何訪問等底層細節資訊。這些 Storage Provider 的底層資訊交給管理員來處理,只有管理員才應該關心建立 PersistentVolume 的細節資訊。

 

2.通過NFS實現持久化儲存

作為準備工作,我們已經在 k8s-master 節點上搭建了一個 NFS 伺服器,目錄為 /nfsdata

下面建立一個 PV mypv1,配置檔案 nfs-pv1.yml 如下: