▪️k8s - PersistentVolume (持久卷)
2024-10-31
| 2025-3-19
字數 686閱讀時間 2 分鐘
持久卷是指能將數據進行持久性儲存的一種資源對象,獨立於 Pod ,有一套自己的生命週期
 
為了能實現持久卷,主要使用下方兩 API
  • PersistentVolume (PV)
  • PersistentVolumeClaim (PVC)
 

PersistentVolume (PV)


叢集中先定義好的存儲區塊,由管理員事先準備
 

配置


定義

範例

PersistentVolumeClaim (PVC)


代表用戶對存儲的請求,可以向 PV 申請特定大小和訪問模式
 
可以照申請方式區分為
  • 靜態綁定 : 綁定後 PVC 就會獨佔 PV ,讓 PV 無法被其他 PVC 綁定
  • 動態綁定 : 可動態調整 PV 跟 PVC 綁定,來支援多 PVC 綁一個 PV
 

配置

定義

  • metadata : => 元數據信息。
    • name :  => PersistentVolumeClaim 的名稱。
  • spec : ⇒ 定義 PersistentVolumeClaim 的具體配置。
    • volumeModes : Filesystem | Block ⇒ 定義 volume 模式
      • Filesystem
        Volume 會 Mount 到 Pod 指定目錄
        Block
        Volume 會被視為原始區塊設備使用
    • accessModes : ⇒ 定義訪問模式。
      • - ReadWriteOnce ⇒ 允許單個節點讀寫
        - ReadOnlyMany ⇒ 多個節點只讀
        - ReadWriteMany ⇒ 多個節點讀寫
    • resources: => 定義資源請求
      • requests: => 資源請求
        • storage10Gi => 請求的存儲容量
    • storageClassNamestandard => 定義存儲類別名稱
    • selector: => 定義選擇器,用於選擇特定的 PersistentVolume。
      • matchLabels: => 匹配標籤。
        • keyvalue => 標籤鍵值對。
      • matchExpressions: => 匹配表達式。
        • keykey => 標籤鍵。
        • operatorIn => 操作符(例如 In、NotIn、Exists、DoesNotExist)。
        • values: => 值列表。
          • value1
          • value2

範例

PV 和 PVC 的生命週期


PV 跟 PVC 之間互動遵循以下週期
  1. 備置 ⇒ 管理員 準備 PV ,分成兩種備製模式 - 靜態備置跟動態備置
    1. 靜態備置 : 管理員提前準備好 PV
    2. 動態備置 : PVC 依據 StorageClass 來備置空間
  1. 綁定 ⇒ Pod 創建 PVC ,並且跟 PV 綁定跟申請空間
  1. 使用 ⇒ Pod 會根據 PVC 設定來使用 PV Pod 使用得 PVC 跟 PV 在使用期間會被標註為不可刪除
  1. 回收 ⇒ 當不在使用 PVC ,可以使用 API 將 PVC 刪除來回收資源,而刪除 PVC 同時設定 PV 數據處置方式:
    1. 保留(Retain):PV 內數據保留,狀態改為 released,等待狀態更新,才可給下一個 PVC 使用
    2. 刪除(Delete):PV 內數據刪除(默認)
 
  • kubernetes
  • k8s - Servicesk8s - StatefulSet
    Loading...