9.7. OADP를 사용하여 호스트된 클러스터에 대한 재해 복구
OADP(OpenShift API for Data Protection) Operator를 사용하여 AWS(Amazon Web Services) 및 베어 메탈에서 재해 복구를 수행할 수 있습니다.
OADP(OpenShift API for Data Protection)의 재해 복구 프로세스에는 다음 단계가 포함됩니다.
- OADP를 사용하도록 Amazon Web Services 또는 베어 메탈과 같은 플랫폼 준비
- 데이터 플레인 워크로드 백업
- 컨트롤 플레인 워크로드 백업
- OADP를 사용하여 호스트 클러스터 복원
9.7.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
관리 클러스터에서 다음 사전 요구 사항을 충족해야 합니다.
- OADP Operator를 설치했습니다 .
- 스토리지 클래스를 생성하셨습니다.
-
cluster-admin
권한이 있는 클러스터에 액세스할 수 있습니다. - 카탈로그 소스를 통해 OADP 서브스크립션에 액세스할 수 있습니다.
- S3, Microsoft Azure, Google Cloud Platform 또는 MinIO와 같은 OADP와 호환되는 클라우드 스토리지 공급자에 액세스할 수 있습니다.
- 연결이 끊긴 환경에서는 OADP와 호환되는 Red Hat OpenShift Data Foundation 이나 MinIO 와 같은 셀프 호스팅 스토리지 공급자에 액세스할 수 있습니다.
- 호스팅된 컨트롤 플레인 pod가 실행 중입니다.
9.7.2. OADP를 사용하도록 AWS 준비 링크 복사링크가 클립보드에 복사되었습니다!
호스트된 클러스터에 대한 재해 복구를 수행하려면 AWS(Amazon Web Services) S3 호환 스토리지에서 OADP(OpenShift API for Data Protection)를 사용할 수 있습니다. DataProtectionApplication
오브젝트를 생성하면 openshift-adp
네임스페이스에 새 velero
배포 및 node-agent
Pod가 생성됩니다.
OADP를 사용하도록 AWS를 준비하려면 "Multicloud Object Gateway로 데이터 보호를 위한 OpenShift API 구성"을 참조하십시오.
다음 단계
- 데이터 플레인 워크로드 백업
- 컨트롤 플레인 워크로드 백업
9.7.3. OADP를 사용하도록 베어 메탈 준비 링크 복사링크가 클립보드에 복사되었습니다!
호스트된 클러스터에 대한 재해 복구를 수행하려면 베어 메탈에서 OADP(OpenShift API for Data Protection)를 사용할 수 있습니다. DataProtectionApplication
오브젝트를 생성하면 openshift-adp
네임스페이스에 새 velero
배포 및 node-agent
Pod가 생성됩니다.
OADP를 사용하도록 베어 메탈을 준비하려면 "AWS S3 호환 스토리지로 데이터 보호를 위한 OpenShift API 구성"을 참조하십시오.
다음 단계
- 데이터 플레인 워크로드 백업
- 컨트롤 플레인 워크로드 백업
9.7.4. 데이터 플레인 워크로드 백업 링크 복사링크가 클립보드에 복사되었습니다!
데이터 플레인 워크로드가 중요하지 않은 경우 이 절차를 건너뛸 수 있습니다. OADP Operator를 사용하여 데이터 플레인 워크로드를 백업하려면 "애플리케이션 백업"을 참조하십시오.
다음 단계
- OADP를 사용하여 호스트 클러스터 복원
9.7.5. 컨트롤 플레인 워크로드 백업 링크 복사링크가 클립보드에 복사되었습니다!
Backup
CR(사용자 정의 리소스)을 생성하여 컨트롤 플레인 워크로드를 백업할 수 있습니다. 단계는 플랫폼이 AWS인지 베어메탈인지에 따라 다릅니다.
9.7.5.1. AWS에서 제어 평면 워크로드 백업 링크 복사링크가 클립보드에 복사되었습니다!
Backup
CR(사용자 정의 리소스)을 생성하여 컨트롤 플레인 워크로드를 백업할 수 있습니다.
백업 프로세스를 모니터링하고 관찰하려면 "백업 및 복원 프로세스 예약"을 참조하십시오.
프로세스
다음 명령을 실행하여
HostedCluster
리소스의 조정을 일시 중지합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ patch hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "true"}]'
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "true"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 호스팅된 클러스터의 인프라 ID를 가져옵니다.
oc get hostedcluster -n local-cluster <hosted_cluster_name> -o=jsonpath="{.spec.infraID}"
$ oc get hostedcluster -n local-cluster <hosted_cluster_name> -o=jsonpath="{.spec.infraID}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 단계에서 사용할 인프라 ID를 기록해 두세요.
다음 명령을 실행하여
cluster.cluster.x-k8s.io
리소스의 조정을 일시 중지합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ patch cluster.cluster.x-k8s.io \ -n local-cluster-<hosted_cluster_name> <hosted_cluster_infra_id> \ --type json -p '[{"op": "add", "path": "/spec/paused", "value": true}]'
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch cluster.cluster.x-k8s.io \ -n local-cluster-<hosted_cluster_name> <hosted_cluster_infra_id> \ --type json -p '[{"op": "add", "path": "/spec/paused", "value": true}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
NodePool
리소스의 조정을 일시 중지합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ patch nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "true"}]'
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "true"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
AgentCluster
리소스의 조정을 일시 중지합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentcluster -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused=true --all'
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentcluster -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused=true --all'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
AgentMachine
리소스의 조정을 일시 중지합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentmachine -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused=true --all'
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentmachine -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused=true --all'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 호스팅된 제어 평면 네임스페이스가 삭제되지 않도록
HostedCluster
리소스에 주석을 추가합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ hypershift.openshift.io/skip-delete-hosted-controlplane-namespace=true
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ hypershift.openshift.io/skip-delete-hosted-controlplane-namespace=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Backup
CR을 정의하는 YAML 파일을 생성합니다.예 9.1.
backup-control-plane.yaml
파일 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
backup_resource_name
을Backup
리소스의 이름으로 교체합니다.- 2
- 특정 네임스페이스를 선택하여 오브젝트를 백업합니다. 호스팅 클러스터 네임스페이스와 호스팅된 컨트롤 플레인 네임스페이스를 포함해야 합니다.
- 3
<hosted_cluster_namespace>
를 호스트된 클러스터 네임스페이스의 이름으로 바꿉니다(예:클러스터
).- 4
<hosted_control_plane_namespace>
를 호스트된 컨트롤 플레인 네임스페이스의 이름으로 바꿉니다(예:클러스터 호스팅
).- 5
- 별도의 네임스페이스에
infraenv
리소스를 생성해야 합니다. 백업 프로세스 중에infraenv
리소스를 삭제하지 마십시오. - 6 7
- CSI 볼륨 스냅샷을 활성화하고 컨트롤 플레인 워크로드를 클라우드 스토리지에 자동으로 업로드합니다.
- 8
- PV(영구 볼륨)의
fs-backup
방법을 기본값으로 설정합니다. 이 설정은 CSI(Container Storage Interface) 볼륨 스냅샷과fs-backup
방법을 조합할 때 유용합니다.
참고CSI 볼륨 스냅샷을 사용하려면
backup.velero.io/backup-volumes-excludes=<pv_name>
주석을 PV에 추가해야 합니다.다음 명령을 실행하여
Backup
CR을 적용합니다.oc apply -f backup-control-plane.yaml
$ oc apply -f backup-control-plane.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 실행하여
status.phase
의 값이완료
되었는지 확인합니다.oc get backups.velero.io <backup_resource_name> -n openshift-adp \ -o jsonpath='{.status.phase}'
$ oc get backups.velero.io <backup_resource_name> -n openshift-adp \ -o jsonpath='{.status.phase}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 단계
- OADP를 사용하여 호스트 클러스터 복원
9.7.5.2. 베어 메탈 플랫폼에서 제어 평면 작업 부하 백업 링크 복사링크가 클립보드에 복사되었습니다!
Backup
CR(사용자 정의 리소스)을 생성하여 컨트롤 플레인 워크로드를 백업할 수 있습니다.
백업 프로세스를 모니터링하고 관찰하려면 "백업 및 복원 프로세스 예약"을 참조하십시오.
프로세스
다음 명령을 실행하여
HostedCluster
리소스의 조정을 일시 중지합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ patch hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "true"}]'
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "true"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 호스팅된 클러스터의 인프라 ID를 가져옵니다.
oc --kubeconfig <management_cluster_kubeconfig_file> \ get hostedcluster -n <hosted_cluster_namespace> \ <hosted_cluster_name> -o=jsonpath="{.spec.infraID}"
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ get hostedcluster -n <hosted_cluster_namespace> \ <hosted_cluster_name> -o=jsonpath="{.spec.infraID}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 단계에서 사용할 인프라 ID를 기록해 두세요.
다음 명령을 실행하여
cluster.cluster.x-k8s.io
리소스의 조정을 일시 중지합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate cluster -n <hosted_control_plane_namespace> \ <hosted_cluster_infra_id> cluster.x-k8s.io/paused=true
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate cluster -n <hosted_control_plane_namespace> \ <hosted_cluster_infra_id> cluster.x-k8s.io/paused=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
NodePool
리소스의 조정을 일시 중지합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ patch nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "true"}]'
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --type json -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "true"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
AgentCluster
리소스의 조정을 일시 중지합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentcluster -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused=true --all
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentcluster -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused=true --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
AgentMachine
리소스의 조정을 일시 중지합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentmachine -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused=true --all
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentmachine -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused=true --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 동일한 관리 클러스터에 백업하고 복원하는 경우 다음 명령을 실행하여 호스팅된 제어 평면 네임스페이스가 삭제되지 않도록
HostedCluster
리소스에 주석을 추가합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ hypershift.openshift.io/skip-delete-hosted-controlplane-namespace=true
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ hypershift.openshift.io/skip-delete-hosted-controlplane-namespace=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Backup
CR을 정의하는 YAML 파일을 생성합니다.예 9.2.
backup-control-plane.yaml
파일 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
backup_resource_name
을Backup
리소스의 이름으로 교체합니다.- 2
- 특정 네임스페이스를 선택하여 오브젝트를 백업합니다. 호스팅 클러스터 네임스페이스와 호스팅된 컨트롤 플레인 네임스페이스를 포함해야 합니다.
- 3
<hosted_cluster_namespace>
를 호스트된 클러스터 네임스페이스의 이름으로 바꿉니다(예:클러스터
).- 4
<hosted_control_plane_namespace>
를 호스트된 컨트롤 플레인 네임스페이스의 이름으로 바꿉니다(예:클러스터 호스팅
).- 5
<agent_namespace>를
Agent
,BMH
,InfraEnv
CR이 있는 네임스페이스(예:agents )
로 바꾸세요.- 6 7
- CSI 볼륨 스냅샷을 활성화하고 컨트롤 플레인 워크로드를 클라우드 스토리지에 자동으로 업로드합니다.
- 8
- PV(영구 볼륨)의
fs-backup
방법을 기본값으로 설정합니다. 이 설정은 CSI(Container Storage Interface) 볼륨 스냅샷과fs-backup
방법을 조합할 때 유용합니다.
참고CSI 볼륨 스냅샷을 사용하려면
backup.velero.io/backup-volumes-excludes=<pv_name>
주석을 PV에 추가해야 합니다.다음 명령을 실행하여
Backup
CR을 적용합니다.oc apply -f backup-control-plane.yaml
$ oc apply -f backup-control-plane.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 실행하여
status.phase
의 값이완료
되었는지 확인합니다.oc get backups.velero.io <backup_resource_name> -n openshift-adp \ -o jsonpath='{.status.phase}'
$ oc get backups.velero.io <backup_resource_name> -n openshift-adp \ -o jsonpath='{.status.phase}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 단계
- OADP를 사용하여 호스팅된 클러스터를 복원합니다.
9.7.6. OADP를 사용하여 호스트 클러스터 복원 링크 복사링크가 클립보드에 복사되었습니다!
호스팅된 클러스터를 동일한 관리 클러스터나 새로운 관리 클러스터로 복원할 수 있습니다.
9.7.6.1. OADP를 사용하여 호스팅된 클러스터를 동일한 관리 클러스터로 복원 링크 복사링크가 클립보드에 복사되었습니다!
Restore
CR(사용자 정의 리소스)을 생성하여 호스팅된 클러스터를 복원할 수 있습니다.
- 인플레이스 업데이트를 사용하는 경우 InfraEnv에는 예비 노드가 필요하지 않습니다. 새 관리 클러스터에서 작업자 노드를 다시 프로비저닝해야 합니다.
- 교체 업데이트를 사용하는 경우 작업자 노드를 배포하려면 InfraEnv에 대한 예비 노드가 필요합니다.
호스트 클러스터를 백업한 후 이를 삭제하여 복원 프로세스를 시작해야 합니다. 노드 프로비저닝을 시작하려면 호스팅 클러스터를 삭제하기 전에 데이터 플레인의 워크로드를 백업해야 합니다.
사전 요구 사항
- 콘솔을 사용하여 호스팅된 클러스터를 삭제하여 클러스터 제거 단계를 완료했습니다.
- 클러스터를 제거한 후 남아 있는 리소스 제거 의 단계를 완료했습니다.
백업 프로세스를 모니터링하고 관찰하려면 "백업 및 복원 프로세스 예약"을 참조하십시오.
프로세스
다음 명령을 실행하여 호스팅된 컨트롤 플레인 네임스페이스에 Pod 및 PVC(영구 볼륨 클레임)가 없는지 확인합니다.
oc get pod pvc -n <hosted_control_plane_namespace>
$ oc get pod pvc -n <hosted_control_plane_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예상 출력
No resources found
No resources found
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Restore
CR을 정의하는 YAML 파일을 생성합니다.restore-hosted-cluster.yaml
파일의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요별도의 네임스페이스에
infraenv
리소스를 생성해야 합니다. 복원 프로세스 중에infraenv
리소스를 삭제하지 마십시오. 새 노드를 다시 프로비저닝하려면infraenv
리소스가 필요합니다.다음 명령을 실행하여
Restore
CR을 적용합니다.oc apply -f restore-hosted-cluster.yaml
$ oc apply -f restore-hosted-cluster.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
status.phase
의 값이완료
되었는지 확인합니다.oc get hostedcluster <hosted_cluster_name> -n <hosted_cluster_namespace> \ -o jsonpath='{.status.phase}'
$ oc get hostedcluster <hosted_cluster_name> -n <hosted_cluster_namespace> \ -o jsonpath='{.status.phase}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 복원 프로세스가 완료되면 컨트롤 플레인 워크로드를 백업하는 동안 일시 중지된
HostedCluster
및NodePool
리소스의 조정을 시작합니다.다음 명령을 실행하여
HostedCluster
리소스의 조정을 시작합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ patch hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ --type json \ -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "false"}]'
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ --type json \ -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "false"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
NodePool
리소스의 조정을 시작합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ patch nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --type json \ -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "false"}]'
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ patch nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --type json \ -p '[{"op": "add", "path": "/spec/pausedUntil", "value": "false"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
제어 평면 작업 부하를 백업하는 동안 일시 중지한 에이전트 공급자 리소스의 조정을 시작합니다.
다음 명령을 실행하여
AgentCluster
리소스의 조정을 시작합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentcluster -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused- --overwrite=true --all
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentcluster -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused- --overwrite=true --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
AgentMachine
리소스의 조정을 시작합니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentmachine -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused- --overwrite=true --all
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate agentmachine -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused- --overwrite=true --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여
HostedCluster
리소스에서hypershift.openshift.io/skip-delete-hosted-controlplane-namespace-
주석을 제거하면 호스팅된 제어 평면 네임스페이스를 수동으로 삭제하지 않아도 됩니다.oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ hypershift.openshift.io/skip-delete-hosted-controlplane-namespace- \ --overwrite=true --all
$ oc --kubeconfig <management_cluster_kubeconfig_file> \ annotate hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ hypershift.openshift.io/skip-delete-hosted-controlplane-namespace- \ --overwrite=true --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.7.6.2. OADP를 사용하여 호스팅된 클러스터를 새 관리 클러스터로 복원 링크 복사링크가 클립보드에 복사되었습니다!
복원
사용자 정의 리소스(CR)를 생성하여 호스팅된 클러스터를 새 관리 클러스터로 복원할 수 있습니다.
-
기존 업데이트를 사용하는 경우
InfraEnv
리소스에 예비 노드가 필요하지 않습니다. 대신, 새로운 관리 클러스터에서 작업자 노드를 다시 프로비저닝해야 합니다. -
교체 업데이트를 사용하는 경우 작업자 노드를 배포하기 위해
InfraEnv
리소스에 대한 예비 노드가 필요합니다.
사전 요구 사항
-
OADP(OpenShift API for Data Protection)를 사용하도록 새 관리 클러스터를 구성했습니다.
복원
CR이 백업 저장소에 액세스할 수 있도록 새 관리 클러스터에는 백업한 관리 클러스터와 동일한 DPA(데이터 보호 애플리케이션)가 있어야 합니다. 호스팅된 클러스터의 DNS를 확인하기 위해 새 관리 클러스터의 네트워킹 설정을 구성했습니다.
- 호스트의 DNS는 새 관리 클러스터와 호스팅된 클러스터의 IP로 확인되어야 합니다.
- 호스팅된 클러스터는 새 관리 클러스터의 IP로 확인되어야 합니다.
백업 프로세스를 모니터링하고 관찰하려면 "백업 및 복원 프로세스 예약"을 참조하십시오.
백업을 만든 관리 클러스터가 아닌, 호스팅된 클러스터를 복원할 새 관리 클러스터에서 다음 단계를 완료하세요.
프로세스
Restore
CR을 정의하는 YAML 파일을 생성합니다.restore-hosted-cluster.yaml
파일의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<restore_resource_name>
을Restore
리소스의 이름으로 바꿉니다.- 2
- 특정 네임스페이스를 선택하여 오브젝트를 백업합니다. 호스팅 클러스터 네임스페이스와 호스팅된 컨트롤 플레인 네임스페이스를 포함해야 합니다.
- 3
<hosted_cluster_namespace>
를 호스트된 클러스터 네임스페이스의 이름으로 바꿉니다(예:클러스터
).- 4
<hosted_control_plane_namespace>
를 호스트된 컨트롤 플레인 네임스페이스의 이름으로 바꿉니다(예:클러스터 호스팅
).- 5
<agent_namespace>를
Agent
,BMH
,InfraEnv
CR이 있는 네임스페이스(예:agents )
로 바꾸세요.- 6
<backup_resource_name>
을Backup
리소스의 이름으로 바꿉니다.- 7
- Red Hat Advanced Cluster Management를 사용하지 않는 경우 이 필드를 생략할 수 있습니다.
- 8
- PV(영구 볼륨) 및 해당 Pod의 복구를 시작합니다.
- 9
- 백업된 콘텐츠를 사용하여 기존 오브젝트를 덮어쓰는지 확인합니다.
다음 명령을 실행하여
Restore
CR을 적용합니다.oc --kubeconfig <restore_management_kubeconfig> apply -f restore-hosted-cluster.yaml
$ oc --kubeconfig <restore_management_kubeconfig> apply -f restore-hosted-cluster.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
status.phase
값이완료되었는지
확인하세요.oc --kubeconfig <restore_management_kubeconfig> \ get restore.velero.io <restore_resource_name> \ -n openshift-adp -o jsonpath='{.status.phase}'
$ oc --kubeconfig <restore_management_kubeconfig> \ get restore.velero.io <restore_resource_name> \ -n openshift-adp -o jsonpath='{.status.phase}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 모든 CR이 복원되었는지 확인하세요.
oc --kubeconfig <restore_management_kubeconfig> get infraenv -n <agent_namespace>
$ oc --kubeconfig <restore_management_kubeconfig> get infraenv -n <agent_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc --kubeconfig <restore_management_kubeconfig> get agent -n <agent_namespace>
$ oc --kubeconfig <restore_management_kubeconfig> get agent -n <agent_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc --kubeconfig <restore_management_kubeconfig> get bmh -n <agent_namespace>
$ oc --kubeconfig <restore_management_kubeconfig> get bmh -n <agent_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc --kubeconfig <restore_management_kubeconfig> get hostedcluster -n <hosted_cluster_namespace>
$ oc --kubeconfig <restore_management_kubeconfig> get hostedcluster -n <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc --kubeconfig <restore_management_kubeconfig> get nodepool -n <hosted_cluster_namespace>
$ oc --kubeconfig <restore_management_kubeconfig> get nodepool -n <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc --kubeconfig <restore_management_kubeconfig> get agentmachine -n <hosted_controlplane_namespace>
$ oc --kubeconfig <restore_management_kubeconfig> get agentmachine -n <hosted_controlplane_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc --kubeconfig <restore_management_kubeconfig> get agentcluster -n <hosted_controlplane_namespace>
$ oc --kubeconfig <restore_management_kubeconfig> get agentcluster -n <hosted_controlplane_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 앞으로 새로운 관리 클러스터를 기본 관리 클러스터로 사용할 계획이라면 다음 단계를 완료하세요. 그렇지 않은 경우, 백업한 관리 클러스터를 기본 관리 클러스터로 사용하려는 경우 "OADP를 사용하여 호스팅된 클러스터를 동일한 관리 클러스터로 복원"의 5~8단계를 완료합니다.
다음 명령을 실행하여 백업한 관리 클러스터에서 클러스터 API 배포를 제거합니다.
oc --kubeconfig <backup_management_kubeconfig> delete deploy cluster-api \ -n <hosted_control_plane_namespace>
$ oc --kubeconfig <backup_management_kubeconfig> delete deploy cluster-api \ -n <hosted_control_plane_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 한 번에 하나의 클러스터 API만 클러스터에 액세스할 수 있으므로 이 단계에서는 새 관리 클러스터에 대한 클러스터 API가 올바르게 작동하는지 확인합니다.
복원 프로세스가 완료되면 컨트롤 플레인 워크로드를 백업하는 동안 일시 중지된
HostedCluster
및NodePool
리소스의 조정을 시작합니다.다음 명령을 실행하여
HostedCluster
리소스의 조정을 시작합니다.oc --kubeconfig <restore_management_kubeconfig> \ patch hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ --type json \ -p '[{"op": "replace", "path": "/spec/pausedUntil", "value": "false"}]'
$ oc --kubeconfig <restore_management_kubeconfig> \ patch hostedcluster -n <hosted_cluster_namespace> <hosted_cluster_name> \ --type json \ -p '[{"op": "replace", "path": "/spec/pausedUntil", "value": "false"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
NodePool
리소스의 조정을 시작합니다.oc --kubeconfig <restore_management_kubeconfig> \ patch nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --type json \ -p '[{"op": "replace", "path": "/spec/pausedUntil", "value": "false"}]'
$ oc --kubeconfig <restore_management_kubeconfig> \ patch nodepool -n <hosted_cluster_namespace> <node_pool_name> \ --type json \ -p '[{"op": "replace", "path": "/spec/pausedUntil", "value": "false"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 호스팅된 클러스터가 호스팅된 제어 평면을 사용할 수 있다고 보고하는지 확인하세요.
oc --kubeconfig <restore_management_kubeconfig> get hostedcluster
$ oc --kubeconfig <restore_management_kubeconfig> get hostedcluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 호스팅된 클러스터가 클러스터 운영자를 사용할 수 있다고 보고하는지 확인하세요.
oc get co --kubeconfig <hosted_cluster_kubeconfig>
$ oc get co --kubeconfig <hosted_cluster_kubeconfig>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
제어 평면 작업 부하를 백업하는 동안 일시 중지한 에이전트 공급자 리소스의 조정을 시작합니다.
다음 명령을 실행하여
AgentCluster
리소스의 조정을 시작합니다.oc --kubeconfig <restore_management_kubeconfig> \ annotate agentcluster -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused- --overwrite=true --all
$ oc --kubeconfig <restore_management_kubeconfig> \ annotate agentcluster -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused- --overwrite=true --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
AgentMachine
리소스의 조정을 시작합니다.oc --kubeconfig <restore_management_kubeconfig> \ annotate agentmachine -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused- --overwrite=true --all
$ oc --kubeconfig <restore_management_kubeconfig> \ annotate agentmachine -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused- --overwrite=true --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
클러스터
리소스 조정을 시작합니다.oc --kubeconfig <restore_management_kubeconfig> \ annotate cluster -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused- --overwrite=true --all
$ oc --kubeconfig <restore_management_kubeconfig> \ annotate cluster -n <hosted_control_plane_namespace> \ cluster.x-k8s.io/paused- --overwrite=true --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여 노드 풀이 예상대로 작동하는지 확인하세요.
oc --kubeconfig <restore_management_kubeconfig> \ get nodepool -n <hosted_cluster_namespace>
$ oc --kubeconfig <restore_management_kubeconfig> \ get nodepool -n <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE hosted-0 hosted-0 3 3 False False 4.17.11 False False
NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE hosted-0 hosted-0 3 3 False False 4.17.11 False False
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 충돌이 발생하지 않고 새 관리 클러스터가 계속 작동하도록 하려면 다음 단계를 완료하여 백업 관리 클러스터에서
HostedCluster
리소스를 제거합니다.백업한 관리 클러스터의
ClusterDeployment
리소스에서 다음 명령을 실행하여spec.preserveOnDelete
매개변수를true
로 설정합니다.oc --kubeconfig <backup_management_kubeconfig> patch \ -n <hosted_control_plane_namespace> \ ClusterDeployment/<hosted_cluster_name> -p \ '{"spec":{"preserveOnDelete":'true'}}' \ --type=merge
$ oc --kubeconfig <backup_management_kubeconfig> patch \ -n <hosted_control_plane_namespace> \ ClusterDeployment/<hosted_cluster_name> -p \ '{"spec":{"preserveOnDelete":'true'}}' \ --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 단계에서는 호스트의 프로비저닝이 해제되지 않도록 보장합니다.
다음 명령을 실행하여 머신을 삭제합니다.
oc --kubeconfig <backup_management_kubeconfig> patch \ <machine_name> -n <hosted_control_plane_namespace> -p \ '[{"op":"remove","path":"/metadata/finalizers"}]' \ --type=merge
$ oc --kubeconfig <backup_management_kubeconfig> patch \ <machine_name> -n <hosted_control_plane_namespace> -p \ '[{"op":"remove","path":"/metadata/finalizers"}]' \ --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc --kubeconfig <backup_management_kubeconfig> \ delete machine <machine_name> \ -n <hosted_control_plane_namespace>
$ oc --kubeconfig <backup_management_kubeconfig> \ delete machine <machine_name> \ -n <hosted_control_plane_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
AgentCluster
및Cluster
리소스를 삭제합니다.oc --kubeconfig <backup_management_kubeconfig> \ delete agentcluster <hosted_cluster_name> \ -n <hosted_control_plane_namespace>
$ oc --kubeconfig <backup_management_kubeconfig> \ delete agentcluster <hosted_cluster_name> \ -n <hosted_control_plane_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc --kubeconfig <backup_management_kubeconfig> \ patch cluster <cluster_name> \ -n <hosted_control_plane_namespace> \ -p '[{"op":"remove","path":"/metadata/finalizers"}]' \ --type=json
$ oc --kubeconfig <backup_management_kubeconfig> \ patch cluster <cluster_name> \ -n <hosted_control_plane_namespace> \ -p '[{"op":"remove","path":"/metadata/finalizers"}]' \ --type=json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc --kubeconfig <backup_management_kubeconfig> \ delete cluster <cluster_name> \ -n <hosted_control_plane_namespace>
$ oc --kubeconfig <backup_management_kubeconfig> \ delete cluster <cluster_name> \ -n <hosted_control_plane_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Advanced Cluster Management를 사용하는 경우 다음 명령을 실행하여 관리되는 클러스터를 삭제합니다.
oc --kubeconfig <backup_management_kubeconfig> \ patch managedcluster <hosted_cluster_name> \ -n <hosted_cluster_namespace> \ -p '[{"op":"remove","path":"/metadata/finalizers"}]' \ --type=json
$ oc --kubeconfig <backup_management_kubeconfig> \ patch managedcluster <hosted_cluster_name> \ -n <hosted_cluster_namespace> \ -p '[{"op":"remove","path":"/metadata/finalizers"}]' \ --type=json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc --kubeconfig <backup_management_kubeconfig> \ delete managedcluster <hosted_cluster_name> \ -n <hosted_cluster_namespace>
$ oc --kubeconfig <backup_management_kubeconfig> \ delete managedcluster <hosted_cluster_name> \ -n <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
HostedCluster
리소스를 삭제합니다.oc --kubeconfig <backup_management_kubeconfig> \ delete hostedcluster \ -n <hosted_cluster_namespace> <hosted_cluster_name>
$ oc --kubeconfig <backup_management_kubeconfig> \ delete hostedcluster \ -n <hosted_cluster_namespace> <hosted_cluster_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.7.7. 백업 및 복원 프로세스 관찰 링크 복사링크가 클립보드에 복사되었습니다!
OADP(OpenShift API for Data Protection)를 사용하여 호스팅된 클러스터를 백업하고 복원할 때 프로세스를 모니터링하고 관찰할 수 있습니다.
프로세스
다음 명령을 실행하여 백업 프로세스를 관찰합니다.
watch "oc get backups.velero.io -n openshift-adp <backup_resource_name> -o jsonpath='{.status}'"
$ watch "oc get backups.velero.io -n openshift-adp <backup_resource_name> -o jsonpath='{.status}'"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 복원 프로세스를 관찰합니다.
watch "oc get restores.velero.io -n openshift-adp <backup_resource_name> -o jsonpath='{.status}'"
$ watch "oc get restores.velero.io -n openshift-adp <backup_resource_name> -o jsonpath='{.status}'"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Velero 로그를 관찰합니다.
oc logs -n openshift-adp -ldeploy=velero -f
$ oc logs -n openshift-adp -ldeploy=velero -f
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 모든 OADP 오브젝트의 진행 상황을 확인합니다.
watch "echo BackupRepositories:;echo;oc get backuprepositories.velero.io -A;echo; echo BackupStorageLocations: ;echo; oc get backupstoragelocations.velero.io -A;echo;echo DataUploads: ;echo;oc get datauploads.velero.io -A;echo;echo DataDownloads: ;echo;oc get datadownloads.velero.io -n openshift-adp; echo;echo VolumeSnapshotLocations: ;echo;oc get volumesnapshotlocations.velero.io -A;echo;echo Backups:;echo;oc get backup -A; echo;echo Restores:;echo;oc get restore -A"
$ watch "echo BackupRepositories:;echo;oc get backuprepositories.velero.io -A;echo; echo BackupStorageLocations: ;echo; oc get backupstoragelocations.velero.io -A;echo;echo DataUploads: ;echo;oc get datauploads.velero.io -A;echo;echo DataDownloads: ;echo;oc get datadownloads.velero.io -n openshift-adp; echo;echo VolumeSnapshotLocations: ;echo;oc get volumesnapshotlocations.velero.io -A;echo;echo Backups:;echo;oc get backup -A; echo;echo Restores:;echo;oc get restore -A"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.7.8. velero CLI를 사용하여 백업 및 복원 리소스 설명 링크 복사링크가 클립보드에 복사되었습니다!
데이터 보호를 위한 OpenShift API를 사용하는 경우 velero
CLI(명령줄 인터페이스)를 사용하여 Backup
및 Restore
리소스에 대한 자세한 정보를 얻을 수 있습니다.
프로세스
다음 명령을 실행하여 컨테이너에서
velero
CLI를 사용하도록 별칭을 생성합니다.alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
Restore
CR(사용자 정의 리소스)에 대한 세부 정보를 가져옵니다.velero restore describe <restore_resource_name> --details
$ velero restore describe <restore_resource_name> --details
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<restore_resource_name>
을Restore
리소스의 이름으로 바꿉니다.
다음 명령을 실행하여
Backup
CR에 대한 세부 정보를 가져옵니다.velero restore describe <backup_resource_name> --details
$ velero restore describe <backup_resource_name> --details
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<backup_resource_name>
을Backup
리소스의 이름으로 바꿉니다.