12.8. Topology Aware Lifecycle Manager 문제 해결
TALM(Topology Aware Lifecycle Manager)은 RHACM 정책을 수정하는 OpenShift 컨테이너 플랫폼 운영자입니다. 문제가 발생하면 oc adm must-gather
명령을 사용하여 세부 정보와 로그를 수집하고 문제 디버깅 단계를 수행합니다.
관련 주제에 대한 자세한 내용은 다음 문서를 참조하세요.
12.8.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
필드를 편집할 수 없습니다.
12.8.2. ClusterUpgradeGroup CR을 수정할 수 없습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- 문제
-
업데이트를 활성화한 후에는
ClusterUpgradeGroup
CR을 편집할 수 없습니다. - 해결
다음 단계를 수행하여 절차를 다시 시작하세요.
다음 명령을 실행하여 이전
ClusterGroupUpgrade
CR을 제거합니다.oc delete cgu -n <ClusterGroupUpgradeCR_namespace> <ClusterGroupUpgradeCR_name>
$ oc delete cgu -n <ClusterGroupUpgradeCR_namespace> <ClusterGroupUpgradeCR_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 관리되는 클러스터와 정책의 기존 문제를 확인하고 수정합니다.
- 모든 클러스터가 관리되는 클러스터이고 사용 가능한지 확인하세요.
-
모든 정책이 존재하는지 확인하고
spec.remediationAction
필드가inform
으로 설정되어 있는지 확인하세요.
올바른 구성으로 새
ClusterGroupUpgrade
CR을 만듭니다.oc apply -f <ClusterGroupUpgradeCR_YAML>
$ oc apply -f <ClusterGroupUpgradeCR_YAML>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.8.3. 관리되는 정책 링크 복사링크가 클립보드에 복사되었습니다!
시스템에서 관리되는 정책 확인
- 문제
- 시스템에 올바른 관리 정책이 있는지 확인하고 싶습니다.
- 해결
다음 명령을 실행합니다.
oc get cgu lab-upgrade -ojsonpath='{.spec.managedPolicies}'
$ oc get cgu lab-upgrade -ojsonpath='{.spec.managedPolicies}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
["group-du-sno-validator-du-validator-policy", "policy2-common-nto-sub-policy", "policy3-common-ptp-sub-policy"]
["group-du-sno-validator-du-validator-policy", "policy2-common-nto-sub-policy", "policy3-common-ptp-sub-policy"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
수정 작업 모드 확인
- 문제
-
관리되는 정책의
사양
에서remediationAction
필드가inform
으로 설정되어 있는지 확인하고 싶습니다. - 해결
다음 명령을 실행합니다.
oc get policies --all-namespaces
$ oc get policies --all-namespaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
정책 준수 상태 확인
- 문제
- 정책의 규정 준수 상태를 확인하려고 합니다.
- 해결
다음 명령을 실행합니다.
oc get policies --all-namespaces
$ oc get policies --all-namespaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.8.4. 클러스터 링크 복사링크가 클립보드에 복사되었습니다!
관리되는 클러스터가 있는지 확인
- 문제
-
ClusterGroupUpgrade
CR의 클러스터가 관리되는 클러스터인지 확인하고 싶습니다. - 해결
다음 명령을 실행합니다.
oc get managedclusters
$ oc get managedclusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또는 TALM 관리자 로그를 확인하세요.
다음 명령을 실행하여 TALM 관리자의 이름을 가져옵니다.
oc get pod -n openshift-operators
$ oc get pod -n openshift-operators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp 2/2 Running 0 45m
NAME READY STATUS RESTARTS AGE cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp 2/2 Running 0 45m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 TALM 관리자 로그를 확인하세요.
oc logs -n openshift-operators \ cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp -c manager
$ oc logs -n openshift-operators \ cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp -c manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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"} sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 오류 메시지는 클러스터가 관리되는 클러스터가 아니라는 것을 보여줍니다.
관리되는 클러스터가 사용 가능한지 확인
- 문제
-
ClusterGroupUpgrade
CR에 지정된 관리 클러스터를 사용할 수 있는지 확인하고 싶습니다. - 해결
다음 명령을 실행합니다.
oc get managedclusters
$ oc get managedclusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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 spoke3 true https://api.spoke3.testlab.com:6443 True True 27h
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 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
clusterLabelSelector 확인
- 문제
-
ClusterGroupUpgrade
CR에 지정된clusterLabelSelector
필드가 관리되는 클러스터 중 하나 이상과 일치하는지 확인하려고 합니다. - 해결
다음 명령을 실행합니다.
oc get managedcluster --selector=upgrade=true
$ oc get managedcluster --selector=upgrade=true
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
카나리아 클러스터가 있는지 확인
- 문제
카나리아 클러스터가 클러스터 목록에 있는지 확인하고 싶습니다.
ClusterGroupUpgrade
CR 예제Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 해결
다음 명령을 실행하세요.
oc get cgu lab-upgrade -ojsonpath='{.spec.clusters}'
$ oc get cgu lab-upgrade -ojsonpath='{.spec.clusters}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
["spoke1", "spoke3"]
["spoke1", "spoke3"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
clusterLabelSelector
레이블과 일치하는 클러스터 목록에 카나리아 클러스터가 있는지 확인하세요.oc get managedcluster --selector=upgrade=true
$ oc get managedcluster --selector=upgrade=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
클러스터는 spec.clusters
에 존재할 수 있으며 spec.clusterLabelSelector
레이블과 일치할 수도 있습니다.
스포크 클러스터의 사전 캐싱 상태 확인
스포크 클러스터에서 다음 명령을 실행하여 사전 캐싱 상태를 확인하세요.
oc get jobs,pods -n openshift-talo-pre-cache
$ oc get jobs,pods -n openshift-talo-pre-cache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.8.5. 교정 전략 링크 복사링크가 클립보드에 복사되었습니다!
ClusterGroupUpgrade CR에 remediationStrategy가 있는지 확인
- 문제
-
ClusterGroupUpgrade
CR에remediationStrategy
가 있는지 확인하고 싶습니다. - 해결
다음 명령을 실행합니다.
oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy}'
$ oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
{"maxConcurrency":2, "timeout":240}
{"maxConcurrency":2, "timeout":240}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ClusterGroupUpgrade CR에 maxConcurrency가 지정되었는지 확인
- 문제
-
ClusterGroupUpgrade
CR에maxConcurrency
가 지정되어 있는지 확인하고 싶습니다. - 해결
다음 명령을 실행합니다.
oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy.maxConcurrency}'
$ oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy.maxConcurrency}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
2
2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.8.6. 토폴로지 인식 라이프사이클 관리자 링크 복사링크가 클립보드에 복사되었습니다!
ClusterGroupUpgrade CR에서 조건 메시지 및 상태 확인
- 문제
-
ClusterGroupUpgrade
CR의status.conditions
필드 값을 확인하고 싶습니다. - 해결
다음 명령을 실행합니다.
oc get cgu lab-upgrade -ojsonpath='{.status.conditions}'
$ oc get cgu lab-upgrade -ojsonpath='{.status.conditions}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
{"lastTransitionTime":"2022-02-17T22:25:28Z", "message":"Missing managed policies:[policyList]", "reason":"NotAllManagedPoliciesExist", "status":"False", "type":"Validated"}
{"lastTransitionTime":"2022-02-17T22:25:28Z", "message":"Missing managed policies:[policyList]", "reason":"NotAllManagedPoliciesExist", "status":"False", "type":"Validated"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
status.remediationPlan이 계산되었는지 확인
- 문제
-
status.remediationPlan
이 계산되었는지 확인하고 싶습니다. - 해결
다음 명령을 실행합니다.
oc get cgu lab-upgrade -ojsonpath='{.status.remediationPlan}'
$ oc get cgu lab-upgrade -ojsonpath='{.status.remediationPlan}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
[["spoke2", "spoke3"]]
[["spoke2", "spoke3"]]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
TALM 관리자 컨테이너의 오류
- 문제
- TALM의 관리자 컨테이너 로그를 확인하고 싶습니다.
- 해결
다음 명령을 실행합니다.
oc logs -n openshift-operators \ cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp -c manager
$ oc logs -n openshift-operators \ cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp -c manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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"} sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 오류를 표시합니다.
ClusterGroupUpgrade
CR이 완료된 후 클러스터가 일부 정책을 준수하지 않습니다.
- 문제
TALM이 수정이 필요한지 여부를 결정하는 데 사용하는 정책 준수 상태는 아직 모든 클러스터에 대해 완전히 업데이트되지 않았습니다. 그 이유는 다음과 같습니다.
- 정책이 생성되거나 업데이트된 후 CGU가 너무 빨리 실행되었습니다.
-
정책 수정은
ClusterGroupUpgrade
CR의 후속 정책 준수에 영향을 미칩니다.
- 해결
-
동일한 사양으로 새로운
ClusterGroupUpdate
CR을 만들고 적용합니다.
GitOps ZTP 워크플로에서 자동 생성된 ClusterGroupUpgrade
CR에는 관리되는 정책이 없습니다.
- 문제
-
클러스터가
준비 상태가
될 때 관리되는 클러스터에 대한 정책이 없으면 정책이 없는ClusterGroupUpgrade
CR이 자동으로 생성됩니다.ClusterGroupUpgrade
CR이 완료되면 관리되는 클러스터에ztp-done
이라는 레이블이 지정됩니다.SiteConfig
리소스가 푸시된 후 필요한 시간 내에PolicyGenerator
또는PolicyGenTemplate
CR이 Git 저장소에 푸시되지 않으면 클러스터가Ready 상태가
되었을 때 대상 클러스터에 사용할 수 있는 정책이 없을 수 있습니다. - 해결
-
적용하려는 정책이 허브 클러스터에서 사용 가능한지 확인한 다음, 필요한 정책으로
ClusterGroupUpgrade
CR을 만듭니다.
ClusterGroupUpgrade
CR을 수동으로 생성하거나 자동 생성을 다시 트리거할 수 있습니다. ClusterGroupUpgrade
CR의 자동 생성을 트리거하려면 클러스터에서 ztp-done
레이블을 제거하고 이전에 zip-install
네임스페이스에 생성된 빈 ClusterGroupUpgrade
CR을 삭제합니다.
사전 캐싱에 실패했습니다
- 문제
사전 캐싱은 다음 중 하나의 이유로 실패할 수 있습니다.
- 노드에 사용 가능한 공간이 충분하지 않습니다.
- 연결이 끊긴 환경에서는 사전 캐시 이미지가 제대로 미러링되지 않았습니다.
- 포드를 생성하는 중에 문제가 발생했습니다.
- 해결
사전 캐싱이 공간 부족으로 인해 실패했는지 확인하려면 노드의 사전 캐싱 포드 로그를 확인하세요.
다음 명령을 사용하여 포드의 이름을 찾으세요.
oc get pods -n openshift-talo-pre-cache
$ oc get pods -n openshift-talo-pre-cache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 사용하여 오류가 공간 부족과 관련이 있는지 로그를 확인하세요.
oc logs -n openshift-talo-pre-cache <pod name>
$ oc logs -n openshift-talo-pre-cache <pod name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
로그가 없으면 다음 명령을 사용하여 Pod 상태를 확인하세요.
oc describe pod -n openshift-talo-pre-cache <pod name>
$ oc describe pod -n openshift-talo-pre-cache <pod name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 포드가 존재하지 않으면 다음 명령을 사용하여 작업 상태를 확인하여 포드를 생성할 수 없는 이유를 알아보세요.
oc describe job -n openshift-talo-pre-cache pre-cache
$ oc describe job -n openshift-talo-pre-cache pre-cache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
관리형 클러스터가 사용 가능해지기 전에 일치하는 정책 및 ManagedCluster
CR
- 문제
- 관리형 클러스터가 사용 가능해지기 전에 RHACM이 정책과 관리형 클러스터를 일치시키도록 해야 합니다.
- 해결
TALM이
ClusterGroupUpgrade
(CGU) CR의spec.managedPolicies
필드에 지정된 RHACM 정책을 올바르게 적용하도록 하려면 TALM이 관리형 클러스터를 사용할 수 있기 전에 이러한 정책을 관리형 클러스터와 일치시켜야 합니다. RHACMPolicyGenerator는
생성된배치
CR을 사용하여 이를 자동으로 수행합니다. 기본적으로 이배치
CR에는 적절한 TALM 동작을 보장하는 데 필요한 허용 범위가 포함되어 있습니다.배치
CR에서 예상되는spec.tolerations
설정은 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHACM
PolicyGenerator
에서 생성된 CR 대신 사용자 지정배치
CR을 사용하는 경우 해당배치
CR에 이러한 허용 범위를 포함합니다.RHACM 배치에 대한 자세한 내용은 배치 개요를 참조하세요.
RHACM의 허용 오차에 대한 자세한 내용은 테인트 및 허용 오차를 사용하여 관리 클러스터 배치를 참조하십시오.