變更 PersistentVolume 的回收策略
本頁說明如何變更 Kubernetes PersistentVolume 的回收策略。
開始之前
您需要有一個 Kubernetes 叢集,並且必須設定 kubectl 命令列工具以與您的叢集通訊。建議在至少兩個節點且不充當控制平面主機的叢集上執行本教學課程。如果您還沒有叢集,可以使用 minikube 建立一個,或者您可以使用以下 Kubernetes 實驗環境之一
若要檢查版本,請輸入kubectl version
。為什麼要變更 PersistentVolume 的回收策略
PersistentVolume 可以有各種回收策略,包括「Retain」、「Recycle」和「Delete」。對於動態佈建的 PersistentVolume,預設回收策略為「Delete」。這表示當使用者刪除對應的 PersistentVolumeClaim 時,會自動刪除動態佈建的卷。如果卷包含寶貴的資料,則此自動行為可能不適當。在這種情況下,使用「Retain」策略更為合適。使用「Retain」策略,如果使用者刪除 PersistentVolumeClaim,則不會刪除對應的 PersistentVolume。相反地,它會移至「Released」階段,在此階段可以手動復原其所有資料。
變更 PersistentVolume 的回收策略
列出叢集中的 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 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
此清單也包含繫結至每個卷的宣告名稱,以便更輕鬆地識別動態佈建的卷。
選擇您的 PersistentVolume 之一並變更其回收策略
kubectl patch pv <your-pv-name> -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
其中
<your-pv-name>
是您選擇的 PersistentVolume 的名稱。注意
在 Windows 上,您必須雙引號任何包含空格的 JSONPath 範本(而不是如上所示 bash 的單引號)。這反過來表示您必須在範本中的任何字面值周圍使用單引號或逸出的雙引號。例如
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
在先前的輸出中,您可以看到繫結至宣告
default/claim3
的卷具有回收策略Retain
。當使用者刪除宣告default/claim3
時,它不會自動刪除。
下一步
- 深入瞭解 PersistentVolumes。
- 深入瞭解 PersistentVolumeClaims。
參考文獻
- PersistentVolume
- 請注意 PersistentVolume 的
.spec.persistentVolumeReclaimPolicy
欄位。
- 請注意 PersistentVolume 的
- PersistentVolumeClaim