更改 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