27.21.4.2. 스냅샷 만들기
PV의 스냅샷을 생성하려면 새 VolumeSnapshot 오브젝트를 생성합니다.
apiVersion: volumesnapshot.external-storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: snapshot-demo
spec:
persistentVolumeClaimName: ebs-pvc
persistentVolumeClaimName 은 a PersistentVolume 에 바인딩된 PersistentVolumeClaim 의 이름입니다. 이 특정 PV는 스냅샷이 생성됩니다.
그런 다음 VolumeSnapshotData 오브젝트가 VolumeSnapshot 에 따라 자동으로 생성됩니다. VolumeSnapshot과 VolumeSnapshot Data 간의 관계는 PersistentVolumeClaim 과 PersistentVolume 간의 관계와 유사합니다.
PV 유형에 따라 작업이 VolumeSnapshot 상태로 반영되는 여러 단계를 수행할 수 있습니다.
-
새
VolumeSnapshot오브젝트가 생성됩니다. -
컨트롤러에서 스냅샷 작업을 시작합니다. snapshotted
PersistentVolume을 사용하려면 애플리케이션이 일시 중지되어야 할 수 있습니다. -
스토리지 시스템은 스냅샷 생성을 완료하고(스냅샷은 "cut") snapshotted
PersistentVolume을 일반 작업으로 돌아갈 수 있습니다. 스냅샷 자체는 아직 준비되지 않았습니다. 마지막 상태 조건은 상태 값이True인Pending유형입니다. 실제 스냅샷을 나타내도록 새VolumeSnapshotData오브젝트가 생성됩니다. -
새로 만든 스냅샷이 완료되어 사용할 준비가 되었습니다. 마지막 상태 조건은 상태 값이
True인Ready유형입니다.
사용자의 책임은 데이터 일관성을 보장합니다(포드/애플리케이션 중지, 캐시 플러시, 파일 시스템 중지 등).
오류가 발생하는 경우 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