27.21.4.2. 创建快照
要生成 PV 的快照,请创建一个新的 VolumeSnapshot 对象:
apiVersion: volumesnapshot.external-storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: snapshot-demo
spec:
persistentVolumeClaimName: ebs-pvc
persistentVolumeClaimName 是绑定到 PersistentVolume 的 PersistentVolumeClaim 的名称。已为此特定 PV 创建了快照。
然后会根据 VolumeSnapshot 自动创建 VolumeSnapshotData 对象。VolumeSnapshot 和 VolumeSnapshotData 之间的关系与 PersistentVolumeClaim 和 PersistentVolume 之间的关系类似。
根据 PV 类型,操作可能会经历几个阶段,由 VolumeSnapshot 状态来反映:
-
新的
VolumeSnapshot对象已创建。 -
控制器启动快照操作。可能需要冻结快照的
PersistentVolume,并暂停应用程序。 -
存储系统完成创建快照(快照为"cut"),且快照的
PersistentVolume可能会返回正常操作。快照本身尚未就绪。最后的状态条件是Pending类型,状态为True。创建一个新的VolumeSnapshotData对象来代表实际快照。 -
新创建的快照已完成并可使用。最后的状态条件是
Ready类型,状态为True。
重要
用户负责确保数据一致性(停止 Pod/应用程序,清除缓存,以及冻结文件系统等)。
注意
如果出现错误,VolumeSnapshot 状态会附加一个 Error 条件。
显示 VolumeSnapshot 状态:
$ oc get volumesnapshot -o yaml
此时会显示状态。
apiVersion: volumesnapshot.external-storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
clusterName: ""
creationTimestamp: 2017-09-19T13:58:28Z
generation: 0
labels:
Timestamp: "1505829508178510973"
name: snapshot-demo
namespace: default
resourceVersion: "780"
selfLink: /apis/volumesnapshot.external-storage.k8s.io/v1/namespaces/default/volumesnapshots/snapshot-demo
uid: 9cc5da57-9d42-11e7-9b25-90b11c132b3f
spec:
persistentVolumeClaimName: ebs-pvc
snapshotDataName: k8s-volume-snapshot-9cc8813e-9d42-11e7-8bed-90b11c132b3f
status:
conditions:
- lastTransitionTime: null
message: Snapshot created successfully
reason: ""
status: "True"
type: Ready
creationTimestamp: null