12.8. Topology Aware Lifecycle Manager のトラブルシューティング


Topology Aware Lifecycle Manager (TALM) は、RHACM ポリシーを修復する OpenShift Container Platform Operator です。問題が発生した場合には、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>
  2. マネージドクラスターおよびポリシーに関する既存の問題を確認し、修正します。

    1. すべてのクラスターがマネージドクラスターで、利用可能であることを確認します。
    2. すべてのポリシーが存在し、spec.remediationAction フィールドが inform に設定されていることを確認します。
  3. 正しい設定で新規の ClusterGroupUpgrade CR を作成します。

    $ oc apply -f <ClusterGroupUpgradeCR_YAML>

12.8.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 モードの確認

問題
remediationAction フィールドが、管理ポリシーの specinform に設定されているかどうかを確認する必要があります。
解決方法

以下のコマンドを実行します。

$ 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

12.8.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 フィールドが、マネージドクラスターの少なくとも 1 つと一致するか確認します。
解決方法

以下のコマンドを実行します。

$ 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 ラベルによって一致する場合もあります。

スポーククラスターでの事前キャッシュステータスの確認
  1. スポーククラスターで以下のコマンドを実行して、事前キャッシュのステータスを確認します。

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

12.8.5. 修復ストラテジー

remediationStrategy が ClusterGroupUpgrade CR に存在するかどうかの確認
問題
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

12.8.6. Topology Aware Lifecycle Manager

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.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
エラーを表示します。
ClusterGroupUpgrade CR が完了した後、クラスターが一部のポリシーに準拠していない
問題

修復が必要かどうかを判断するために TALM が使用するポリシーコンプライアンスステータスは、まだすべてのクラスターで完全に更新されていません。これには次の理由が考えられます。

  • ポリシーの作成または更新後、CGU の実行が早すぎました。
  • ポリシーの修復は、ClusterGroupUpgrade CR の後続のポリシーのコンプライアンスに影響します。
解決方法
同じ仕様で新しい ClusterGroupUpdate CR を作成して適用します。
GitOps ZTP ワークフローで自動作成された ClusterGroupUpgrade CR に管理ポリシーがない
問題
クラスターが Ready になったときにマネージドクラスターのポリシーがない場合、ポリシーのない ClusterGroupUpgrade CR が自動作成されます。ClusterGroupUpgrade CR が完了すると、マネージドクラスターには ztp-done というラベルが付けられます。SiteConfig リソースがプッシュされた後、必要な時間内に PolicyGenerator または PolicyGenTemplate CR が Git リポジトリーにプッシュされなかった場合、クラスターが Ready になったときにターゲットクラスターで使用できるポリシーがなくなる可能性があります。
解決方法
適用するポリシーがハブクラスターで使用可能であることを確認してから、必要なポリシーを使用して ClusterGroupUpgrade CR を作成します。

ClusterGroupUpgrade CR を手動で作成するか、自動作成を再度トリガーすることができます。ClusterGroupUpgrade CR の自動作成をトリガーするには、クラスターから ztp-done ラベルを削除し、以前に zip-install namespace で作成された空の 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 では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.