12.8. Topology Aware Lifecycle Manager 문제 해결


TALM(Topology Aware Lifecycle Manager)은 RHACM 정책을 수정하는 OpenShift 컨테이너 플랫폼 운영자입니다. 문제가 발생하면 oc adm must-gather 명령을 사용하여 세부 정보와 로그를 수집하고 문제 디버깅 단계를 수행합니다.

관련 주제에 대한 자세한 내용은 다음 문서를 참조하세요.

12.8.1. 일반 문제 해결

다음 질문을 검토하여 문제의 원인을 파악할 수 있습니다.

ClusterGroupUpgrade 구성이 작동하는지 확인하려면 다음을 수행할 수 있습니다.

  1. spec.enable 필드를 false 로 설정하여 ClusterGroupUpgrade CR을 만듭니다.
  2. 상태가 업데이트될 때까지 기다렸다가 문제 해결 질문을 살펴보세요.
  3. 모든 것이 예상대로라면 ClusterGroupUpgrade CR에서 spec.enable 필드를 true 로 설정합니다.
주의

ClusterUpgradeGroup CR에서 spec.enable 필드를 true 로 설정하면 업데이트 절차가 시작되고 더 이상 CR의 spec 필드를 편집할 수 없습니다.

12.8.2. ClusterUpgradeGroup CR을 수정할 수 없습니다.

문제
업데이트를 활성화한 후에는 ClusterUpgradeGroup CR을 편집할 수 없습니다.
해결

다음 단계를 수행하여 절차를 다시 시작하세요.

  1. 다음 명령을 실행하여 이전 ClusterGroupUpgrade CR을 제거합니다.

    $ oc delete cgu -n <ClusterGroupUpgradeCR_namespace> <ClusterGroupUpgradeCR_name>
    Copy to Clipboard Toggle word wrap
  2. 관리되는 클러스터와 정책의 기존 문제를 확인하고 수정합니다.

    1. 모든 클러스터가 관리되는 클러스터이고 사용 가능한지 확인하세요.
    2. 모든 정책이 존재하는지 확인하고 spec.remediationAction 필드가 inform 으로 설정되어 있는지 확인하세요.
  3. 올바른 구성으로 새 ClusterGroupUpgrade CR을 만듭니다.

    $ oc apply -f <ClusterGroupUpgradeCR_YAML>
    Copy to Clipboard Toggle word wrap

12.8.3. 관리되는 정책

시스템에서 관리되는 정책 확인

문제
시스템에 올바른 관리 정책이 있는지 확인하고 싶습니다.
해결

다음 명령을 실행합니다.

$ oc get cgu lab-upgrade -ojsonpath='{.spec.managedPolicies}'
Copy to Clipboard Toggle word wrap

출력 예

["group-du-sno-validator-du-validator-policy", "policy2-common-nto-sub-policy", "policy3-common-ptp-sub-policy"]
Copy to Clipboard Toggle word wrap

수정 작업 모드 확인

문제
관리되는 정책의 사양 에서 remediationAction 필드가 inform 으로 설정되어 있는지 확인하고 싶습니다.
해결

다음 명령을 실행합니다.

$ oc get policies --all-namespaces
Copy to Clipboard Toggle word wrap

출력 예

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 Toggle word wrap

정책 준수 상태 확인

문제
정책의 규정 준수 상태를 확인하려고 합니다.
해결

다음 명령을 실행합니다.

$ oc get policies --all-namespaces
Copy to Clipboard Toggle word wrap

출력 예

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 Toggle word wrap

12.8.4. 클러스터

관리되는 클러스터가 있는지 확인
문제
ClusterGroupUpgrade CR의 클러스터가 관리되는 클러스터인지 확인하고 싶습니다.
해결

다음 명령을 실행합니다.

$ oc get managedclusters
Copy to Clipboard Toggle word wrap

출력 예

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 Toggle word wrap

  1. 또는 TALM 관리자 로그를 확인하세요.

    1. 다음 명령을 실행하여 TALM 관리자의 이름을 가져옵니다.

      $ oc get pod -n openshift-operators
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME                                                         READY   STATUS    RESTARTS   AGE
      cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp   2/2     Running   0          45m
      Copy to Clipboard Toggle word wrap

    2. 다음 명령을 실행하여 TALM 관리자 로그를 확인하세요.

      $ oc logs -n openshift-operators \
      cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp -c manager
      Copy to Clipboard Toggle word wrap

      출력 예

      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 Toggle word wrap

      1
      오류 메시지는 클러스터가 관리되는 클러스터가 아니라는 것을 보여줍니다.
관리되는 클러스터가 사용 가능한지 확인
문제
ClusterGroupUpgrade CR에 지정된 관리 클러스터를 사용할 수 있는지 확인하고 싶습니다.
해결

다음 명령을 실행합니다.

$ oc get managedclusters
Copy to Clipboard Toggle word wrap

출력 예

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 Toggle word wrap

1 2
관리되는 클러스터의 경우 AVAILABLE 필드의 값은 True 입니다.
clusterLabelSelector 확인
문제
ClusterGroupUpgrade CR에 지정된 clusterLabelSelector 필드가 관리되는 클러스터 중 하나 이상과 일치하는지 확인하려고 합니다.
해결

다음 명령을 실행합니다.

$ oc get managedcluster --selector=upgrade=true 
1
Copy to Clipboard Toggle word wrap
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
Copy to Clipboard Toggle word wrap

카나리아 클러스터가 있는지 확인
문제

카나리아 클러스터가 클러스터 목록에 있는지 확인하고 싶습니다.

ClusterGroupUpgrade CR 예제

spec:
    remediationStrategy:
        canaries:
        - spoke3
        maxConcurrency: 2
        timeout: 240
    clusterLabelSelectors:
      - matchLabels:
          upgrade: true
Copy to Clipboard Toggle word wrap

해결

다음 명령을 실행하세요.

$ oc get cgu lab-upgrade -ojsonpath='{.spec.clusters}'
Copy to Clipboard Toggle word wrap

출력 예

["spoke1", "spoke3"]
Copy to Clipboard Toggle word wrap

  1. 다음 명령을 실행하여 clusterLabelSelector 레이블과 일치하는 클러스터 목록에 카나리아 클러스터가 있는지 확인하세요.

    $ oc get managedcluster --selector=upgrade=true
    Copy to Clipboard Toggle word wrap

    출력 예

    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 Toggle word wrap

참고

클러스터는 spec.clusters 에 존재할 수 있으며 spec.clusterLabelSelector 레이블과 일치할 수도 있습니다.

스포크 클러스터의 사전 캐싱 상태 확인
  1. 스포크 클러스터에서 다음 명령을 실행하여 사전 캐싱 상태를 확인하세요.

    $ oc get jobs,pods -n openshift-talo-pre-cache
    Copy to Clipboard Toggle word wrap

12.8.5. 교정 전략

ClusterGroupUpgrade CR에 remediationStrategy가 있는지 확인
문제
ClusterGroupUpgrade CR에 remediationStrategy 가 있는지 확인하고 싶습니다.
해결

다음 명령을 실행합니다.

$ oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy}'
Copy to Clipboard Toggle word wrap

출력 예

{"maxConcurrency":2, "timeout":240}
Copy to Clipboard Toggle word wrap

ClusterGroupUpgrade CR에 maxConcurrency가 지정되었는지 확인
문제
ClusterGroupUpgrade CR에 maxConcurrency 가 지정되어 있는지 확인하고 싶습니다.
해결

다음 명령을 실행합니다.

$ oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy.maxConcurrency}'
Copy to Clipboard Toggle word wrap

출력 예

2
Copy to Clipboard Toggle word wrap

12.8.6. 토폴로지 인식 라이프사이클 관리자

ClusterGroupUpgrade CR에서 조건 메시지 및 상태 확인
문제
ClusterGroupUpgrade CR의 status.conditions 필드 값을 확인하고 싶습니다.
해결

다음 명령을 실행합니다.

$ oc get cgu lab-upgrade -ojsonpath='{.status.conditions}'
Copy to Clipboard Toggle word wrap

출력 예

{"lastTransitionTime":"2022-02-17T22:25:28Z", "message":"Missing managed policies:[policyList]", "reason":"NotAllManagedPoliciesExist", "status":"False", "type":"Validated"}
Copy to Clipboard Toggle word wrap

status.remediationPlan이 계산되었는지 확인
문제
status.remediationPlan 이 계산되었는지 확인하고 싶습니다.
해결

다음 명령을 실행합니다.

$ oc get cgu lab-upgrade -ojsonpath='{.status.remediationPlan}'
Copy to Clipboard Toggle word wrap

출력 예

[["spoke2", "spoke3"]]
Copy to Clipboard Toggle word wrap

TALM 관리자 컨테이너의 오류
문제
TALM의 관리자 컨테이너 로그를 확인하고 싶습니다.
해결

다음 명령을 실행합니다.

$ oc logs -n openshift-operators \
cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp -c manager
Copy to Clipboard Toggle word wrap

출력 예

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 Toggle word wrap

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을 삭제합니다.

사전 캐싱에 실패했습니다
문제

사전 캐싱은 다음 중 하나의 이유로 실패할 수 있습니다.

  • 노드에 사용 가능한 공간이 충분하지 않습니다.
  • 연결이 끊긴 환경에서는 사전 캐시 이미지가 제대로 미러링되지 않았습니다.
  • 포드를 생성하는 중에 문제가 발생했습니다.
해결
  1. 사전 캐싱이 공간 부족으로 인해 실패했는지 확인하려면 노드의 사전 캐싱 포드 로그를 확인하세요.

    1. 다음 명령을 사용하여 포드의 이름을 찾으세요.

      $ oc get pods -n openshift-talo-pre-cache
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 사용하여 오류가 공간 부족과 관련이 있는지 로그를 확인하세요.

      $ oc logs -n openshift-talo-pre-cache <pod name>
      Copy to Clipboard Toggle word wrap
  2. 로그가 없으면 다음 명령을 사용하여 Pod 상태를 확인하세요.

    $ oc describe pod -n openshift-talo-pre-cache <pod name>
    Copy to Clipboard Toggle word wrap
  3. 포드가 존재하지 않으면 다음 명령을 사용하여 작업 상태를 확인하여 포드를 생성할 수 없는 이유를 알아보세요.

    $ oc describe job -n openshift-talo-pre-cache pre-cache
    Copy to Clipboard Toggle word wrap
관리형 클러스터가 사용 가능해지기 전에 일치하는 정책 및 ManagedCluster CR
문제
관리형 클러스터가 사용 가능해지기 전에 RHACM이 정책과 관리형 클러스터를 일치시키도록 해야 합니다.
해결

TALM이 ClusterGroupUpgrade (CGU) CR의 spec.managedPolicies 필드에 지정된 RHACM 정책을 올바르게 적용하도록 하려면 TALM이 관리형 클러스터를 사용할 수 있기 전에 이러한 정책을 관리형 클러스터와 일치시켜야 합니다. RHACM PolicyGenerator는 생성된 배치 CR을 사용하여 이를 자동으로 수행합니다. 기본적으로 이 배치 CR에는 적절한 TALM 동작을 보장하는 데 필요한 허용 범위가 포함되어 있습니다.

배치 CR에서 예상되는 spec.tolerations 설정은 다음과 같습니다.

#…​
  tolerations:
    - key: cluster.open-cluster-management.io/unavailable
     operator: Exists
    - key: cluster.open-cluster-management.io/unreachable
     operator: Exists
#…​
Copy to Clipboard Toggle word wrap

RHACM PolicyGenerator 에서 생성된 CR 대신 사용자 지정 배치 CR을 사용하는 경우 해당 배치 CR에 이러한 허용 범위를 포함합니다.

RHACM 배치에 대한 자세한 내용은 배치 개요를 참조하세요.

RHACM의 허용 오차에 대한 자세한 내용은 테인트 및 허용 오차를 사용하여 관리 클러스터 배치를 참조하십시오.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat