更改 PersistentVolume 的回收策略
本页面介绍了如何修改 Kubernetes PersistentVolume 的回收策略。
开始之前
你需要拥有一个 Kubernetes 集群,并且必须配置 kubectl 命令行工具,以便与你的集群通信。建议在至少有两个不作为控制平面主机运行的节点的集群上运行本教程。如果你还没有集群,可以使用 minikube 创建一个,或者使用以下 Kubernetes 在线环境之一
要检查版本,请输入 kubectl version。
为何要修改 PersistentVolume 的回收策略
PersistentVolumes 可以具有各种回收策略,包括 "Retain"(保留)、"Recycle"(回收)和 "Delete"(删除)。对于动态配置的 PersistentVolume,默认的回收策略是 "Delete"。这意味着当用户删除相应的 PersistentVolumeClaim 时,动态配置的卷会被自动删除。如果卷中包含重要数据,这种自动行为可能不合适。在这种情况下,使用 "Retain" 策略更为恰当。使用 "Retain" 策略,如果用户删除 PersistentVolumeClaim,相应的 PersistentVolume 将不会被删除。相反,它会被移至 Release 阶段,用户可以手动恢复其中的所有数据。
修改 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此列表中还包含绑定到每个卷的 Claim 名称,以便更容易识别动态配置的卷。
选择一个 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在上述输出中,你可以看到绑定到 Claim
default/claim3的卷的回收策略是Retain。当用户删除 Claimdefault/claim3时,它不会被自动删除。
下一步
- 详细了解 PersistentVolumes。
- 详细了解 PersistentVolumeClaims。
参考
- PersistentVolume
- 请注意 PersistentVolume 的
.spec.persistentVolumeReclaimPolicy字段。
- 请注意 PersistentVolume 的
- PersistentVolumeClaim