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