5.3.5. 创建卷快照
当您创建 VolumeSnapshot
对象时,OpenShift Container Platform 会创建一个卷快照。
先决条件
- 登陆到一个正在运行的 OpenShift Container Platform 集群。
-
使用支持
VolumeSnapshot
对象的 CSI 驱动程序创建的 PVC。 - 用于置备存储后端的存储类。
您要对其进行快照的 PVC 没有被任何 pod 使用。
注意如果 pod 正在使用,则不要为 PVC 创建卷快照。这样做可能会导致数据崩溃,因为 PVC 没有被静默(暂停)。确保首先停止正在运行的 pod,以确保快照的一致性。
流程
动态创建卷快照:
使用以下 YAML 描述的
VolumeSnapshotClass
对象创建一个文件:volumesnapshotclass.yaml
apiVersion: snapshot.storage.k8s.io kind: VolumeSnapshotClass 1 metadata: name: csi-hostpath-snap driver: hostpath.csi.k8s.io deletionPolicy: Delete
- 1
- 允许您指定属于卷快照的不同属性。
运行以下命令,创建上一步中保存的对象:
$ oc create -f volumesnapshotclass.yaml
创建
VolumeSnapshot
对象:volumesnapshot-dynamic.yaml
apiVersion: snapshot.storage.k8s.io kind: VolumeSnapshot metadata: name: mysnap spec: volumeSnapshotClassName: csi-hostpath-snap 1 source: persistentVolumeClaimName: myclaim 2
运行以下命令,创建上一步中保存的对象:
$ oc create -f volumesnapshot-dynamic.yaml
手动置备快照:
除了以上定义卷快照类外,还需要提供
volumeSnapshotContentName
参数的值作为快照的源。volumesnapshot-manual.yaml
apiVersion: snapshot.storage.k8s.io kind: VolumeSnapshot metadata: name: snapshot-demo spec: source: volumeSnapshotContentName: mycontent 1
- 1
- 预置备快照需要
volumeSnapshotContentName
参数。
运行以下命令,创建上一步中保存的对象:
$ oc create -f volumesnapshot-manual.yaml
验证
在集群中创建快照后,会提供有关快照的详情。
运行以下命令显示所创建的卷快照详情:
$ oc describe volumesnapshot mysnap
以下示例显示有关
mysnap
卷快照的详细信息:volumesnapshot.yaml
apiVersion: snapshot.storage.k8s.io kind: VolumeSnapshot metadata: name: mysnap spec: source: persistentVolumeClaimName: myclaim volumeSnapshotClassName: csi-hostpath-snap status: boundVolumeSnapshotContentName: snapcontent-1af4989e-a365-4286-96f8-d5dcd65d78d6 1 creationTime: "2020-01-29T12:24:30Z" 2 readyToUse: true 3 restoreSize: 500Mi
要验证卷快照是否已创建,请运行以下命令:
$ oc get volumesnapshotcontent
显示指向实际内容的指针。如果
boundVolumeSnapshotContentName
字段已被填充,则代表一个VolumeSnapshotContent
对象已存在,快照被创建。-
要验证快照是否已就绪,请确认
VolumeSnapshot
带有readyToUse: true
。