更改 PersistentVolume 的回收策略
本页介绍如何更改 Kubernetes PersistentVolume 的回收策略。
开始之前
你需要一个 Kubernetes 集群,并且必须配置 kubectl 命令行工具以与你的集群通信。建议在至少有两个不充当控制平面主机的节点的集群上运行本教程。如果还没有集群,你可以使用 minikube 创建一个集群,或者使用以下 Kubernetes Playground 之一
要检查版本,请输入kubectl version
。为什么更改 PersistentVolume 的回收策略
PersistentVolume 可以有多种回收策略,包括“保留(Retain)”、“回收(Recycle)”和“删除(Delete)”。对于动态配置的 PersistentVolume,默认的回收策略是“删除”。这意味着当用户删除相应的 PersistentVolumeClaim 时,会自动删除动态配置的卷。如果卷包含重要数据,则此自动行为可能不合适。在这种情况下,使用“保留”策略更合适。使用“保留”策略,如果用户删除 PersistentVolumeClaim,则不会删除相应的 PersistentVolume。相反,它将移动到“已释放”阶段,可以在该阶段手动恢复其所有数据。
更改 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