검색

11.9. 토폴로지 인식 라이프사이클 관리자 문제 해결

download PDF

Topology Aware Lifecycle Manager (TALM)는 RHACM 정책을 수정하는 OpenShift Container Platform Operator입니다. 문제가 발생하면 oc adm must-gather 명령을 사용하여 세부 정보 및 로그를 수집하고 문제를 디버깅하는 단계를 수행합니다.

관련 항목에 대한 자세한 내용은 다음 설명서를 참조하십시오.

11.9.1. 일반 문제 해결

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

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

  1. spec.enable 필드가 false 로 설정된 ClusterGroupUpgrade CR을 생성합니다.
  2. 상태가 업데이트될 때까지 기다린 후 문제 해결 질문을 진행합니다.
  3. 모든 항목이 예상대로 표시되면 ClusterGroupUpgrade CR에서 spec.enable 필드를 true 로 설정합니다.
주의

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

11.9.2. ClusterUpgradeGroup CR을 수정할 수 없음

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

다음 단계를 수행하여 절차를 다시 시작합니다.

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

    $ oc delete cgu -n <ClusterGroupUpgradeCR_namespace> <ClusterGroupUpgradeCR_name>
  2. 관리 클러스터 및 정책의 기존 문제를 확인하고 수정합니다.

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

    $ oc apply -f <ClusterGroupUpgradeCR_YAML>

11.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

11.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

  1. 또는 TALM 관리자 로그를 확인합니다.

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

      $ oc get pod -n openshift-operators

      출력 예

      NAME                                                         READY   STATUS    RESTARTS   AGE
      cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp   2/2     Running   0          45m

    2. 다음 명령을 실행하여 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

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

다음 명령을 실행합니다.

$ 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:
    remediationStrategy:
        canaries:
        - spoke3
        maxConcurrency: 2
        timeout: 240
    clusterLabelSelectors:
      - matchLabels:
          upgrade: true

해결

다음 명령을 실행합니다.

$ oc get cgu lab-upgrade -ojsonpath='{.spec.clusters}'

출력 예

["spoke1", "spoke3"]

  1. 다음 명령을 실행하여 카나리아 클러스터가 clusterLabelSelector 라벨과 일치하는 클러스터 목록에 있는지 확인합니다.

    $ 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.clusterLabelSelector 라벨과 일치할 수도 있습니다.

spoke 클러스터에서 사전 캐싱 상태 확인
  1. spoke 클러스터에서 다음 명령을 실행하여 사전 캐싱 상태를 확인합니다.

    $ oc get jobs,pods -n openshift-talo-pre-cache

11.9.5. 수정 전략

ClusterGroupUpgrade CR에 remediationStrategy가 있는지 확인
문제
remediationStrategyClusterGroupUpgrade CR에 있는지 확인하려고 합니다.
해결

다음 명령을 실행합니다.

$ oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy}'

출력 예

{"maxConcurrency":2, "timeout":240}

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

다음 명령을 실행합니다.

$ oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy.maxConcurrency}'

출력 예

2

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

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

다음 명령을 실행합니다.

$ oc get cgu lab-upgrade -ojsonpath='{.status.conditions}'

출력 예

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

복사된 해당 정책 확인
문제
status.managedPoliciesForUpgrade 의 모든 정책에 status.copiedPolicies.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의 manager 컨테이너의 로그를 확인하려고 합니다.
해결

다음 명령을 실행합니다.

$ 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이 완료된 후 일부 정책을 준수하지 않는 클러스터
문제

TALM이 사용하는 정책 준수 상태는 모든 클러스터에 대해 수정이 아직 완전히 업데이트되지 않았는지 여부를 결정하는 데 사용합니다. 그 이유는 다음과 같습니다.

  • 정책을 만들거나 업데이트한 후 CGU가 너무 빨리 실행되었습니다.
  • 정책을 수정하면 ClusterGroupUpgrade CR의 후속 정책 준수에 영향을 미칩니다.
해결
동일한 사양으로 새 ClusterGroupUpdate CR을 생성하고 적용합니다.
GitOps ZTP 워크플로의 자동 생성된 ClusterGroupUpgrade CR에는 관리 정책이 없습니다.
문제
클러스터가 Ready 가 될 때 관리 클러스터에 대한 정책이 없는 경우 정책이 자동으로 생성되지 않은 ClusterGroupUpgrade CR이 있습니다. ClusterGroupUpgrade CR이 완료되면 관리 클러스터에 ztp-done 이라는 레이블이 지정됩니다. SiteConfig 리소스를 푸시한 후 필요한 시간 내에 PolicyGenTemplate CR이 Git 리포지토리로 푸시되지 않은 경우 클러스터가 Ready 상태가 되면 대상 클러스터에 정책을 사용할 수 없을 수 있습니다.
해결
적용할 정책을 hub 클러스터에서 사용할 수 있는지 확인한 다음 필요한 정책을 사용하여 ClusterGroupUpgrade CR을 생성합니다.

ClusterGroupUpgrade CR을 수동으로 생성하거나 자동 생성을 다시 트리거할 수 있습니다. ClusterGroupUpgrade CR의 자동 생성을 트리거하려면 클러스터에서 ztp-done 레이블을 제거하고 zip-install 네임스페이스에서 이전에 생성된 비어 있는 ClusterGroupUpgrade CR을 삭제합니다.

사전 캐싱 실패
문제

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

  • 노드에 사용 가능한 공간이 충분하지 않습니다.
  • 연결이 끊긴 환경의 경우 사전 캐시 이미지가 올바르게 미러링되지 않았습니다.
  • Pod를 생성할 때 문제가 발생했습니다.
해결
  1. 공간이 부족하여 사전 캐싱이 실패했는지 확인하려면 노드에서 사전 캐싱 Pod의 로그를 확인합니다.

    1. 다음 명령을 사용하여 Pod 이름을 찾습니다.

      $ oc get pods -n openshift-talo-pre-cache
    2. 다음 명령을 사용하여 로그에서 오류가 충분하지 않은 공간과 관련이 있는지 확인합니다.

      $ oc logs -n openshift-talo-pre-cache <pod name>
  2. 로그가 없는 경우 다음 명령을 사용하여 Pod 상태를 확인합니다.

    $ oc describe pod -n openshift-talo-pre-cache <pod name>
  3. Pod가 없는 경우 작업 상태를 확인하여 다음 명령을 사용하여 Pod를 생성할 수 없는 이유를 확인합니다.

    $ oc describe job -n openshift-talo-pre-cache pre-cache

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.