持久卷是指能將數據進行持久性儲存的一種資源對象,獨立於 Pod ,有一套自己的生命週期
為了能實現持久卷,主要使用下方兩 API
- PersistentVolume (PV)
- PersistentVolumeClaim (PVC)
PersistentVolume (PV)
叢集中先定義好的存儲區塊,由管理員事先準備
配置
定義
範例
PersistentVolumeClaim (PVC)
代表用戶對存儲的請求,可以向 PV 申請特定大小和訪問模式
可以照申請方式區分為
- 靜態綁定 : 綁定後 PVC 就會獨佔 PV ,讓 PV 無法被其他 PVC 綁定
- 動態綁定 : 可動態調整 PV 跟 PVC 綁定,來支援多 PVC 綁一個 PV
配置
定義
kind
:PersistentVolumeClaim
⇒ 資源類型
metadata
: => 元數據信息。name
: => PersistentVolumeClaim 的名稱。
spec
: ⇒ 定義 PersistentVolumeClaim 的具體配置。volumeModes
:Filesystem
|Block
⇒ 定義 volume 模式accessModes
: ⇒ 定義訪問模式。resources
: => 定義資源請求requests
: => 資源請求storage
:10Gi
=> 請求的存儲容量storageClassName
:standard
=> 定義存儲類別名稱selector
: => 定義選擇器,用於選擇特定的 PersistentVolume。matchLabels
: => 匹配標籤。key
:value
=> 標籤鍵值對。matchExpressions
: => 匹配表達式。key
:key
=> 標籤鍵。operator
:In
=> 操作符(例如 In、NotIn、Exists、DoesNotExist)。values
: => 值列表。value1
value2
Filesystem | Volume 會 Mount 到 Pod 指定目錄 |
Block | Volume 會被視為原始區塊設備使用 |
-
ReadWriteOnce
⇒ 允許單個節點讀寫-
ReadOnlyMany
⇒ 多個節點只讀-
ReadWriteMany
⇒ 多個節點讀寫範例
PV 和 PVC 的生命週期
PV 跟 PVC 之間互動遵循以下週期
- 備置 ⇒ 管理員 準備 PV ,分成兩種備製模式 - 靜態備置跟動態備置
- 靜態備置 : 管理員提前準備好 PV
- 動態備置 : PVC 依據 StorageClass 來備置空間
- 綁定 ⇒ Pod 創建 PVC ,並且跟 PV 綁定跟申請空間
- 使用 ⇒ Pod 會根據 PVC 設定來使用 PV Pod 使用得 PVC 跟 PV 在使用期間會被標註為不可刪除
- 回收 ⇒ 當不在使用 PVC ,可以使用 API 將 PVC 刪除來回收資源,而刪除 PVC 同時設定 PV 數據處置方式:
- 保留(Retain):PV 內數據保留,狀態改為 released,等待狀態更新,才可給下一個 PVC 使用
- 刪除(Delete):PV 內數據刪除(默認)