4.4. 문제 해결
OpenShift CLI 툴 또는 Velero CLI 툴을 사용하여 Velero CR(사용자 정의 리소스)을 디버깅할 수 있습니다. Velero CLI 툴은 보다 자세한 로그 및 정보를 제공합니다.
설치 문제,백업 및 복원 CR 문제 및 Restic 문제를 확인할 수 있습니다.
must-gather
툴을 사용하여 로그, CR 정보 및 Prometheus 지표 데이터를 수집할 수 있습니다.
다음과 같이 Velero CLI 툴을 가져올 수 있습니다.
- Velero CLI 툴 다운로드
- 클러스터의 Velero 배포에서 Velero 바이너리에 액세스
4.4.1. Velero CLI 툴 다운로드
Velero 문서 페이지에 있는 지침에 따라 Velero CLI 툴을 다운로드하고 설치할 수 있습니다.
페이지에는 다음에 대한 지침이 포함되어 있습니다.
- macOS Homebrew 사용
- GitHub
- Chocolatey를 사용하는 Windows
사전 요구 사항
- DNS 및 컨테이너 네트워킹이 활성화된 Kubernetes 클러스터 v1.16 이상에 액세스할 수 있습니다.
-
kubectl
을 로컬로 설치했습니다.
절차
- 브라우저를 열고 Verleo 웹 사이트에서 " CLI 설치 "로 이동합니다.
- macOS, GitHub 또는 Windows에 적절한 절차를 따르십시오.
다음 표에 따라 OADP 버전에 적합한 Velero 버전을 다운로드합니다.
표 4.2. OADP-Velero 버전 관계 OADP 버전 Velero 버전 0.2.6
1.6.0
0.5.5
1.7.1
1.0.0
1.7.1
1.0.1
1.7.1
1.0.2
1.7.1
1.0.3
1.7.1
4.4.2. 클러스터의 Velero 배포에서 Velero 바이너리에 액세스
쉘 명령을 사용하여 클러스터의 Velero 배포의 Velero 바이너리에 액세스할 수 있습니다.
사전 요구 사항
-
DataProtectionApplication
사용자 정의 리소스에는Reconcile 완료
의 상태가 있습니다.
절차
다음 명령을 입력하여 필요한 별칭을 설정합니다.
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
4.4.3. OpenShift CLI 툴을 사용하여 Velero 리소스 디버깅
Velero 사용자 정의 리소스(CR) 및 OpenShift CLI 툴을 사용하여 Velero
Pod 로그를 확인하여 실패한 백업 또는 복원을 디버깅할 수 있습니다.
Velero CR
oc describe
명령을 사용하여 Backup
또는 Restore
CR과 관련된 경고 및 오류 요약을 검색합니다.
$ oc describe <velero_cr> <cr_name>
Velero 포드 로그
oc logs
명령을 사용하여 Velero
pod 로그를 검색합니다.
$ oc logs pod/<velero>
Velero Pod 디버그 로그
다음 예와 같이 DataProtectionApplication
리소스에서 Velero 로그 수준을 지정할 수 있습니다.
이 옵션은 OADP 1.0.3부터 사용할 수 있습니다.
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: velero-sample spec: configuration: velero: logLevel: warning
다음 logLevel
값을 사용할 수 있습니다.
-
trace
-
debug
-
info
-
경고
-
error
-
fatal
-
panic
대부분의 로그에 debug
를 사용하는 것이 좋습니다.
4.4.4. Velero CLI 툴을 사용하여 Velero 리소스 디버깅
Backup
및 Restore
CR(사용자 정의 리소스)을 디버그하고 Velero CLI 툴을 사용하여 로그를 검색할 수 있습니다.
Velero CLI 툴은 OpenShift CLI 툴보다 자세한 정보를 제공합니다.
구문
oc exec
명령을 사용하여 Velero CLI 명령을 실행합니다.
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ <backup_restore_cr> <command> <cr_name>
예제
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
도움말 옵션
velero --help
옵션을 사용하여 모든 Velero CLI 명령을 나열합니다.
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ --help
Describe 명령
velero describe
명령을 사용하여 Backup
또는 Restore
CR과 관련된 경고 및 오류 요약을 검색합니다.
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ <backup_restore_cr> describe <cr_name>
예제
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
Logs 명령
velero logs
명령을 사용하여 Backup
또는 Restore
CR의 로그를 검색합니다.
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ <backup_restore_cr> logs <cr_name>
예제
$ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \ restore logs ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
4.4.5. 설치 문제
Data Protection 애플리케이션을 설치할 때 잘못된 디렉토리 또는 잘못된 인증 정보를 사용하여 발생한 문제가 발생할 수 있습니다.
4.4.5.1. 백업 스토리지에 잘못된 디렉터리가 포함되어 있습니다.
Velero
pod 로그에 오류 메시지가 표시되고 Backup storage에는 잘못된 최상위 디렉터리가 포함되어 있습니다
.
원인
오브젝트 스토리지에는 Velero 디렉터리가 아닌 최상위 디렉터리가 포함되어 있습니다.
해결책
오브젝트 스토리지가 Velero에 전용되지 않은 경우 DataProtectionApplication
매니페스트에서 spec.backupLocations.velero.objectStorage.prefix
매개변수를 설정하여 버킷의 접두사를 지정해야 합니다.
4.4.5.2. 잘못된 AWS 인증 정보
oadp-aws-registry
Pod 로그에 오류 메시지 InvalidAccessKeyId가 표시됩니다. 제공한 AWS Access Key는 저희 기록에 존재하지 않습니다.
Velero
pod 로그에 오류 메시지 NoCredentialProviders: no valid providers in chain
가 표시됩니다.
원인
Secret
오브젝트를 생성하는 데 사용되는 credentials-velero
파일이 잘못 포맷되어 있습니다.
해결책
다음 예와 같이 credentials-velero
파일의 형식이 올바르게 지정되었는지 확인합니다.
credentials-velero
파일의 예
[default] 1 aws_access_key_id=AKIAIOSFODNN7EXAMPLE 2 aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
4.4.6. CR 문제 백업 및 복원
백업
및 복원
사용자 정의 리소스 (CR)에서 이러한 일반적인 문제가 발생할 수 있습니다.
4.4.6.1. 백업 CR은 볼륨을 검색할 수 없습니다.
Backup
CR에 오류 메시지 InvalidVolume.NotFound가 표시됩니다. 'vol-xxxx' 볼륨이 존재하지 않습니다
.
원인
PV(영구 볼륨) 및 스냅샷 위치는 다른 지역에 있습니다.
해결책
-
스냅샷 위치가 PV와 동일한 지역에 있도록
DataProtectionApplication
매니페스트의spec.snapshotLocations.velero.config.region
키 값을 편집합니다. -
새
Backup
CR을 생성합니다.
4.4.6.2. 백업 CR 상태는 진행 중인 상태로 유지됩니다.
Backup
CR의 상태는 InProgress
단계에 남아 있으며 완료되지 않습니다.
원인
백업이 중단되면 다시 시작할 수 없습니다.
해결책
Backup
CR의 세부 정보를 검색합니다.$ oc -n {namespace} exec deployment/velero -c velero -- ./velero \ backup describe <backup>
Backup
CR을 삭제합니다.$ oc delete backup <backup> -n openshift-adp
진행 중인
Backup
CR에서 오브젝트 스토리지에 파일을 업로드하지 않았기 때문에 백업 위치를 정리할 필요가 없습니다.-
새
Backup
CR을 생성합니다.
4.4.7. Restic 문제
Restic을 사용하여 애플리케이션을 백업할 때 이러한 문제가 발생할 수 있습니다.
4.4.7.1. root_squash가 활성화된 NFS 데이터 볼륨에 대한 Restic 권한 오류
Restic
Pod 로그에 오류 메시지 controller=pod-volume-backup error="fork/exec/usr/bin/restic: permission denied"
가 표시됩니다.
원인
NFS 데이터 볼륨에 root_squash
가 활성화된 경우 Restic
은 nfsnobody
에 매핑되고 백업을 생성할 수 있는 권한이 없습니다.
해결책
Restic
에 대한 추가 그룹을 생성하고 DataProtectionApplication
매니페스트에 그룹 ID를 추가하여 이 문제를 해결할 수 있습니다.
-
NFS 데이터 볼륨에서
Restic
에 대한 추가 그룹을 생성합니다. -
그룹 소유권이 상속되도록 NFS 디렉터리에
setgid
비트를 설정합니다. 다음 예와 같이
spec.configuration.restic.supplementalGroups
매개변수 및 그룹 ID를DataProtectionApplication
매니페스트에 추가합니다.spec: configuration: restic: enable: true supplementalGroups: - <group_id> 1
- 1
- 보조 그룹 ID를 지정합니다.
-
변경 사항을 적용할 수 있도록
Restic
Pod가 다시 시작될 때까지 기다립니다.
4.4.7.2. Restic 백업의 복원 CR은 "PartiallyFailed", "Failed" 또는 remains "InProgress"입니다.
Restic 백업의 Restore
CR은 PartiallyFailed
또는 Failed
상태로 완료되거나 InProgress
로 남아 있으며 완료되지 않습니다.
상태가 PartiallyFailed
또는 Failed
인 경우 Velero
pod 로그에 오류 메시지 level=error msg="unable to successfully complete restic restores of pod's volumes"
가 표시됩니다.
상태가 InProgress
이면 Restore
CR 로그를 사용할 수 없으며 Restic
Pod 로그에 오류가 표시되지 않습니다.
원인
DeploymentConfig
오브젝트에서 Restore
Pod를 재배포하여 Restore
CR이 실패합니다.
해결책
ReplicationController
,DeploymentConfig
,TemplateInstances
리소스를 제외하는Restore
CR을 생성합니다.$ velero restore create --from-backup=<backup> -n openshift-adp \ 1 --include-namespaces <namespace> \ 2 --exclude-resources replicationcontroller,deploymentconfig,templateinstances.template.openshift.io \ --restore-volumes=true
Restore
CR의 상태가Completed
인지 확인합니다.$ oc get restore -n openshift-adp <restore> -o jsonpath='{.status.phase}'
ReplicationController
및 DeploymentConfig 리소스가 포함된Restore
CR을
생성합니다.$ velero restore create --from-backup=<backup> -n openshift-adp \ --include-namespaces <namespace> \ --include-resources replicationcontroller,deploymentconfig \ --restore-volumes=true
Restore
CR의 상태가Completed
인지 확인합니다.$ oc get restore -n openshift-adp <restore> -o jsonpath='{.status.phase}'
백업 리소스가 복원되었는지 확인합니다.
$ oc get all -n <namespace>
4.4.7.3. Restic Backup CR은 버킷이 선점된 후 다시 생성할 수 없습니다.
네임스페이스에 대한 Restic Backup
CR을 생성하고 S3 버킷을 비우고 동일한 네임스페이스에 Backup
CR을 다시 생성하면 다시 생성되는 Backup
CR이 실패합니다.
velero
Pod 로그에 오류 메시지 msg="Error checking repository for stale locks"
가 표시됩니다.
원인
Velero는 오브젝트 스토리지에서 Restic 디렉터리가 삭제되면 ResticRepository
매니페스트에서 Restic 리포지토리를 생성하지 않습니다. 자세한 내용은 (Velero 문제 4421)를 참조하십시오.
4.4.8. must-gather 툴 사용
must-gather
툴을 사용하여 OADP 사용자 정의 리소스에 대한 로그, 메트릭 및 정보를 수집할 수 있습니다.
must-gather
데이터는 모든 고객 사례에 첨부되어야 합니다.
다음 데이터 수집 옵션을 사용하여 must-gather
툴을 실행할 수 있습니다.
-
full
must-gather
데이터 수집은 OADP Operator가 설치된 모든 네임스페이스에 대한 Prometheus 지표, Pod 로그 및 Velero CR 정보를 수집합니다. -
필수
must-gather
데이터 수집은 특정 기간(예: 1시간 또는 24시간) 동안 Pod 로그 및 Velero CR 정보를 수집합니다. Prometheus 지표 및 중복 로그는 포함되지 않습니다. -
시간 초과가 포함된
must-gather
데이터 수집 데이터 수집은 많은백업
CR이 실패한 경우 오랜 시간이 걸릴 수 있습니다. 시간 제한 값을 설정하여 성능을 향상시킬 수 있습니다. - Prometheus 지표 데이터 덤프는 Prometheus에서 수집한 지표 데이터가 포함된 아카이브 파일을 다운로드합니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 OpenShift Container Platform 클러스터에 로그인해야 합니다. -
OpenShift CLI(
oc
)가 설치되어 있어야 합니다.
절차
-
must-gather
데이터를 저장하려는 디렉터리로 이동합니다. 다음 데이터 수집 옵션 중 하나에 대해
oc adm must-gather
명령을 실행합니다.Prometheus 지표를 포함한 전체
must-gather
데이터 수집$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0
데이터는
must-gather/must-gather.tar.gz
로 저장됩니다. Red Hat 고객 포털에서 해당 지원 사례에 이 파일을 업로드할 수 있습니다.특정 기간 동안 Prometheus 지표 없이 필수
must-gather
데이터 수집$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0 \ -- /usr/bin/gather_<time>_essential 1
- 1
- 시간을 시간 단위로 지정합니다. 허용되는 값은
1h
,6h
,24h
,72h
, 또는모두
(예:gather_1h_essential
또는gather_all_essential
)입니다.
시간 초과가 포함된
must-gather
데이터 수집$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0 \ -- /usr/bin/gather_with_timeout <timeout> 1
- 1
- 시간 초과 값을 초 단위로 지정합니다.
Prometheus 지표 데이터 덤프:
$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.0 \ -- /usr/bin/gather_metrics_dump
이 작업에는 오랜 시간이 걸릴 수 있습니다. 데이터는
must-gather/metrics/prom_data.tar.gz
로 저장됩니다.
Prometheus 콘솔을 사용하여 메트릭 데이터 보기
Prometheus 콘솔을 사용하여 지표 데이터를 볼 수 있습니다.
절차
prom_data.tar.gz
파일의 압축을 풉니다.$ tar -xvzf must-gather/metrics/prom_data.tar.gz
로컬 Prometheus 인스턴스를 생성합니다.
$ make prometheus-run
이 명령은 Prometheus URL을 출력합니다.
출력 결과
Started Prometheus on http://localhost:9090
- 웹 브라우저를 시작하고 URL로 이동하여 Prometheus 웹 콘솔을 사용하여 데이터를 확인합니다.
데이터를 보고 나면 Prometheus 인스턴스 및 데이터를 삭제합니다.
$ make prometheus-cleanup