This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.14.3. 가상 머신 백업
OADP(OpenShift API for Data Protection) Backup
CR(사용자 정의 리소스)을 생성하여 VM(가상 머신) 을 백업합니다.
Backup
CR은 다음 작업을 수행합니다.
- Multicloud Object Gateway, Noobaa 또는 Minio와 같은 S3 호환 개체 스토리지에 아카이브 파일을 만들어 OpenShift Virtualization 리소스를 백업합니다.
다음 옵션 중 하나를 사용하여 VM 디스크를 백업합니다.
- Ceph RBD 또는 Ceph FS와 같은 CSI(Container Storage Interface) 클라우드 스토리지의 CSI(Container Storage Interface) 스냅샷
- 오브젝트 스토리지의 Restic 파일 시스템 백업.
OADP는 백업 작업 전에 VM 파일 시스템을 정지하고 백업이 완료되면 이를 해제 해제하는 백업 후크를 제공합니다.
kubevirt-controller
는 백업 작업 전후에 Velero가 virt-freezer
바이너리를 실행할 수 있는 주석을 사용하여 virt-launcher
Pod를 생성합니다.
freeze
및 unfreeze
API는 VM 스냅샷 API의 하위 리소스입니다. 자세한 내용은 가상 머신 스냅샷 정보를 참조하십시오.
Backup
CR에 후크를 추가하여 백업 작업 전후에 특정 VM에서 명령을 실행할 수 있습니다.
Backup
CR 대신 Schedule
CR 을 생성하여 백업을 예약합니다.
14.3.1. Backup CR 생성
Backup CR(사용자 정의 리소스)을 생성하여 Kubernetes 이미지, 내부 이미지 및 PV(영구 볼륨)를 백업
합니다.
사전 요구 사항
- OADP(OpenShift API for Data Protection) Operator를 설치해야 합니다.
-
DataProtectionApplication
CR은Ready
상태여야 합니다. 백업 위치 사전 요구 사항:
- Velero용으로 S3 오브젝트 스토리지가 구성되어 있어야 합니다.
-
DataProtectionApplication
CR에 백업 위치가 구성되어 있어야 합니다.
스냅샷 위치 사전 요구 사항:
- 클라우드 공급자에는 기본 스냅샷 API가 있거나 CSI(Container Storage Interface) 스냅샷을 지원해야 합니다.
-
CSI 스냅샷의 경우 CSI 드라이버를 등록하려면
VolumeSnapshotClass
CR을 생성해야 합니다. -
DataProtectionApplication
CR에 구성된 볼륨 위치가 있어야 합니다.
절차
다음 명령을 입력하여
backupStorageLocations
CR을 검색합니다.oc get backupStorageLocations -n openshift-adp
$ oc get backupStorageLocations -n openshift-adp
Copy to Clipboard Copied! 출력 예
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT openshift-adp velero-sample-1 Available 11s 31m
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT openshift-adp velero-sample-1 Available 11s 31m
Copy to Clipboard Copied! 다음 예와 같이
Backup
CR을 생성합니다.apiVersion: velero.io/v1 kind: Backup metadata: name: <backup> labels: velero.io/storage-location: default namespace: openshift-adp spec: hooks: {} includedNamespaces: - <namespace> includedResources: [] excludedResources: [] storageLocation: <velero-sample-1> ttl: 720h0m0s labelSelector: matchLabels: app=<label_1> app=<label_2> app=<label_3> orLabelSelectors: - matchLabels: app=<label_1> app=<label_2> app=<label_3>
apiVersion: velero.io/v1 kind: Backup metadata: name: <backup> labels: velero.io/storage-location: default namespace: openshift-adp spec: hooks: {} includedNamespaces: - <namespace>
1 includedResources: []
2 excludedResources: []
3 storageLocation: <velero-sample-1>
4 ttl: 720h0m0s labelSelector:
5 matchLabels: app=<label_1> app=<label_2> app=<label_3> orLabelSelectors:
6 - matchLabels: app=<label_1> app=<label_2> app=<label_3>
Copy to Clipboard Copied! - 1
- 백업할 네임스페이스의 배열을 지정합니다.
- 2
- 선택 사항: 백업에 포함할 리소스 배열을 지정합니다. 리소스는 바로 가기(예: 'pods'의 경우 'po')이거나 정규화될 수 있습니다. 지정하지 않으면 모든 리소스가 포함됩니다.
- 3
- 선택 사항: 백업에서 제외할 리소스 배열을 지정합니다. 리소스는 바로 가기(예: 'pods'의 경우 'po')이거나 정규화될 수 있습니다.
- 4
backupStorageLocations
CR의 이름을 지정합니다.- 5
- 지정된 라벨이 모두 있는 백업 리소스의 {key,value} 쌍의 맵입니다.
- 6
- 지정된 라벨이 하나 이상 있는 백업 리소스의 {key,value} 쌍의 맵입니다.
Backup
CR의 상태가Completed
인지 확인합니다.oc get backup -n openshift-adp <backup> -o jsonpath='{.status.phase}'
$ oc get backup -n openshift-adp <backup> -o jsonpath='{.status.phase}'
Copy to Clipboard Copied!
14.3.1.1. CSI 스냅샷을 사용하여 영구 볼륨 백업
Backup CR을 생성하기 전에 클라우드 스토리지의 VolumeSnapshotClass
CR(사용자 정의 리소스)을 편집하여 CSI(Container Storage Interface) 스냅샷을 사용하여 영구 볼륨을 백업
합니다.
사전 요구 사항
- 클라우드 공급자는 CSI 스냅샷을 지원해야 합니다.
-
DataProtectionApplication
CR에서 CSI를 활성화해야 합니다.
절차
metadata.labels.velero.io/csi-volumesnapshot-class: "true"
키-값 쌍을VolumeSnapshotClass
CR에 추가합니다.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: <volume_snapshot_class_name> labels: velero.io/csi-volumesnapshot-class: "true" driver: <csi_driver> deletionPolicy: Retain
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: <volume_snapshot_class_name> labels: velero.io/csi-volumesnapshot-class: "true" driver: <csi_driver> deletionPolicy: Retain
Copy to Clipboard Copied!
이제 Backup
CR을 생성할 수 있습니다.
14.3.1.2. Restic을 사용하여 애플리케이션 백업
Restic을 사용하여 Kubernetes 리소스, 내부 이미지 및 영구 볼륨을 백업하여 Backup
CR(사용자 정의 리소스)을 편집합니다.
DataProtectionApplication
CR에서 스냅샷 위치를 지정할 필요가 없습니다.
Restic은 hostPath
볼륨 백업을 지원하지 않습니다. 자세한 내용은 추가 Rustic 제한 사항을 참조하십시오.
사전 요구 사항
- OADP(OpenShift API for Data Protection) Operator를 설치해야 합니다.
-
DataProtectionApplication
CR에서spec.configuration.restic.enable
을false
로 설정하여 기본 Restic 설치를 비활성화할 수 없습니다. -
DataProtectionApplication
CR은Ready
상태여야 합니다.
절차
다음 예와 같이
Backup
CR을 편집합니다.apiVersion: velero.io/v1 kind: Backup metadata: name: <backup> labels: velero.io/storage-location: default namespace: openshift-adp spec: defaultVolumesToFsBackup: true ...
apiVersion: velero.io/v1 kind: Backup metadata: name: <backup> labels: velero.io/storage-location: default namespace: openshift-adp spec: defaultVolumesToFsBackup: true
1 ...
Copy to Clipboard Copied! - 1
- OADP 버전 1.2 이상에서
spec
블록 내에defaultVolumesToFsBackup: true
설정을 추가합니다. OADP 버전 1.1에서defaultVolumesToRestic: true
를 추가합니다.
14.3.1.3. 백업 후크 생성
Backup CR(사용자 정의 리소스)을 편집하여 Pod의 컨테이너에서 명령을 실행하는 백업
후크를 생성합니다.
포드를 백업하기 전에 사전 후크가 실행됩니다. 백업 후 후크가 실행됩니다.
절차
다음 예와 같이
Backup
CR의spec.hooks
블록에 후크를 추가합니다.apiVersion: velero.io/v1 kind: Backup metadata: name: <backup> namespace: openshift-adp spec: hooks: resources: - name: <hook_name> includedNamespaces: - <namespace> excludedNamespaces: - <namespace> includedResources: [] - pods excludedResources: [] labelSelector: matchLabels: app: velero component: server pre: - exec: container: <container> command: - /bin/uname - -a onError: Fail timeout: 30s post: ...
apiVersion: velero.io/v1 kind: Backup metadata: name: <backup> namespace: openshift-adp spec: hooks: resources: - name: <hook_name> includedNamespaces: - <namespace>
1 excludedNamespaces:
2 - <namespace> includedResources: [] - pods
3 excludedResources: []
4 labelSelector:
5 matchLabels: app: velero component: server pre:
6 - exec: container: <container>
7 command: - /bin/uname
8 - -a onError: Fail
9 timeout: 30s
10 post:
11 ...
Copy to Clipboard Copied! - 1
- 선택 사항: 후크가 적용되는 네임스페이스를 지정할 수 있습니다. 이 값을 지정하지 않으면 후크가 모든 네임스페이스에 적용됩니다.
- 2
- 선택 사항: 후크가 적용되지 않는 네임스페이스를 지정할 수 있습니다.
- 3
- 현재 Pod는 후크를 적용할 수 있는 유일한 지원 리소스입니다.
- 4
- 선택 사항: 후크가 적용되지 않는 리소스를 지정할 수 있습니다.
- 5
- 선택 사항: 이 후크는 레이블과 일치하는 오브젝트에만 적용됩니다. 이 값을 지정하지 않으면 후크가 모든 네임스페이스에 적용됩니다.
- 6
- 백업 전에 실행할 후크 배열입니다.
- 7
- 선택 사항: 컨테이너를 지정하지 않으면 Pod의 첫 번째 컨테이너에서 명령이 실행됩니다.
- 8
- 이는 추가되는 init 컨테이너의 진입점입니다.
- 9
- 오류 처리에 허용되는 값은
Fail
및Continue
입니다. 기본값은Fail
입니다. - 10
- 선택 사항: 명령이 실행될 때까지 대기하는 시간입니다. 기본값은
30s
입니다. - 11
- 이 블록은 백업 후 실행할 후크 배열과 pre-backup 후크와 동일한 매개변수를 정의합니다.
14.3.2. 백업 예약
Backup
CR 대신 Schedule
CR(사용자 정의 리소스)을 생성하여 백업을 예약합니다.
다른 백업이 생성되기 전에 백업이 완료될 수 있도록 백업 일정에 충분한 시간을 남겨 둡니다.
예를 들어 네임스페이스의 백업이 일반적으로 10분 정도 걸리는 경우 15분마다 백업을 더 자주 예약하지 마십시오.
사전 요구 사항
- OADP(OpenShift API for Data Protection) Operator를 설치해야 합니다.
-
DataProtectionApplication
CR은Ready
상태여야 합니다.
절차
backupStorageLocations
CR을 검색합니다.oc get backupStorageLocations -n openshift-adp
$ oc get backupStorageLocations -n openshift-adp
Copy to Clipboard Copied! 출력 예
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT openshift-adp velero-sample-1 Available 11s 31m
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT openshift-adp velero-sample-1 Available 11s 31m
Copy to Clipboard Copied! 다음 예와 같이
Schedule
CR을 생성합니다.cat << EOF | oc apply -f - apiVersion: velero.io/v1 kind: Schedule metadata: name: <schedule> namespace: openshift-adp spec: schedule: 0 7 * * * template: hooks: {} includedNamespaces: - <namespace> storageLocation: <velero-sample-1> defaultVolumesToFsBackup: true ttl: 720h0m0s EOF
$ cat << EOF | oc apply -f - apiVersion: velero.io/v1 kind: Schedule metadata: name: <schedule> namespace: openshift-adp spec: schedule: 0 7 * * *
1 template: hooks: {} includedNamespaces: - <namespace>
2 storageLocation: <velero-sample-1>
3 defaultVolumesToFsBackup: true
4 ttl: 720h0m0s EOF
Copy to Clipboard Copied! - 1
- 백업을 예약하는 Cron 표현식(예:
0 7 * * *
)은 7:00에 매일 백업을 수행합니다. - 2
- 백업할 네임스페이스의 배열입니다.
- 3
backupStorageLocations
CR의 이름입니다.- 4
- 선택 사항: OADP 버전 1.2 이상에서 Restic을 사용하여 볼륨 백업을 수행할 때
defaultVolumesToFsBackup: true
key-value 쌍을 구성에 추가합니다. OADP 버전 1.1에서 Restic을 사용하여 볼륨을 백업할 때defaultVolumesToRestic: true
key-value 쌍을 추가합니다.
예약된 백업이 실행된 후
Schedule
CR의 상태가Completed
인지 확인합니다.oc get schedule -n openshift-adp <schedule> -o jsonpath='{.status.phase}'
$ oc get schedule -n openshift-adp <schedule> -o jsonpath='{.status.phase}'
Copy to Clipboard Copied!