PV描述的是一個集群里的持久化存儲卷,和節點一樣,屬于集群級別資源。
約束與限制
-
在新版控制臺(需要將集群升級到1.19.10及以上并且 Everest存儲插件升級到1.2.10及以上 )PV資源已經正式開放給用戶管理;舊版控制臺仍保持導入使用或者是通過動態創建方式進行創建,用戶無法通過控制臺對PV資源進行生命周期管理。
-
支持多個PV掛載同一個SFS或SFS Turbo,但有如下限制:
- 多個不同的PVC/PV使用同一個底層SFS或SFS Turbo卷時,且被同一Pod使用會出現問題,需要避免這么使用。
- PV中persistentVolumeReclaimPolicy參數需設置為Retain,否則可能存在一個PV刪除時,級聯刪除底層卷,其他關聯這個底層卷的PV會由于底層存儲不在了,使用出現異常。
- 重復用底層存儲時,建議在應用層做好多讀多寫的隔離保護,防止產生的數據覆蓋和丟失。
-
通過YAML創建PV時,存儲資源如果為包周期資源,YAML中的persistentVolumeReclaimPolicy字段請勿設置為Delete,否則可能導致級聯刪除異常。關于PV回收策略詳情請參見PV回收策略。
存儲卷訪問模式
PV只能以底層存儲資源所支持的方式掛載到宿主系統上。例如,文件存儲可以支持多個節點讀寫,云硬盤只能被一個節點讀寫。
- ReadWriteOnce:卷可以被一個節點以讀寫方式掛載,云硬盤存儲卷支持此類型。
- ReadWriteMany:卷可以被多個節點以讀寫方式掛載,文件存儲、對象存儲、極速文件存儲支持此類型。
表 云存儲支持訪問模式
| 存儲類型 | ReadWriteOnce | ReadWriteMany |
|---|---|---|
| 云硬盤EVS | √ | × |
| 文件存儲SFS | × | √ |
| 對象存儲OBS | × | √ |
| 極速文件存儲SFS Turbo | × | √ |
PV回收策略
PV回收策略用于指定刪除PVC時,底層卷的回收策略,支持設定Delete、Retain回收策略。
- Delete:刪除PVC,PV資源與底層存儲資源均被刪除。
- Retain:刪除PVC,PV資源與底層存儲資源均不會被刪除,需要手動刪除回收。PVC刪除后PV資源狀態為“已釋放(Released)”,不能直接再次被PVC綁定使用。
Everest還支持一種刪除PVC時不刪除底層存儲資源的使用方法,當前僅支持使用YAML創建。PV回收策略設置為Delete,添加annotations“everest.io/reclaim-policy: retain-volume-only”,這樣刪除PVC,PV會被刪除,但底層存儲資源會保留。
創建云硬盤EVS存儲卷
說明:
創建EVS存儲卷有如下要求。
- 非系統盤,非專屬盤,非共享盤。
- 云硬盤類型為支持類型(普通IO,高IO,超高IO,通用SSD),云硬盤模式為 SCSI。
- 云硬盤未凍結,云硬盤狀態可用,云硬盤未被使用。
- 若云硬盤加密,所使用的密鑰狀態需可用。
使用控制臺創建
步驟 1 登錄CCE控制臺。
步驟 2 單擊集群名稱進入集群,在左側選擇“容器存儲”,在右側選擇“存儲卷”頁簽。
步驟 3 單擊右上角“創建存儲卷”,在彈出的窗口中填寫存儲卷參數。
- 存儲卷類型:選擇“云硬盤”。
- 選擇云硬盤。(僅支持選擇集群所屬企業項目和** **default 企業項目下的云硬盤)。
- PV名稱:輸入PV名稱。
- 訪問模式:ReadWriteOnce。
- 回收策略:Delete或Retain,具體解釋請參見PV回收策略。
步驟 3 單擊“創建”。
使用YAML創建
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: everest-csi-provisioner
everest.io/reclaim-policy: retain-volume-only # 可選字段,刪除PV,保留底層存儲卷
name: cce-evs-test
labels:
failure-domain.beta.kubernetes.io/region: cn-north-4
failure-domain.beta.kubernetes.io/zone: cn-north-4b
spec:
accessModes:
- ReadWriteOnce # 訪問模式,云硬盤必須為ReadWriteOnce
capacity:
storage: 10Gi # 云硬盤的容量,單位為Gi,取值范圍 1-32768
csi:
driver: disk.csi.everest.io # 掛載依賴的存儲驅動
fsType: ext4
volumeHandle: 459581af-e78c-4356-9e78-eaf9cd8525eb #云硬盤的volumeID
volumeAttributes:
everest.io/disk-mode: SCSI # 云硬盤的磁盤模式,僅支持SCSI
everest.io/disk-volume-type: SAS # 云硬盤的類型
storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
everest.io/crypt-key-id: 0992dbda-6340-470e-a74e-4f0db288ed82 # 可選字段,加密密鑰ID,使用加密盤的時候填寫
everest.io/enterprise-project-id: 86bfc701-9d9e-4871-a318-6385aa368183 # 可選字段,企業項目ID,如果指定企業項目,則創建PVC時也需要指定相同的企業項目,否則PVC無法綁定PV。
persistentVolumeReclaimPolicy: Delete # 回收策略
storageClassName: csi-disk # 存儲類名稱,云硬盤必須為csi-disk
表 關鍵參數說明
參數
描述
everest.io/reclaim-policy: retain-volume-only
可選字段
目前僅支持配置“retain-volume-only”
everest插件版本需 >= 1.2.9且回收策略為Delete時生效。如果回收策略是Delete且當前值設置為“retain-volume-only”刪除PVC回收邏輯為:刪除PV,保留底層存儲卷。
failure-domain.beta.kubernetes.io/region
集群所在的region。
failure-domain.beta.kubernetes.io/zone
創建云硬盤所在的可用區,必須和工作負載規劃的可用區保持一致。
volumeHandle
云硬盤的volumeID。
獲取方法:在云主機控制臺,單擊左側欄目樹中的“云硬盤 > 磁盤”,單擊要對接的云硬盤名稱進入詳情頁,在“概覽信息”頁簽下單擊“ID”后的復制圖標即可獲取云硬盤的volumeID。
everest.io/disk-volume-type
云硬盤類型,全大寫。
l?SAS:高I/O
l?SSD:超高I/O
l?GPSSD:通用型SSD
l?ESSD:極速型SSD
everest.io/crypt-key-id
卷為加密卷時為必填,填寫創建加密秘鑰的ID。
everest.io/enterprise-project-id
可選字段
云硬盤的企業項目ID。如果指定企業項目,則創建PVC時也需要指定相同的企業項目,否則PVC無法綁定PV。
獲取方法:在云主機控制臺,單擊左側欄目樹中的“云硬盤 > 磁盤”,單擊要對接的云硬盤名稱進入詳情頁,在“概覽信息”頁簽下找到“管理信息”中的企業項目,單擊并進入對應的企業項目控制臺,復制對應的ID值即可獲取云硬盤所屬的企業項目的ID。
persistentVolumeReclaimPolicy
集群版本號>=1.19.10且everest插件版本>=1.2.9時正式開放回收策略支持。
支持Delete、Retain回收策略。
Delete:
l?Delete且不設置everest.io/reclaim-policy:刪除PVC,PV資源與云硬盤均被刪除。
l?Delete且設置everest.io/reclaim-policy=retain-volume-only:刪除PVC,PV資源被刪除,云硬盤資源會保留。
Retain:刪除PVC,PV資源與底層存儲資源均不會被刪除,需要手動刪除回收。PVC刪除后PV資源狀態為“已釋放(Released)”,不能直接再次被PVC綁定使用。
如果數據安全性要求較高,建議使用Retain以免誤刪數據。
創建文件存儲SFS存儲卷
說明:
SFS必須與集群在同一個VPC內。
使用控制臺創建
步驟 1 登錄CCE控制臺。
步驟 2 單擊集群名稱進入集群,在左側選擇“容器存儲”,在右側選擇“存儲卷”頁簽。
步驟 3 單擊右上角“創建存儲卷”,在彈出的窗口中填寫存儲卷參數。
- 存儲卷類型:選擇“文件存儲”。
- 選擇文件存儲資源。
- PV名稱:輸入PV名稱。
- 訪問模式:ReadWriteMany。
- 回收策略:Delete或Retain,具體解釋請參見PV回收策略。
- 掛載參數:文件存儲卷支持設置掛載參數。
步驟 4 單擊“創建”。
使用YAML創建
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: everest-csi-provisioner
everest.io/reclaim-policy: retain-volume-only # 可選字段,刪除PV,保留底層存儲卷
name: cce-sfs-test
spec:
accessModes:
- ReadWriteMany # 訪問模式,文件存儲必須為ReadWriteMany
capacity:
storage: 1Gi # 文件存儲容量大小
csi:
driver: nas.csi.everest.io # 掛載依賴的存儲驅動
fsType: nfs
volumeHandle: 30b3d92a-0bc7-4610-b484-534660db81be # 文件存儲的ID
volumeAttributes:
everest.io/share-export-location: sfs-nas01.cn-north-4.ctcloud.com:/share-436304e8
storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
persistentVolumeReclaimPolicy: Retain # 回收策略
storageClassName: csi-nas # 存儲類名稱
mountOptions: [] # 掛載參數
表 關鍵參數說明
| 參數 | 描述 |
|---|---|
| everest.io/reclaim-policy: retain-volume-only | 可選字段 目前僅支持配置“retain-volume-only”everest插件版本需 >= 1.2.9且回收策略為Delete時生效。如果回收策略是Delete且當前值設置為“retain-volume-only”刪除PVC回收邏輯為:刪除PV,保留底層存儲卷。 |
| volumeHandle | 文件存儲的ID。 獲取方法:在CCE控制臺,單擊頂部的“服務列表 > 存儲 > 彈性文件服務”,在彈性文件服務列表中單擊對應的彈性文件服務名稱,在詳情頁中復制“ID”后的內容即可。 |
| everest.io/share-export-location | 文件存儲的共享路徑。 獲取方法:在CCE控制臺,單擊頂部的“服務列表 > 存儲 > 彈性文件服務”,在彈性文件服務列表中可以看到“掛載地址”列,即為文件存儲的共享路徑。 |
| mountOptions | 掛載參數。 不設置時默認配置為如下配置。mountOptions: - vers=3 - timeo=600 - nolock - hard |
| everest.io/crypt-key-id | 卷為加密卷時為必填,填寫創建加密秘鑰的ID。 |
| persistentVolumeReclaimPolicy | 集群版本號>=1.19.10且everest插件版本>=1.2.9時正式開放回收策略支持。支持Delete、Retain回收策略。 Delete : Delete且不設置everest.io/reclaim-policy:刪除PVC,PV資源與文件存儲均被刪除。 Delete且設置everest.io/reclaim-policy=retain-volume-only:刪除PVC,PV資源被刪除,文件存儲資源會保留。 **Retain** :刪除PVC,PV資源與底層存儲資源均不會被刪除,需要手動刪除回收。PVC刪除后PV資源狀態為“已釋放(Released)”, 不能直接再次被PVC綁定使用。如果數據安全性要求較高,建議使用Retain以免誤刪數據。 |
| storageClassName | 存儲類名稱,支持配置csi-nas。 csi-nas:表示使用SFS 1.0容量型文件存儲。 |
創建極速文件存儲SFS Turbo存儲卷
說明:
SFS Turbo必須與集群在同一個VPC內。
使用控制臺創建
步驟 1 登錄CCE控制臺。
步驟 2 單擊集群名稱進入集群,在左側選擇“容器存儲”,在右側選擇“存儲卷”頁簽。
步驟 3 單擊右上角“創建存儲卷”,在彈出的窗口中填寫存儲卷參數。
- 存儲卷類型:選擇“極速文件存儲”。
- 選擇極速文件存儲資源。
- PV名稱:輸入PV名稱。
- 訪問模式:ReadWriteMany。
- 回收策略:Retain,具體解釋請參見PV回收策略。
- 掛載參數:極速文件存儲卷支持設置掛載參數。
步驟 4 單擊“創建”。
使用YAML創建
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: everest-csi-provisioner
name: cce-sfsturbo-test
spec:
accessModes:
- ReadWriteMany # 訪問模式,極速文件存儲必須為ReadWriteMany
capacity:
storage: 100.00Gi # 極速文件存儲容量大小
csi:
driver: sfsturbo.csi.everest.io # 掛載依賴的存儲驅動
fsType: nfs
volumeHandle: 6674bd0a-d760-49de-bb9e-805c7883f047 # 極速文件存儲的ID。
volumeAttributes:
everest.io/share-export-location: 192.168.0.85:/ # 極速文件存儲的共享路徑
storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
persistentVolumeReclaimPolicy: Retain # 回收策略
storageClassName: csi-sfsturbo # 存儲類名稱,極速文件存儲必須為csi-sfsturbo
mountOptions: [] # 掛載參數
表 關鍵參數說明
| 參數 | 描述 |
|---|---|
| everest.io/reclaim-policy: retain-volume-only | 可選字段目前僅支持配置“retain-volume-only”everest插件版本需 >= 1.2.9且回收策略為Delete時生效。 如果回收策略是Delete且當前值設置為“retain-volume-only”刪除PVC回收邏輯為:刪除PV,保留底層存儲卷。 |
| fsType | 文件類型,支持“obsfs”與“s3fs”,取值為s3fs時創建是obs對象桶,配套使用s3fs掛載; 取值為obsfs時創建的是obs并行文件系統,配套使用obsfs掛載,推薦使用。 |
| volumeHandle | 對象存儲的桶名稱。 |
| everest.io/obs-volume-type | 存儲類型,包括STANDARD(標準桶)、WARM(低頻訪問桶)。 |
| everest.io/region | OBS存儲區域。 |
| everest.io/enterprise-project-id | 可選字段對象存儲的企業項目ID。如果指定企業項目,則創建PVC時也需要指定相同的企業項目,否則PVC無法綁定PV。 : 在對象存儲服務控制臺,單擊左側欄目樹中的“桶列表”或“并行文件系統”, 單擊要對接的對象存儲名稱進入詳情頁,在“基本信息”頁簽下找到企業項目, 單擊并進入對應的企業項目控制臺,復制對應的ID值即可獲取對象存儲所屬的企業項目的ID。 |
| nodePublishSecretRef | 對象存儲卷掛載支持設置自定義訪問密鑰(AK/SK),您可以使用AK/SK創建一個Secret,然后掛載到PV。詳細說明請參見對象存儲卷掛載設置自定義訪問密鑰(AK/SK)。 |
| mountOptions | 掛載參數。 |
| persistentVolumeReclaimPolicy | 集群版本號>=1.19.10且everest插件版本>=1.2.9時正式開放回收策略支持。支持Delete、Retain回收策略。 : Delete且不設置everest.io/reclaim-policy:刪除PVC,PV資源與對象存儲均被刪除。 Delete且設置everest.io/reclaim-policy=retain-volume-only:刪除PVC,PV資源被刪除,對象存儲資源會保留。 Retain :刪除PVC,PV資源與底層存儲資源均不會被刪除,需要手動刪除回收。PVC刪除后PV資源狀態為“已釋放(Released)”, 不能直接再次被PVC綁定使用。如果數據安全性要求較高,建議使用Retain以免誤刪數據。 |