15.4. GitOps ZTP를 사용하여 단일 노드 OpenShift 클러스터에 대한 이미지 기반 업그레이드 수행
허브 클러스터의 단일 리소스인 ImageBasedGroupUpgrade
사용자 정의 리소스(CR)를 사용하여 모든 단계에 걸쳐 선택된 관리 클러스터 그룹에서 이미지 기반 업그레이드를 관리할 수 있습니다. TALM(Topology Aware Lifecycle Manager)은 ImageBasedGroupUpgrade
CR을 조정하고 정의된 단계 전환을 완료하기 위한 기반 리소스를 생성합니다. 이는 수동으로 제어되거나 완전히 자동화된 업그레이드 흐름에서 이루어집니다.
이미지 기반 업그레이드에 대한 자세한 내용은 "단일 노드 OpenShift 클러스터에 대한 이미지 기반 업그레이드 이해"를 참조하세요.
15.4.1. 허브에서 ImageBasedGroupUpgrade CR을 사용하여 대규모 이미지 기반 업그레이드 관리 링크 복사링크가 클립보드에 복사되었습니다!
ImageBasedGroupUpgrade
CR은 ImageBasedUpgrade
와 ClusterGroupUpgrade
API를 결합합니다. 예를 들어, ClusterGroupUpgrade
API와 같은 방식으로 ImageBasedGroupUpgrade
API를 사용하여 클러스터 선택 및 롤아웃 전략을 정의할 수 있습니다. 스테이지 전환은 ImageBasedUpgrade
API와 다릅니다. ImageBasedGroupUpgrade
API를 사용하면 여러 단계 전환(작업이라고도 함)을 하나의 단계로 결합하여 하나의 롤아웃 전략을 공유할 수 있습니다.
Example ImageBasedGroupUpgrade.yaml
- 1
- 업그레이드할 클러스터.
- 2
- 대상 플랫폼 버전, 사용할 시드 이미지, 이미지에 액세스하는 데 필요한 비밀번호입니다.참고
허브 클러스터에
ImageBasedGroupUpgrade
리소스와 동일한 네임스페이스에서 시드 이미지 풀 시크릿을 추가하면 해당 시크릿이준비
단계의 매니페스트 목록에 추가됩니다. 비밀은openshift-lifecycle-agent
네임스페이스의 각 스포크 클러스터에서 다시 생성됩니다. - 3
- 선택 사항: 시드 이미지에 없는 추가 매니페스트를 대상 클러스터에 적용합니다. 사용자 정의 카탈로그 소스에
ConfigMap
오브젝트도 적용합니다. - 4
- OADP
백업
및복원
CR이 포함된ConfigMap
리소스입니다. - 5
- 업그레이드 계획 세부 정보.
- 6
- 일괄 처리로 업데이트할 클러스터 수입니다.
- 7
- 작업을 완료하는 데 걸리는 시간 제한(분)입니다.
15.4.1.1. 지원되는 작업 조합 링크 복사링크가 클립보드에 복사되었습니다!
작업은 TALM이 선택된 클러스터 그룹에 대한 업그레이드 계획의 단계에서 완료하는 단계 전환 목록입니다. ImageBasedGroupUpgrade
CR의 각 작업
항목은 별도의 단계이며, 각 단계에는 동일한 롤아웃 전략을 공유하는 하나 이상의 작업이 포함됩니다. 작업을 단계별로 구분하면 각 작업에 대한 출시 전략을 더욱 효과적으로 제어할 수 있습니다.
이러한 작업은 업그레이드 계획에서 다르게 결합할 수 있으며 나중에 후속 단계를 추가할 수 있습니다. 이전 단계가 완료되거나 실패할 때까지 기다린 후에 계획에 단계를 추가하세요. 이전 단계에 실패한 클러스터의 경우 추가된 단계의 첫 번째 동작은 중단
또는 롤백
중 하나여야 합니다.
진행 중인 계획에서 작업이나 단계를 제거할 수 없습니다.
다음 표는 출시 전략에 대한 다양한 수준의 제어를 위한 계획의 예를 보여줍니다.
예시 계획 | 설명 |
---|---|
plan: - actions: ["Prep", "Upgrade", "FinalizeUpgrade"] rolloutStrategy: maxConcurrency: 200 timeout: 60
| 모든 작업은 동일한 전략을 공유합니다. |
| 일부 작업은 동일한 전략을 공유합니다. |
| 모든 행동에는 서로 다른 전략이 있습니다 |
작업 중 하나가 실패한 클러스터는 같은 단계의 나머지 작업을 건너뜁니다.
ImageBasedGroupUpgrade
API는 다음 작업을 허용합니다.
예습
-
준비
단계로 이동하여 업그레이드 리소스 준비를 시작하세요. 업그레이드
-
업그레이드
단계로 이동하여 업그레이드를 시작하세요. FinalizeUpgrade
-
업그레이드
작업을 완료한 선택된 클러스터에서유휴
단계로 이동하여 업그레이드를 마무리합니다. 롤백
-
롤백
단계로 이동하여 성공적으로 업그레이드된 클러스터에서만 롤백을 시작합니다. FinalizeRollback
-
유휴
단계로 이동하여 롤백을 완료합니다. AbortOnFailure
-
준비
또는업그레이드
작업에 실패한 선택된 클러스터의 업그레이드를 취소하려면유휴
단계로 이동합니다. Abort
-
아직 업그레이드되지 않은 클러스터에서만 진행 중인 업그레이드를 취소하려면
유휴
단계로 이동합니다.
다음과 같은 동작 조합이 지원됩니다. 괄호 한 쌍은 계획
섹션의 한 단계를 나타냅니다.
-
["Prep"]
,["Abort"]
-
["Prep", "Upgrade", "FinalizeUpgrade"]
-
["준비"]
,["AbortOnFailure"]
,["업그레이드"]
,["AbortOnFailure"]
,["FinalizeUpgrade"]
-
["Rollback", "FinalizeRollback"]
완전히 새로운 ImageBasedGroupUpgrade
CR에서 진행 중인 업그레이드를 재개하거나 취소해야 하는 경우 다음 조합 중 하나를 사용하세요.
-
["Upgrade","FinalizeUpgrade"]
-
["FinalizeUpgrade"]
-
["FinalizeRollback"]
-
["Abort"]
-
["AbortOnFailure"]
15.4.1.2. 클러스터 선택을 위한 라벨링 링크 복사링크가 클립보드에 복사되었습니다!
초기 클러스터 선택을 위해 spec.clusterLabelSelectors
필드를 사용합니다. 또한 TALM은 마지막 단계 전환 결과에 따라 관리 클러스터에 레이블을 지정합니다.
단계가 완료되거나 실패하면 TALM은 다음 레이블로 관련 클러스터를 표시합니다.
-
lcm.openshift.io/ibgu-<stage>-completed
-
lcm.openshift.io/ibgu-<stage>-failed
문제를 해결한 후 클러스터 그룹의 업그레이드를 취소하거나 롤백하려면 이러한 클러스터 레이블을 사용합니다.
ImageBasedGroupUpgrade
CR을 사용하여 클러스터를 업그레이드하는 경우 관리되는 클러스터에서 문제 해결 또는 복구 단계를 수행한 후 lcm.openshift.io/ibgu-<stage>-completed
또는 lcm.openshift.io/ibgu-<stage>-failed
클러스터 레이블이 제대로 업데이트되었는지 확인하세요. 이를 통해 TALM이 클러스터의 이미지 기반 업그레이드를 계속 관리할 수 있습니다.
예를 들어, 업그레이드를 성공적으로 완료한 클러스터를 제외한 모든 관리 클러스터에 대한 업그레이드를 취소하려면 계획에 중단
작업을 추가할 수 있습니다. 중단
작업은 ImageBasedUpgrade
CR을 유휴
단계로 되돌려 아직 업그레이드되지 않은 클러스터의 업그레이드를 취소합니다. 별도의 중단
작업을 추가하면 TALM이 lcm.openshift.io/ibgu-upgrade-completed
레이블이 있는 클러스터에서 중단
작업을 수행하지 않습니다.
업그레이드를 성공적으로 취소하거나 완료하면 클러스터 레이블이 제거됩니다.
15.4.1.3. 상태 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
ImageBasedGroupUpgrade
CR은 모든 클러스터에 대한 포괄적인 상태 보고서를 한곳에 집계하여 더 나은 모니터링 환경을 보장합니다. 다음 작업을 모니터링할 수 있습니다.
status.clusters.completedActions
-
계획
섹션에 정의된 모든 완료된 작업을 표시합니다. status.clusters.currentAction
- 현재 진행 중인 모든 작업을 표시합니다.
status.clusters.failedActions
- 실패한 모든 작업을 자세한 오류 메시지와 함께 표시합니다.
15.4.2. 여러 단계로 관리되는 클러스터에서 대규모 이미지 기반 업그레이드 수행 링크 복사링크가 클립보드에 복사되었습니다!
업그레이드로 인해 서비스가 중단되는 경우를 보다 효과적으로 제어해야 하는 경우 이전 단계가 완료된 후 작업을 추가하여 ImageBasedGroupUpgrade
CR을 사용하여 관리되는 클러스터 세트를 업그레이드할 수 있습니다. 이전 단계의 결과를 평가한 후 다음 업그레이드 단계로 넘어가거나 절차 전반에 걸쳐 실패한 단계의 문제를 해결할 수 있습니다.
일부 동작 조합만 지원되며 지원되는 동작 조합 에 나열되어 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 사용자로 허브 클러스터에 로그인했습니다. -
이미지 기반 업그레이드에 사용되는 리소스에 대한 정책 및
ConfigMap
오브젝트가 생성되어 있습니다. - 허브 클러스터를 통해 모든 관리형 클러스터에 Lifecycle Agent와 OADP Operators를 설치했습니다.
프로세스
ImageBasedGroupUpgrade
CR이 포함된 허브 클러스터에 YAML 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 업그레이드할 클러스터.
- 2
- 대상 플랫폼 버전, 사용할 시드 이미지, 이미지에 액세스하는 데 필요한 비밀번호입니다.참고
허브 클러스터에
ImageBasedGroupUpgrade
리소스와 동일한 네임스페이스에서 시드 이미지 풀 시크릿을 추가하면 해당 시크릿이준비
단계의 매니페스트 목록에 추가됩니다. 비밀은openshift-lifecycle-agent
네임스페이스의 각 스포크 클러스터에서 다시 생성됩니다. - 3
- 선택 사항: 시드 이미지에 없는 추가 매니페스트를 대상 클러스터에 적용합니다. 사용자 정의 카탈로그 소스에
ConfigMap
오브젝트도 적용합니다. - 4
- OADP
백업
및복원
CR이 포함된ConfigMap
리소스 목록입니다. - 5
- 업그레이드 계획 세부 정보.
허브 클러스터에서 다음 명령을 실행하여 생성된 파일을 적용합니다.
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 허브 클러스터에서 다음 명령을 실행하여 상태 업데이트를 모니터링합니다.
oc get ibgu -o yaml
$ oc get ibgu -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 예제 계획의 출력은
준비
단계에서만 시작하며, 이전 단계의 결과에 따라 계획에 작업을 추가합니다. TALM은 업그레이드가 성공했는지 실패했는지를 표시하기 위해 클러스터에 레이블을 추가합니다. 예를 들어,lcm.openshift.io/ibgu-prep-failed
는준비
단계에서 실패한 클러스터에 적용됩니다.실패를 조사한 후 업그레이드 계획에
AbortOnFailure
단계를 추가할 수 있습니다.lcm.openshift.io/ibgu-<action>-failed
로 라벨이 지정된 클러스터를 다시유휴
단계로 이동합니다. 선택한 클러스터의 업그레이드와 관련된 모든 리소스가 삭제됩니다.선택 사항: 다음 명령을 실행하여 기존
ImageBasedGroupUpgrade
CR에AbortOnFailure
작업을 추가합니다.oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["AbortOnFailure"], "rolloutStrategy": {"maxConcurrency": 5, "timeout": 10}}}]'
$ oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["AbortOnFailure"], "rolloutStrategy": {"maxConcurrency": 5, "timeout": 10}}}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 상태 업데이트를 계속 모니터링합니다.
oc get ibgu -o yaml
$ oc get ibgu -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여 기존
ImageBasedGroupUpgrade
CR에 작업을 추가합니다.oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["Upgrade"], "rolloutStrategy": {"maxConcurrency": 2, "timeout": 30}}}]'
$ oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["Upgrade"], "rolloutStrategy": {"maxConcurrency": 2, "timeout": 30}}}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 다음 명령을 실행하여 기존
ImageBasedGroupUpgrade
CR에AbortOnFailure
작업을 추가합니다.oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["AbortOnFailure"], "rolloutStrategy": {"maxConcurrency": 5, "timeout": 10}}}]'
$ oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["AbortOnFailure"], "rolloutStrategy": {"maxConcurrency": 5, "timeout": 10}}}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 상태 업데이트를 계속 모니터링합니다.
oc get ibgu -o yaml
$ oc get ibgu -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여 기존
ImageBasedGroupUpgrade
CR에 작업을 추가합니다.oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["FinalizeUpgrade"], "rolloutStrategy": {"maxConcurrency": 10, "timeout": 3}}}]'
$ oc patch ibgu <filename> --type=json -p \ '[{"op": "add", "path": "/spec/plan/-", "value": {"actions": ["FinalizeUpgrade"], "rolloutStrategy": {"maxConcurrency": 10, "timeout": 3}}}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 실행하여 상태 업데이트를 모니터링하세요.
oc get ibgu -o yaml
$ oc get ibgu -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.4.3. 하나의 단계로 다수의 관리 클러스터에서 이미지 기반 업그레이드를 대규모로 수행 링크 복사링크가 클립보드에 복사되었습니다!
서비스 중단이 문제가 되지 않는 사용 사례에서는 하나의 롤아웃 전략으로 여러 작업을 한 단계로 결합한 ImageBasedGroupUpgrade
CR을 사용하여 관리형 클러스터 세트를 업그레이드할 수 있습니다. 하나의 롤아웃 전략을 사용하면 업그레이드 시간을 줄일 수 있지만, 업그레이드 계획이 완료된 후에만 실패한 클러스터의 문제를 해결할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 사용자로 허브 클러스터에 로그인했습니다. -
이미지 기반 업그레이드에 사용되는 리소스에 대한 정책 및
ConfigMap
오브젝트가 생성되어 있습니다. - 허브 클러스터를 통해 모든 관리형 클러스터에 Lifecycle Agent와 OADP Operators를 설치했습니다.
프로세스
ImageBasedGroupUpgrade
CR이 포함된 허브 클러스터에 YAML 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 업그레이드할 클러스터.
- 2
- 대상 플랫폼 버전, 사용할 시드 이미지, 이미지에 액세스하는 데 필요한 비밀번호입니다.참고
허브 클러스터에
ImageBasedGroupUpgrade
리소스와 동일한 네임스페이스에서 시드 이미지 풀 시크릿을 추가하면 해당 시크릿이준비
단계의 매니페스트 목록에 추가됩니다. 비밀은openshift-lifecycle-agent
네임스페이스의 각 스포크 클러스터에서 다시 생성됩니다. - 3
- 선택 사항: 시드 이미지에 없는 추가 매니페스트를 대상 클러스터에 적용합니다. 사용자 정의 카탈로그 소스에
ConfigMap
오브젝트도 적용합니다. - 4
- OADP
백업
및복원
CR이 포함된ConfigMap
리소스입니다. - 5
- 업그레이드 계획 세부 정보.
- 6
- 일괄 처리로 업데이트할 클러스터 수입니다.
- 7
- 작업을 완료하는 데 걸리는 시간 제한(분)입니다.
허브 클러스터에서 다음 명령을 실행하여 생성된 파일을 적용합니다.
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 실행하여 상태 업데이트를 모니터링하세요.
oc get ibgu -o yaml
$ oc get ibgu -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.4.4. 규모에 따라 관리 클러스터에서 이미지 기반 업그레이드 취소 링크 복사링크가 클립보드에 복사되었습니다!
준비
단계를 완료한 관리형 클러스터 세트에서 업그레이드를 취소할 수 있습니다.
일부 동작 조합만 지원되며 지원되는 동작 조합 에 나열되어 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 사용자로 허브 클러스터에 로그인했습니다.
프로세스
ImageBasedGroupUpgrade
CR이 포함된 허브 클러스터에 별도의 YAML 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 준비
단계를 완료한 모든 관리 클러스터는유휴
단계로 돌아갑니다.허브 클러스터에서 다음 명령을 실행하여 생성된 파일을 적용합니다.
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 실행하여 상태 업데이트를 모니터링하세요.
oc get ibgu -o yaml
$ oc get ibgu -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.4.5. 대규모 관리형 클러스터에서 이미지 기반 업그레이드 롤백 링크 복사링크가 클립보드에 복사되었습니다!
성공적인 업그레이드 후 해결할 수 없는 문제가 발생하면 관리되는 클러스터 세트에서 변경 사항을 롤백합니다. 별도의 ImageBasedGroupUpgrade
CR을 만들고 롤백하려는 관리 클러스터 세트를 정의해야 합니다.
일부 동작 조합만 지원되며 지원되는 동작 조합 에 나열되어 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 사용자로 허브 클러스터에 로그인했습니다.
프로세스
ImageBasedGroupUpgrade
CR이 포함된 허브 클러스터에 별도의 YAML 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 허브 클러스터에서 다음 명령을 실행하여 생성된 파일을 적용합니다.
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 정의된 레이블과 일치하는 모든 관리 클러스터는
롤백 단계
로 이동한 다음유휴
단계로 이동하여 롤백을 완료합니다.
검증
다음 명령을 실행하여 상태 업데이트를 모니터링하세요.
oc get ibgu -o yaml
$ oc get ibgu -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.4.6. Lifecycle Agent를 사용한 이미지 기반 업그레이드 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
문제의 영향을 받는 관리되는 클러스터에서 문제 해결 단계를 수행합니다.
ImageBasedGroupUpgrade
CR을 사용하여 클러스터를 업그레이드하는 경우 관리되는 클러스터에서 문제 해결 또는 복구 단계를 수행한 후 lcm.openshift.io/ibgu-<stage>-completed
또는 lcm.openshift.io/ibgu-<stage>-failed
클러스터 레이블이 제대로 업데이트되었는지 확인하세요. 이를 통해 TALM이 클러스터의 이미지 기반 업그레이드를 계속 관리할 수 있습니다.
15.4.6.1. 로그 수집 링크 복사링크가 클립보드에 복사되었습니다!
oc adm must-gather
CLI를 사용하면 디버깅 및 문제 해결을 위한 정보를 수집할 수 있습니다.
프로세스
다음 명령을 실행하여 운영자에 대한 데이터를 수집합니다.
oc adm must-gather \ --dest-dir=must-gather/tmp \ --image=$(oc -n openshift-lifecycle-agent get deployment.apps/lifecycle-agent-controller-manager -o jsonpath='{.spec.template.spec.containers[?(@.name == "manager")].image}') \ --image=quay.io/konveyor/oadp-must-gather:latest \//
$ oc adm must-gather \ --dest-dir=must-gather/tmp \ --image=$(oc -n openshift-lifecycle-agent get deployment.apps/lifecycle-agent-controller-manager -o jsonpath='{.spec.template.spec.containers[?(@.name == "manager")].image}') \ --image=quay.io/konveyor/oadp-must-gather:latest \//
1 --image=quay.io/openshift/origin-must-gather:latest
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.4.6.2. AbortFailed 또는 FinalizeFailed 오류 링크 복사링크가 클립보드에 복사되었습니다!
- 문제
마무리 단계 또는
준비
단계에서 프로세스를 중지하면 Lifecycle Agent는 다음 리소스를 정리합니다.- 더 이상 필요하지 않은 Stateroot
- 리소스 사전 캐싱
- OADP CR
-
ImageBasedUpgrade
CR
라이프 사이클 에이전트가 위의 단계를 수행하지 못하면
AbortFailed
또는FinalizeFailed
상태로 전환됩니다. 조건 메시지와 로그는 어떤 단계가 실패했는지 보여줍니다.오류 메시지의 예
message: failed to delete all the backup CRs. Perform cleanup manually then add 'lca.openshift.io/manual-cleanup-done' annotation to ibu CR to transition back to Idle observedGeneration: 5 reason: AbortFailed status: "False" type: Idle
message: failed to delete all the backup CRs. Perform cleanup manually then add 'lca.openshift.io/manual-cleanup-done' annotation to ibu CR to transition back to Idle observedGeneration: 5 reason: AbortFailed status: "False" type: Idle
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 해결
- 로그를 검사하여 실패가 발생한 이유를 확인하세요.
Lifecycle Agent가 정리를 다시 시도하도록 하려면
ImageBasedUpgrade
CR에lca.openshift.io/manual-cleanup-done
주석을 추가합니다.이 주석을 관찰한 후 Lifecycle Agent는 정리를 다시 시도하고, 성공하면
ImageBasedUpgrade
단계가Idle
로 전환됩니다.정리가 다시 실패하면 리소스를 수동으로 정리할 수 있습니다.
15.4.6.2.1. stateroot 수동 정리 링크 복사링크가 클립보드에 복사되었습니다!
- 문제
-
준비
단계에서 멈추고 Lifecycle Agent는 새로운 stateroot를 정리합니다. 업그레이드나 롤백을 성공적으로 마친 후, Lifecycle Agent는 이전 stateroot를 정리합니다. 이 단계가 실패하면 로그를 검사하여 실패 원인을 확인하는 것이 좋습니다. - 해결
다음 명령을 실행하여 stateroot에 기존 배포가 있는지 확인합니다.
ostree admin status
$ ostree admin status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 기존 배포가 있는 경우 다음 명령을 실행하여 기존 배포를 정리합니다.
ostree admin undeploy <index_of_deployment>
$ ostree admin undeploy <index_of_deployment>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow stateroot의 모든 배포를 정리한 후 다음 명령을 실행하여 stateroot 디렉터리를 지웁니다.
주의부팅된 배포가 이 stateroot에 있지 않은지 확인하세요.
stateroot="<stateroot_to_delete>"
$ stateroot="<stateroot_to_delete>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow unshare -m /bin/sh -c "mount -o remount,rw /sysroot && rm -rf /sysroot/ostree/deploy/${stateroot}"
$ unshare -m /bin/sh -c "mount -o remount,rw /sysroot && rm -rf /sysroot/ostree/deploy/${stateroot}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.4.6.2.2. OADP 리소스 수동 정리 링크 복사링크가 클립보드에 복사되었습니다!
- 문제
-
Lifecycle Agent와 S3 백엔드 간의 연결 문제로 인해 OADP 리소스의 자동 정리가 실패할 수 있습니다. 연결을 복구하고
lca.openshift.io/manual-cleanup-done
주석을 추가하면 Lifecycle Agent가 백업 리소스를 성공적으로 정리할 수 있습니다. - 해결
다음 명령을 실행하여 백엔드 연결을 확인하세요.
oc get backupstoragelocations.velero.io -n openshift-adp
$ oc get backupstoragelocations.velero.io -n openshift-adp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME PHASE LAST VALIDATED AGE DEFAULT dataprotectionapplication-1 Available 33s 8d true
NAME PHASE LAST VALIDATED AGE DEFAULT dataprotectionapplication-1 Available 33s 8d true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
모든 백업 리소스를 제거한 다음
ImageBasedUpgrade
CR에lca.openshift.io/manual-cleanup-done
주석을 추가합니다.
15.4.6.3. LVM 스토리지 볼륨 내용이 복구되지 않았습니다. 링크 복사링크가 클립보드에 복사되었습니다!
LVM 스토리지를 사용하여 동적 영구 볼륨 스토리지를 제공하는 경우, LVM 스토리지가 잘못 구성된 경우 영구 볼륨 내용을 복원하지 못할 수 있습니다.
15.4.6.3.1. 백업 CR에 LVM 저장소 관련 필드가 없습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- 문제
백업
CR에 영구 볼륨을 복원하는 데 필요한 필드가 누락되었을 수 있습니다. 다음을 실행하여 애플리케이션 포드에서 이벤트를 확인하여 이 문제가 있는지 확인할 수 있습니다.oc describe pod <your_app_name>
$ oc describe pod <your_app_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 백업 CR에서 누락된 LVM 저장소 관련 필드를 보여주는 예제 출력
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 해결
애플리케이션
백업
CR에logicalvolumes.topolvm.io를
포함해야 합니다. 이 리소스가 없으면 애플리케이션은 영구 볼륨 클레임을 복원하고 영구 볼륨이 올바르게 나타나지만 이 영구 볼륨과 연결된논리
볼륨은 피벗 후 올바르게 복원되지 않습니다.백업 CR 예시
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 애플리케이션의 영구 볼륨을 복원하려면 표시된 대로 이 섹션을 구성해야 합니다.
15.4.6.3.2. Restore CR에서 LVM 저장소 관련 필드가 누락됨 링크 복사링크가 클립보드에 복사되었습니다!
- 문제
업그레이드 후 애플리케이션에 대한 예상 리소스는 복구되지만 영구 볼륨 내용은 보존되지 않습니다.
피벗 전에 다음 명령을 실행하여 애플리케이션의 영구 볼륨을 나열하세요.
oc get pv,pvc,logicalvolumes.topolvm.io -A
$ oc get pv,pvc,logicalvolumes.topolvm.io -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 피벗 전의 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 피벗한 후 실행하여 애플리케이션의 영구 볼륨을 나열하세요.
oc get pv,pvc,logicalvolumes.topolvm.io -A
$ oc get pv,pvc,logicalvolumes.topolvm.io -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 피벗 후의 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 해결
이 문제가 발생하는 이유는
논리 볼륨
상태가복원
CR에서 보존되지 않기 때문입니다. 이 상태는 Velero가 피벗 후에 보존해야 하는 볼륨을 참조하는 데 필요하기 때문에 중요합니다.Restore
CR 애플리케이션에는 다음 필드를 포함해야 합니다.예제 CR 복원
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.4.6.4. 실패한 백업 및 복원 CR 디버깅 링크 복사링크가 클립보드에 복사되었습니다!
- 문제
- 아티팩트의 백업이나 복원이 실패했습니다.
- 해결
Velero CLI 도구를 사용하면
백업
및복원
CR을 디버깅하고 로그를 검색할 수 있습니다. Velero CLI 툴은 OpenShift CLI 툴보다 자세한 정보를 제공합니다.다음 명령을 실행하여 오류가 포함된
백업
CR을 설명합니다.oc exec -n openshift-adp velero-7c87d58c7b-sw6fc -c velero -- ./velero describe backup -n openshift-adp backup-acm-klusterlet --details
$ oc exec -n openshift-adp velero-7c87d58c7b-sw6fc -c velero -- ./velero describe backup -n openshift-adp backup-acm-klusterlet --details
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 오류가 포함된 CR
복원을
설명합니다.oc exec -n openshift-adp velero-7c87d58c7b-sw6fc -c velero -- ./velero describe restore -n openshift-adp restore-acm-klusterlet --details
$ oc exec -n openshift-adp velero-7c87d58c7b-sw6fc -c velero -- ./velero describe restore -n openshift-adp restore-acm-klusterlet --details
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 백업된 리소스를 로컬 디렉토리에 다운로드합니다.
oc exec -n openshift-adp velero-7c87d58c7b-sw6fc -c velero -- ./velero backup download -n openshift-adp backup-acm-klusterlet -o ~/backup-acm-klusterlet.tar.gz
$ oc exec -n openshift-adp velero-7c87d58c7b-sw6fc -c velero -- ./velero backup download -n openshift-adp backup-acm-klusterlet -o ~/backup-acm-klusterlet.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow