在K8S中,PV 和 PVC有何作用?

黄嘉波發表於2024-10-14

在 Kubernetes (K8S) 中,PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 是用於管理持久化儲存的關鍵元件。下面詳細介紹它們各自的作用及其相互關係:

1. PersistentVolume (PV)
1.1 作用:
  1. 提供持久儲存
    PV 是叢集級別的資源,它代表叢集中的一塊儲存空間,這塊儲存可以來自於本地檔案系統、NFS、網路儲存或是雲提供商的服務等。PV 的主要目的是為 Pod 提供持久化的儲存空間,即使 Pod 因故重啟或遷移至其他節點,資料依然可以被保留下來。

  2. 儲存資源的生命週期管理
    PV 的生命週期獨立於使用它的 Pod。這意味著 PV 可以被建立、使用、回收、甚至刪除,而這一切都不依賴於任何具體的 Pod。當一個 PV 不再被使用時,它可以被回收(Reclaim)以便再次使用。

  3. 訪問模式
    PV 支援多種訪問模式,如 ReadWriteOnce(單節點讀寫)、ReadOnlyMany(多節點只讀)、ReadWriteMany(多節點讀寫)等,這些模式定義了 PV 如何被 Pod 訪問。

  4. 回收策略
    當 PV 不再被 PVC 引用時,可以根據預設的回收策略處理 PV。回收策略可以是 Retain(保留)、Recycle(回收,清除資料)或 Delete(刪除)。

1.2 屬性:
  • 容量:PV 的儲存容量。
  • 訪問模式:如上所述,定義了 PV 的訪問方式。
  • 儲存型別:指定了 PV 所使用的儲存後端型別。
  • 標籤:可以附加標籤來幫助組織和過濾 PV。
2. PersistentVolumeClaim (PVC)
2.1 作用:
  1. 請求儲存資源
    PVC 是應用對儲存資源的請求,它定義了應用程式所需要的儲存容量、訪問模式以及其他屬性。PVC 允許使用者以宣告式的方式請求儲存資源,而不需要直接指定具體的儲存位置。

  2. 繫結 PV
    當一個 PVC 被建立後,Kubernetes 會嘗試找到一個符合條件的 PV 與其繫結。如果找不到合適的 PV,那麼 PVC 將會處於未繫結狀態,直到有合適的 PV 出現為止。

  3. 簡化儲存管理
    透過 PVC,使用者可以更加關注於應用程式本身,而不是底層的儲存細節。PVC 和 PV 的繫結過程是自動化的,簡化了儲存資源的管理。

2.2 屬性:
  • 請求的儲存容量:PVC 請求的最小儲存容量。
  • 訪問模式:請求的訪問模式,必須與 PV 的訪問模式相容。
  • 儲存類:指定儲存類,用於指示如何建立 PV。如果未指定儲存類且沒有合適的 PV,那麼可以觸發動態 PV 的建立。
3. PV 和 PVC 的關係

PV 和 PVC 之間的關係類似於“供應”與“需求”的關係:

  • PV 是叢集中可供使用的儲存資源。
  • PVC 是應用程式對儲存資源的需求宣告。
  • 當一個 PVC 被建立後,Kubernetes 會嘗試找到一個與之匹配的 PV 進行繫結。
  • 繫結成功後,PV 的狀態會變為“Bound”,並且該 PV 將成為 PVC 的一部分。
  • 當 PVC 被刪除時,PV 可以根據其回收策略被保留、回收或刪除。

綜上所述,透過 PV 和 PVC 的機制,Kubernetes 提供了一種靈活的方式來管理叢集中的持久化儲存資源,使得儲存資源的分配和回收變得更加自動化和高效。

相關文章