18.9. 토폴로지 Aware Lifecycle Manager 문제 해결
TALM(토폴로지 라이프사이클 관리자)은 RHACM 정책을 해결하는 OpenShift Container Platform Operator입니다. 문제가 발생하면 oc adm must-gather
명령을 사용하여 세부 정보 및 로그를 수집하고 문제를 디버깅하는 단계를 수행합니다.
관련 항목에 대한 자세한 내용은 다음 문서를 참조하십시오.
18.9.1. 일반 문제 해결
다음 질문을 검토하여 문제의 원인을 확인할 수 있습니다.
적용 중인 구성이 지원됩니까?
- RHACM 및 OpenShift Container Platform 버전이 호환됩니까?
- TALM 및 RHACM 버전이 호환됩니까?
다음 중 문제를 유발하는 구성 요소는 무엇입니까?
ClusterGroupUpgrade
구성이 작동하는지 확인하려면 다음을 수행합니다.
-
spec.enable
필드를false
로 설정하여ClusterGroupUpgrade
CR을 생성합니다. - 상태가 업데이트될 때까지 기다린 후 문제 해결 질문을 진행합니다.
-
모든 항목이 예상대로 표시되면
ClusterGroupUpgrade
CR에서spec.enable
필드를true
로 설정합니다.
ClusterUpgradeGroup
CR에서 spec.enable
필드를 true
로 설정한 후 업데이트 절차가 시작되고 CR의 spec
필드를 더 이상 편집할 수 없습니다.
18.9.2. ClusterUpgradeGroup CR을 수정할 수 없습니다.
- 문제
-
업데이트를 활성화한 후에는
ClusterUpgradeGroup
CR을 편집할 수 없습니다. - 해결
다음 단계를 수행하여 절차를 다시 시작하십시오.
다음 명령을 실행하여 이전
ClusterGroupUpgrade
CR을 제거합니다.$ oc delete cgu -n <ClusterGroupUpgradeCR_namespace> <ClusterGroupUpgradeCR_name>
관리 클러스터 및 정책의 기존 문제를 확인하고 수정합니다.
- 모든 클러스터가 관리 클러스터이고 사용 가능한지 확인합니다.
-
모든 정책이 존재하고
spec.remediationAction
필드가inform
로 설정되어 있는지 확인합니다.
올바른 구성으로 새
ClusterGroupUpgrade
CR을 생성합니다.$ oc apply -f <ClusterGroupUpgradeCR_YAML>
18.9.3. 관리형 정책
시스템에서 관리 정책 확인
- 문제
- 시스템에 올바른 관리 정책이 있는지 확인하려고 합니다.
- 해결
다음 명령을 실행합니다.
$ oc get cgu lab-upgrade -ojsonpath='{.spec.managedPolicies}'
출력 예
["group-du-sno-validator-du-validator-policy", "policy2-common-nto-sub-policy", "policy3-common-ptp-sub-policy"]
수정 모드 확인
- 문제
-
관리 정책의
사양
을알리기
위해remediationAction
필드가 설정되어 있는지 확인하려고 합니다. - 해결
다음 명령을 실행합니다.
$ oc get policies --all-namespaces
출력 예
NAMESPACE NAME REMEDIATION ACTION COMPLIANCE STATE AGE default policy1-common-cluster-version-policy inform NonCompliant 5d21h default policy2-common-nto-sub-policy inform Compliant 5d21h default policy3-common-ptp-sub-policy inform NonCompliant 5d21h default policy4-common-sriov-sub-policy inform NonCompliant 5d21h
정책 규정 준수 상태 확인
- 문제
- 정책의 규정 준수 상태를 확인하려고 합니다.
- 해결
다음 명령을 실행합니다.
$ oc get policies --all-namespaces
출력 예
NAMESPACE NAME REMEDIATION ACTION COMPLIANCE STATE AGE default policy1-common-cluster-version-policy inform NonCompliant 5d21h default policy2-common-nto-sub-policy inform Compliant 5d21h default policy3-common-ptp-sub-policy inform NonCompliant 5d21h default policy4-common-sriov-sub-policy inform NonCompliant 5d21h
18.9.4. 클러스터
관리 클러스터가 있는지 확인
- 문제
-
ClusterGroupUpgrade
CR의 클러스터가 관리 클러스터인지 확인하려고 합니다. - 해결
다음 명령을 실행합니다.
$ oc get managedclusters
출력 예
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE local-cluster true https://api.hub.example.com:6443 True Unknown 13d spoke1 true https://api.spoke1.example.com:6443 True True 13d spoke3 true https://api.spoke3.example.com:6443 True True 27h
또는 TALM 관리자 로그를 확인합니다.
다음 명령을 실행하여 TALM 관리자의 이름을 가져옵니다.
$ oc get pod -n openshift-operators
출력 예
NAME READY STATUS RESTARTS AGE cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp 2/2 Running 0 45m
다음 명령을 실행하여 TALM 관리자 로그를 확인합니다.
$ oc logs -n openshift-operators \ cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp -c manager
출력 예
ERROR controller-runtime.manager.controller.clustergroupupgrade Reconciler error {"reconciler group": "ran.openshift.io", "reconciler kind": "ClusterGroupUpgrade", "name": "lab-upgrade", "namespace": "default", "error": "Cluster spoke5555 is not a ManagedCluster"} 1 sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
- 1
- 오류 메시지는 클러스터가 관리 클러스터가 아님을 나타냅니다.
관리 클러스터를 사용할 수 있는지 확인
- 문제
-
ClusterGroupUpgrade
CR에 지정된 관리 클러스터를 사용할 수 있는지 확인하려고 합니다. - 해결
다음 명령을 실행합니다.
$ oc get managedclusters
출력 예
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE local-cluster true https://api.hub.testlab.com:6443 True Unknown 13d spoke1 true https://api.spoke1.testlab.com:6443 True True 13d 1 spoke3 true https://api.spoke3.testlab.com:6443 True True 27h 2
clusterSelector 확인
- 문제
-
관리 클러스터 중 하나 이상에서
clusterSelector
필드가ClusterGroupUpgrade
CR에 지정되어 있는지 확인하려고 합니다. - 해결
다음 명령을 실행합니다.
$ oc get managedcluster --selector=upgrade=true 1
- 1
- 업데이트하려는 클러스터의 레이블은
upgrade:true
입니다.
출력 예
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE spoke1 true https://api.spoke1.testlab.com:6443 True True 13d spoke3 true https://api.spoke3.testlab.com:6443 True True 27h
카나리아 클러스터가 있는지 확인
- 문제
클러스터 목록에 카나리아 클러스터가 있는지 확인하려고 합니다.
ClusterGroupUpgrade
CR의 예spec: clusters: - spoke1 - spoke3 clusterSelector: - upgrade2=true remediationStrategy: canaries: - spoke3 maxConcurrency: 2 timeout: 240
- 해결
다음 명령을 실행합니다.
$ oc get cgu lab-upgrade -ojsonpath='{.spec.clusters}'
출력 예
["spoke1", "spoke3"]
다음 명령을 실행하여
clusterSelector
레이블과 일치하는 클러스터 목록에 카나리아 클러스터가 있는지 확인합니다.$ oc get managedcluster --selector=upgrade=true
출력 예
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE spoke1 true https://api.spoke1.testlab.com:6443 True True 13d spoke3 true https://api.spoke3.testlab.com:6443 True True 27h
클러스터는 spec.clusters
에 있을 수 있으며 spec.clusterSelecter
레이블과 일치시킬 수도 있습니다.
스포크 클러스터에서 사전 캐싱 상태 확인
스포크 클러스터에서 다음 명령을 실행하여 사전 캐싱의 상태를 확인합니다.
$ oc get jobs,pods -n openshift-talo-pre-cache
18.9.5. 수정 전략
ClusterGroupUpgrade CR에 remediationStrategy가 있는지 확인
- 문제
-
ClusterGroupUpgrade
CR에remediationStrategy
가 있는지 확인하려고 합니다. - 해결
다음 명령을 실행합니다.
$ oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy}'
출력 예
{"maxConcurrency":2, "timeout":240}
ClusterGroupUpgrade CR에 maxConcurrency가 지정되었는지 확인
- 문제
-
maxConcurrency
가ClusterGroupUpgrade
CR에 지정되어 있는지 확인하려고 합니다. - 해결
다음 명령을 실행합니다.
$ oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy.maxConcurrency}'
출력 예
2
18.9.6. 토폴로지 수명 주기 관리자
ClusterGroupUpgrade CR에서 조건 메시지 및 상태 확인
- 문제
-
ClusterGroupUpgrade
CR에서status.conditions
필드 값을 확인하려고 합니다. - 해결
다음 명령을 실행합니다.
$ oc get cgu lab-upgrade -ojsonpath='{.status.conditions}'
출력 예
{"lastTransitionTime":"2022-02-17T22:25:28Z", "message":"The ClusterGroupUpgrade CR has managed policies that are missing:[policyThatDoesntExist]", "reason":"UpgradeCannotStart", "status":"False", "type":"Ready"}
복사된 정책 확인
- 문제
-
status.managedPoliciesForUpgrade
의 모든 정책에 해당 정책이status.copiedPolicies
에 있는지 확인하려고 합니다. - 해결
다음 명령을 실행합니다.
$ oc get cgu lab-upgrade -oyaml
출력 예
status: … copiedPolicies: - lab-upgrade-policy3-common-ptp-sub-policy managedPoliciesForUpgrade: - name: policy3-common-ptp-sub-policy namespace: default
status.remediationPlan이 계산되었는지 확인
- 문제
-
status.remediationPlan
이 계산되었는지 확인하려고 합니다. - 해결
다음 명령을 실행합니다.
$ oc get cgu lab-upgrade -ojsonpath='{.status.remediationPlan}'
출력 예
[["spoke2", "spoke3"]]
TALM 관리자 컨테이너의 오류
- 문제
- TALM의 관리자 컨테이너의 로그를 확인하려고 합니다.
- 해결
다음 명령을 실행합니다.
$ oc logs -n openshift-operators \ cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp -c manager
출력 예
ERROR controller-runtime.manager.controller.clustergroupupgrade Reconciler error {"reconciler group": "ran.openshift.io", "reconciler kind": "ClusterGroupUpgrade", "name": "lab-upgrade", "namespace": "default", "error": "Cluster spoke5555 is not a ManagedCluster"} 1 sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
- 1
- 오류를 표시합니다.
추가 리소스
- 문제 해결에 대한 자세한 내용은 OpenShift Container Platform Troubleshooting Operator 문제 해결을 참조하십시오.
- ZTP 워크플로에서 토폴로지 Aware Lifecycle Manager를 사용하는 방법에 대한 자세한 내용은 토폴로지 Aware Lifecycle Manager를 사용하여 관리되는 정책 업데이트를 참조하십시오.
-
PolicyGenTemplate
CRD에 대한 자세한 내용은 PolicyGenTemplate CRD정보를 참조하십시오.