更改 PersistentVolume 的回收策略
本頁面展示瞭如何更改 Kubernetes PersistentVolume 的回收策略。
準備工作
你需要有一個 Kubernetes 叢集,並且 kubectl 命令列工具已配置為與你的叢集通訊。建議你在至少有兩個不充當控制平面主機的節點叢集上執行本教程。如果你還沒有叢集,可以使用 minikube 建立一個,或者使用以下 Kubernetes 演練場之一。
要檢查版本,請輸入 kubectl version
。
為什麼要更改 PersistentVolume 的回收策略
PersistentVolumes 可以有多種回收策略,包括 “Retain”(保留)、“Recycle”(回收)和 “Delete”(刪除)。對於動態製備的 PersistentVolumes,預設的回收策略是 “Delete”。這意味著當用戶刪除相應的 PersistentVolumeClaim 時,動態製備的卷會自動刪除。如果捲包含寶貴資料,這種自動行為可能不合適。在這種情況下,更適合使用 “Retain” 策略。使用 “Retain” 策略,如果使用者刪除 PersistentVolumeClaim,相應的 PersistentVolume 將不會被刪除。相反,它會被移到 Released 階段,在該階段可以手動恢復所有資料。
更改 PersistentVolume 的回收策略
列出叢集中的 PersistentVolumes
kubectl get pv
輸出類似於:
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-b6efd8da-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim1 manual 10s pvc-b95650f8-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim2 manual 6s pvc-bb3ca71d-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim3 manual 3s
此列表還包括繫結到每個卷的 PVC 名稱,以便於識別動態製備的卷。
選擇你的一個 PersistentVolume 並更改其回收策略
kubectl patch pv <your-pv-name> -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
其中
<your-pv-name>
是你選擇的 PersistentVolume 的名稱。注意
在 Windows 上,你必須用雙引號(而不是像上面 bash 中所示的單引號)將包含空格的任何 JSONPath 模板引起來。這反過來意味著你必須在模板中的任何文字周圍使用單引號或轉義的雙引號。例如
kubectl patch pv <your-pv-name> -p "{\"spec\":{\"persistentVolumeReclaimPolicy\":\"Retain\"}}"
驗證你選擇的 PersistentVolume 具有正確的策略
kubectl get pv
輸出類似於:
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-b6efd8da-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim1 manual 40s pvc-b95650f8-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim2 manual 36s pvc-bb3ca71d-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Retain Bound default/claim3 manual 33s
在上述輸出中,你可以看到繫結到 PVC
default/claim3
的卷的回收策略為Retain
。當用戶刪除 PVCdefault/claim3
時,它將不會自動刪除。
下一步
- 瞭解更多關於 PersistentVolumes 的資訊。
- 瞭解更多關於 PersistentVolumeClaims 的資訊。
參考
- PersistentVolume
- 請注意 PersistentVolume 的
.spec.persistentVolumeReclaimPolicy
欄位。
- 請注意 PersistentVolume 的
- PersistentVolumeClaim