最近需要部署一個MySQL容器,因爲數據庫存放的數據需要一直保存,就涉及到持久化的概念。容器本身是無狀態的,出現問題後隨時可銷燬,但保存數據的的卷不能被銷燬,需要創建一個持久卷。持久卷刪除時有三種回售模式,
- 保持(Retain):刪除PV後後端存儲上的數據仍然存在,如需徹底刪除則需要手動刪除後端存儲volume
- 刪除(Delete):刪除被PVC釋放的PV和後端存儲volume
- 回收(Recycle):保留PV,但清空PV上的數據(已廢棄)
默認情況下是delete模式,可以通過以下命令查看:
獲取所有持久卷
# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-89ecc53b-725c-11ea-a8e2-005056aa2a6d 5Gi RWX Delete Bound service/mysql-pvc isilon 18h
查看持久卷具體信息
# kubectl describe pv pvc-89ecc53b-725c-11ea-a8e2-005056aa2a6d
Name: pvc-89ecc53b-725c-11ea-a8e2-005056aa2a6d
Labels: <none>
Annotations: pv.kubernetes.io/provisioned-by=isilon
Finalizers: [external-provisioner.volume.kubernetes.io/finalizer kubernetes.io/pv-protection]
StorageClass: isilon
Status: Bound
Claim: service/mysql-pvc
Reclaim Policy: Delete
Access Modes: RWX
Capacity: 5Gi
Node Affinity: <none>
Message:
Source:
Type: NFS (an NFS mount that lasts the lifetime of a pod)
Server: 192.168.22.114
Path: /ifs/app/service-mysql-pvc-pvc-89ecc53b-725c-11ea-a8e2-005056aa2a6d
ReadOnly: false
Events: <none>
修改PVC reclaim policy
#kubectl patch pv pvc-89ecc53b-725c-11ea-a8e2-005056aa2a6d -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'