トラブルシューティング
トラブルシューティング
概要
第1章 トラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
トラブルシューティングガイドをご使用の前に oc adm must-gather コマンドを実行して、詳細およびログを収集し、問題のデバッグ手順を行います。詳細は、must-gather コマンドを実行したトラブルシューティング を参照してください。
また、ロールベースのアクセス権限を確認してください。詳細は、ロールベースのアクセス制御 を参照してください。
1.1. 文書化されたトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
以下に、Red Hat Advanced Cluster Management for Kubernetes のトラブルシューティングのトピックリストを表示します。
インストール
インストールタスク関連の主なドキュメントは、インストールとアップグレード です。
バックアップおよび復元
バックアップと復元に関する主なドキュメントは、バックアップと復元 です。
クラスター管理
クラスターの管理に関する主なドキュメントは、Operator クラスターライフサイクルのマルチクラスターエンジンの概要 です。
- オフラインクラスターのトラブルシューティング
- マネージドクラスターのインポート失敗に関するトラブルシューティング
- Pending Import ステータスのクラスターのトラブルシューティング
- 証明書を変更した後のインポート済みクラスターのオフラインでのトラブルシューティング
- クラスターのステータスが offline から available に変わる場合のトラブルシューティング
- VMware vSphere でのクラスター作成のトラブルシューティング
- ステータスが Pending または Failed のクラスターのコンソールでのトラブルシューティング
- OpenShift Container Platform バージョン 3.11 クラスターのインポートの失敗時のトラブルシューティング
- degraded 状態にある Klusterlet のトラブルシューティング
- オブジェクトストレージチャネルシークレットのトラブルシューティング
- クラスターの削除後も namespace が残る
- クラスターのインポート時の auto-import-secret-exists エラー
- VolSync 用の cinder Container Storage Interface (CSI) ドライバーのトラブルシューティング
- アドオン許容を無視するクラスタープロキシーアドオンのトラブルシューティング
Multicluster Global Hub
Multicluster Global Hub に関する主要なドキュメントを表示するには、{global-hub を参照してください。
アプリケーション管理
アプリケーション管理に関する主なドキュメントを表示するには、アプリケーション管理 を参照してください。
ガバナンス
セキュリティーガイドを確認するには、セキュリティーの概要 を参照してください。
コンソールの可観測性
コンソールの可観測性には、ヘッダーおよびナビゲーション機能、検索、および移動機能が含まれます。可観測性ガイドを表示するには、Observability in the console を参照してください。
Submariner のネットワーキングとサービスディスカバリー
このセクションでは、Red Hat Advanced Cluster Management またはマルチクラスターエンジン Operator で Submariner を使用する場合に発生する可能性のある Submariner のトラブルシューティング手順を示します。Submariner の一般的なトラブルシューティング情報は、Submariner のドキュメントの Troubleshooting を参照してください。
Submariner ネットワーキングサービスとサービスディスカバリの主なドキュメントは、Submariner multicluster networking and service discovery です。
1.2. must-gather コマンドを実行したトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
トラブルシューティングを開始するには、問題のデバッグを行う must-gather コマンドを実行する場合のトラブルシューティングシナリオを確認し、このコマンドの使用を開始する手順を参照してください。
必要なアクセス権限: クラスターの管理者
1.2.1. Must-gather のシナリオ リンクのコピーリンクがクリップボードにコピーされました!
シナリオ 1: 文書化されたトラブルシューティング セクションを使用して、問題の解決策がまとめられているかどうかを確認します。このガイドは、製品の主な機能別に設定されています。
このシナリオでは、解決策がこのドキュメントにまとめられているかどうかを、このガイドで確認します。たとえば、クラスターの作成に関するトラブルシューティングの場合は、クラスターの管理 セクションの解決策を探します。
-
シナリオ 2: 問題の解決策の手順が文書にまとめられていない場合は、
must-gatherコマンドを実行し、その出力を使用して問題をデバッグします。 -
シナリオ 3:
must-gatherコマンドの出力を使用して問題をデバッグできない場合は、出力を Red Hat サポートに共有します。
1.2.2. Must-gather の手順 リンクのコピーリンクがクリップボードにコピーされました!
must-gather コマンドの使用を開始するには、以下の手順を参照してください。
-
must-gatherコマンドについて確認し、Red Hat OpenShift Container Platform の クラスターに関するデータの収集 に必要な前提条件をインストールします。 クラスターにログインします。データおよびディレクトリーの収集に使用する Red Hat Advanced Cluster Management for Kubernetes イメージを追加します。以下のコマンドを実行して、出力用にイメージとディレクトリーを挿入します。
oc adm must-gather --image=registry.redhat.io/rhacm2/acm-must-gather-rhel8:v2.9 --dest-dir=<directory>
oc adm must-gather --image=registry.redhat.io/rhacm2/acm-must-gather-rhel8:v2.9 --dest-dir=<directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通常のユースケースでは、ハブ クラスターにログインして、
must-gatherを実行する必要があります。注記: マネージドクラスターを確認する場合は、
cluster-scoped-resourcesディレクトリーにあるgather-managed.logファイルを検索します。<your-directory>/cluster-scoped-resources/gather-managed.log>
<your-directory>/cluster-scoped-resources/gather-managed.log>Copy to Clipboard Copied! Toggle word wrap Toggle overflow JOINED および AVAILABLE 列に
Trueが設定されていないマネージドクラスターがないかを確認します。must-gatherコマンドは、ステータスがTrueとして関連付けられていないクラスター上で、実行できます。指定したディレクトリーに移動し、以下のレベルに整理されている出力を確認します。
-
ピアレベル 2 つ:
cluster-scoped-resourcesとnamespaceのリソース - それぞれに対するサブレベル: クラスタースコープおよび namespace スコープの両方のリソースに対するカスタムリソース定義の API グループ。
-
それぞれに対する次のレベル:
kindでソートされた YAML ファイル
-
ピアレベル 2 つ:
1.2.3. 非接続環境での must-gather リンクのコピーリンクがクリップボードにコピーされました!
非接続環境で must-gather コマンドを実行するには、次の手順を実行します。
- 非接続環境では、Red Hat Operator のカタログイメージをミラーレジストリーにミラーリングします。詳細は、ネットワーク切断状態でのインストール を参照してください。
次のコマンドを実行してすべての情報を収集します。
<2.x>は、<acm-must-gather>(例2.9) と<multicluster-engine/must-gather>(例2.4)の両方でサポートされているバージョンに置き換えます。REGISTRY=<internal.repo.address:port> IMAGE1=$REGISTRY/rhacm2/acm-must-gather-rhel8:v<2.x> oc adm must-gather --image=$IMAGE1 --dest-dir=<directory>
REGISTRY=<internal.repo.address:port> IMAGE1=$REGISTRY/rhacm2/acm-must-gather-rhel8:v<2.x> oc adm must-gather --image=$IMAGE1 --dest-dir=<directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
現在サポートされているリリースのいずれか、製品ドキュメントで問題が発生した場合は、Red Hat サポート にアクセスして、さらにトラブルシューティングを行ったり、ナレッジベースの記事を表示したり、サポートチームに連絡したり、ケースを開いたりすることができます。Red Hat 認証情報でログインする必要があります。
1.2.4. ホステッドクラスターの must-gather リンクのコピーリンクがクリップボードにコピーされました!
Hosted Control Plane クラスターで問題が発生した場合は、must-gather コマンドを実行して、トラブルシューティングに役立つ情報を収集できます。
1.2.4.1. ホステッドクラスターの must-gather コマンドについて リンクのコピーリンクがクリップボードにコピーされました!
このコマンドは、管理クラスターとホストされたクラスターの出力を生成します。
マルチクラスターエンジン Operator ハブクラスターからのデータ:
- クラスタースコープのリソース: これらのリソースは、管理クラスターのノード定義です。
-
hypershift-dump圧縮ファイル: このファイルは、コンテンツを他の人と共有する必要がある場合に役立ちます。 - namespace リソース: これらのリソースには、config map、サービス、イベント、ログなど、関連する namespace のすべてのオブジェクトが含まれます。
- ネットワークログ: これらのログには、OVN ノースバウンドデータベースとサウスバウンドデータベース、およびそれぞれのステータスが含まれます。
- ホストされたクラスター: このレベルの出力には、ホストされたクラスター内のすべてのリソースが含まれます。
ホストされたクラスターからのデータ:
- クラスタースコープのリソース: これらのリソースには、ノードや CRD などのクラスター全体のオブジェクトがすべて含まれます。
- namespace リソース: これらのリソースには、config map、サービス、イベント、ログなど、関連する namespace のすべてのオブジェクトが含まれます。
出力にはクラスターからのシークレットオブジェクトは含まれませんが、シークレットの名前への参照が含まれる可能性があります。
1.2.4.2. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
must-gather コマンドを実行して情報を収集するには、次の前提条件を満たす必要があります。
-
kubeconfigファイルが読み込まれ、マルチクラスターエンジン Operator ハブクラスターを指している。 - マルチクラスターエンジン Operator ハブクラスターへの cluster-admin アクセスがある。
-
HostedClusterリソースの name 値と、カスタムリソースがデプロイされる namespace がある。
1.2.4.3. ホステッドクラスターの must-gather コマンドの入力 リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを入力して、ホステッドクラスターに関する情報を収集します。このコマンドでは、
hosted-cluster-namespace=HOSTEDCLUSTERNAMESPACEパラメーターはオプションです。これを含めない場合、コマンドは、ホストされたクラスターがデフォルトの namespace (clusters) 内にあるかのように実行されます。oc adm must-gather --image=quay.io/stolostron/backplane-must-gather:SNAPSHOTNAME /usr/bin/gather hosted-cluster-namespace=HOSTEDCLUSTERNAMESPACE hosted-cluster-name=HOSTEDCLUSTERNAME
oc adm must-gather --image=quay.io/stolostron/backplane-must-gather:SNAPSHOTNAME /usr/bin/gather hosted-cluster-namespace=HOSTEDCLUSTERNAMESPACE hosted-cluster-name=HOSTEDCLUSTERNAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの結果を圧縮ファイルに保存するには、
--dest-dir=NAMEパラメーターを含めて、NAMEは、結果を保存するディレクトリーの名前に置き換えます。oc adm must-gather --image=quay.io/stolostron/backplane-must-gather:SNAPSHOTNAME /usr/bin/gather hosted-cluster-namespace=HOSTEDCLUSTERNAMESPACE hosted-cluster-name=HOSTEDCLUSTERNAME --dest-dir=NAME ; tar -cvzf NAME.tgz NAME
oc adm must-gather --image=quay.io/stolostron/backplane-must-gather:SNAPSHOTNAME /usr/bin/gather hosted-cluster-namespace=HOSTEDCLUSTERNAMESPACE hosted-cluster-name=HOSTEDCLUSTERNAME --dest-dir=NAME ; tar -cvzf NAME.tgz NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.4.4. 非接続環境での must-gather コマンドの入力 リンクのコピーリンクがクリップボードにコピーされました!
非接続環境で must-gather コマンドを実行するには、次の手順を実行します。
- 非接続環境では、Red Hat Operator のカタログイメージをミラーレジストリーにミラーリングします。詳細は、ネットワーク切断状態でのインストール を参照してください。
次のコマンドを実行して、ミラーレジストリーからイメージを参照するログを抽出します。
REGISTRY=registry.example.com:5000 IMAGE=$REGISTRY/multicluster-engine/must-gather-rhel8@sha256:ff9f37eb400dc1f7d07a9b6f2da9064992934b69847d17f59e385783c071b9d8 oc adm must-gather --image=$IMAGE /usr/bin/gather hosted-cluster-namespace=HOSTEDCLUSTERNAMESPACE hosted-cluster-name=HOSTEDCLUSTERNAME --dest-dir=./data
REGISTRY=registry.example.com:5000 IMAGE=$REGISTRY/multicluster-engine/must-gather-rhel8@sha256:ff9f37eb400dc1f7d07a9b6f2da9064992934b69847d17f59e385783c071b9d8 oc adm must-gather --image=$IMAGE /usr/bin/gather hosted-cluster-namespace=HOSTEDCLUSTERNAMESPACE hosted-cluster-name=HOSTEDCLUSTERNAME --dest-dir=./dataCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.4.5. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Hosted Control Plane のトラブルシューティングの詳細は、OpenShift Container Platform ドキュメントの Hosted Control Plane のトラブルシューティング を参照してください。
1.3. インストールステータスがインストールまたは保留中の状態のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management のインストール時に、MultiClusterHub は Installing フェーズのままとなるか、複数の Pod が Pending ステータスのままとなります。
1.3.1. 現象: Pending 状態で止まる リンクのコピーリンクがクリップボードにコピーされました!
MultiClusterHub をインストールしてから、MultiClusterHub リソースの status.components フィールドからのコンポーネントの 1 つ以上で ProgressDeadlineExceeded と報告したまま 10 分以上経過しています。クラスターのリソース制約が問題となっている場合があります。
Multiclusterhub がインストールされている namespace の Pod を確認します。以下のようなステータスとともに Pending と表示される場合があります。
reason: Unschedulable
message: '0/6 nodes are available: 3 Insufficient cpu, 3 node(s) had taint {node-role.kubernetes.io/master:
}, that the pod didn't tolerate.'
reason: Unschedulable
message: '0/6 nodes are available: 3 Insufficient cpu, 3 node(s) had taint {node-role.kubernetes.io/master:
}, that the pod didn't tolerate.'
このような場合には、ワーカーノードにはクラスターでの製品実行に十分なリソースがありません。
1.3.2. 問題の解決: ワーカーノードのサイズの調整 リンクのコピーリンクがクリップボードにコピーされました!
この問題が発生した場合は、大規模なワーカーノードまたは複数のワーカーノードでクラスターを更新する必要があります。クラスターのサイジングのガイドラインについては、クラスターのサイジング を参照してください。
1.4. 再インストールに失敗する場合のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes を再インストールすると Pod が起動しません。
1.4.1. 現象: 再インストールの失敗 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management のインストール後に Pod が起動しない場合は、Red Hat Advanced Cluster Management 以前にインストールされており、今回のインストールを試行する前にすべてのパーツが削除されていない可能性があります。
Pod はこのような場合に、インストールプロセスの完了後に起動しません。
1.4.2. 問題の解決: 再インストールの失敗 リンクのコピーリンクがクリップボードにコピーされました!
この問題が発生した場合は、以下の手順を実行します。
- アンインストール の手順に従い、現在のコンポーネントを削除し、アンインストールプロセスを実行します。
- Helm のインストール の手順に従い、Helm CLI バイナリーバージョン 3.2.0 以降をインストールします。
-
ocコマンドが実行できるように、Red Hat OpenShift Container Platform CLI が設定されていることを確認してください。ocコマンドの設定方法の詳細は、OpenShift Container Platform ドキュメントの OpenShift CLI スタートガイド を参照してください。 以下のスクリプトをファイルにコピーします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スクリプトの
<namespace>は、Red Hat Advanced Cluster Management がインストールされている namespace 名に置き換えます。namespace が消去され削除されるため、正しい namespace を指定するようにしてください。- スクリプトを実行して、アーティファクトを以前のインストールから削除します。
- インストールを実行します。ネットワーク接続時のオンラインインストール を参照してください。
1.5. Red Hat Advanced Cluster Management のアップグレード後に ocm-controller エラーのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
2.7.x から 2.8.x、さらに 2.9.0 にアップグレードすると、multicluster-engine namespace の ocm-controller がクラッシュします。
1.5.1. 現象: Red Hat Advanced Cluster Management のアップグレード後に ocm-controller エラーのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
ManagedClusterSet および ManagedClusterSetBinding カスタムリソース定義をリスト表示しようとすると、次のエラーメッセージが表示されます。
Error from server: request to convert CR from an invalid group/version: cluster.open-cluster-management.io/v1beta1
Error from server: request to convert CR from an invalid group/version: cluster.open-cluster-management.io/v1beta1
前のメッセージは、v1beta1 から v1beta2 への ManagedClusterSets および ManagedClusterSetBindings カスタムリソース定義の移行が失敗したことを示しています。
1.5.2. 問題の解決: Red Hat Advanced Cluster Management アップグレード後の ocm-controller エラーのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
このエラーを解決するには、API の移行を手動で開始する必要があります。以下の手順を実行します。
cluster-managerを以前のリリースに戻します。以下のコマンドを使用して
multiclusterengineを一時停止します。oc annotate mce multiclusterengine pause=true
oc annotate mce multiclusterengine pause=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、
cluster-managerdeployment のイメージを以前のバージョンに置き換えます。oc patch deployment cluster-manager -n multicluster-engine -p \ '{"spec":{"template":{"spec":{"containers":[{"name":"registration-operator","image":"registry.redhat.io/multicluster-engine/registration-operator-rhel8@sha256:35999c3a1022d908b6fe30aa9b85878e666392dbbd685e9f3edcb83e3336d19f"}]}}}}' export ORIGIN_REGISTRATION_IMAGE=$(oc get clustermanager cluster-manager -o jsonpath='{.spec.registrationImagePullSpec}')oc patch deployment cluster-manager -n multicluster-engine -p \ '{"spec":{"template":{"spec":{"containers":[{"name":"registration-operator","image":"registry.redhat.io/multicluster-engine/registration-operator-rhel8@sha256:35999c3a1022d908b6fe30aa9b85878e666392dbbd685e9f3edcb83e3336d19f"}]}}}}' export ORIGIN_REGISTRATION_IMAGE=$(oc get clustermanager cluster-manager -o jsonpath='{.spec.registrationImagePullSpec}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow ClusterManagerリソースの登録イメージ参照を以前のバージョンに置き換えます。以下のコマンドを実行します。oc patch clustermanager cluster-manager --type='json' -p='[{"op": "replace", "path": "/spec/registrationImagePullSpec", "value": "registry.redhat.io/multicluster-engine/registration-rhel8@sha256:a3c22aa4326859d75986bf24322068f0aff2103cccc06e1001faaf79b9390515"}]'oc patch clustermanager cluster-manager --type='json' -p='[{"op": "replace", "path": "/spec/registrationImagePullSpec", "value": "registry.redhat.io/multicluster-engine/registration-rhel8@sha256:a3c22aa4326859d75986bf24322068f0aff2103cccc06e1001faaf79b9390515"}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下のコマンドを実行して、
ManagedClusterSetsおよびManagedClusterSetBindingsカスタムリソース定義を以前のリリースに戻します。oc annotate crds managedclustersets.cluster.open-cluster-management.io operator.open-cluster-management.io/version- oc annotate crds managedclustersetbindings.cluster.open-cluster-management.io operator.open-cluster-management.io/version-
oc annotate crds managedclustersets.cluster.open-cluster-management.io operator.open-cluster-management.io/version- oc annotate crds managedclustersetbindings.cluster.open-cluster-management.io operator.open-cluster-management.io/version-Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-managerを再起動し、カスタムリソース定義が再作成されるまで待ちます。以下のコマンドを実行します。oc -n multicluster-engine delete pods -l app=cluster-manager oc wait crds managedclustersets.cluster.open-cluster-management.io --for=jsonpath="{.metadata.annotations['operator\.open-cluster-management\.io/version']}"="2.3.3" --timeout=120s oc wait crds managedclustersetbindings.cluster.open-cluster-management.io --for=jsonpath="{.metadata.annotations['operator\.open-cluster-management\.io/version']}"="2.3.3" --timeout=120soc -n multicluster-engine delete pods -l app=cluster-manager oc wait crds managedclustersets.cluster.open-cluster-management.io --for=jsonpath="{.metadata.annotations['operator\.open-cluster-management\.io/version']}"="2.3.3" --timeout=120s oc wait crds managedclustersetbindings.cluster.open-cluster-management.io --for=jsonpath="{.metadata.annotations['operator\.open-cluster-management\.io/version']}"="2.3.3" --timeout=120sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを使用して、ストレージバージョンの移行を開始します。
oc patch StorageVersionMigration managedclustersets.cluster.open-cluster-management.io --type='json' -p='[{"op":"replace", "path":"/spec/resource/version", "value":"v1beta1"}]' oc patch StorageVersionMigration managedclustersets.cluster.open-cluster-management.io --type='json' --subresource status -p='[{"op":"remove", "path":"/status/conditions"}]' oc patch StorageVersionMigration managedclustersetbindings.cluster.open-cluster-management.io --type='json' -p='[{"op":"replace", "path":"/spec/resource/version", "value":"v1beta1"}]' oc patch StorageVersionMigration managedclustersetbindings.cluster.open-cluster-management.io --type='json' --subresource status -p='[{"op":"remove", "path":"/status/conditions"}]'oc patch StorageVersionMigration managedclustersets.cluster.open-cluster-management.io --type='json' -p='[{"op":"replace", "path":"/spec/resource/version", "value":"v1beta1"}]' oc patch StorageVersionMigration managedclustersets.cluster.open-cluster-management.io --type='json' --subresource status -p='[{"op":"remove", "path":"/status/conditions"}]' oc patch StorageVersionMigration managedclustersetbindings.cluster.open-cluster-management.io --type='json' -p='[{"op":"replace", "path":"/spec/resource/version", "value":"v1beta1"}]' oc patch StorageVersionMigration managedclustersetbindings.cluster.open-cluster-management.io --type='json' --subresource status -p='[{"op":"remove", "path":"/status/conditions"}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、移行が完了するまで待ちます。
oc wait storageversionmigration managedclustersets.cluster.open-cluster-management.io --for=condition=Succeeded --timeout=120s oc wait storageversionmigration managedclustersetbindings.cluster.open-cluster-management.io --for=condition=Succeeded --timeout=120s
oc wait storageversionmigration managedclustersets.cluster.open-cluster-management.io --for=condition=Succeeded --timeout=120s oc wait storageversionmigration managedclustersetbindings.cluster.open-cluster-management.io --for=condition=Succeeded --timeout=120sCopy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-managerを Red Hat Advanced Cluster Management 2.9 に復元します。これには数分の時間がかかる場合があります。以下のコマンドを実行します。oc annotate mce multiclusterengine pause- oc patch clustermanager cluster-manager --type='json' -p='[{"op": "replace", "path": "/spec/registrationImagePullSpec", "value": "'$ORIGIN_REGISTRATION_IMAGE'"}]'oc annotate mce multiclusterengine pause- oc patch clustermanager cluster-manager --type='json' -p='[{"op": "replace", "path": "/spec/registrationImagePullSpec", "value": "'$ORIGIN_REGISTRATION_IMAGE'"}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.2.1. 検証 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management が復元されていることを確認するには、以下のコマンドを実行します。
oc get managedclusterset oc get managedclustersetbinding -A
oc get managedclusterset
oc get managedclustersetbinding -A
コマンドを実行すると、ManagedClusterSets および ManagedClusterSetBindings リソースがエラーメッセージなしで表示されます。
1.6. オフラインクラスターのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
クラスターのステータスがオフラインと表示される一般的な原因がいくつかあります。
1.6.1. 現象: クラスターのステータスがオフライン状態である リンクのコピーリンクがクリップボードにコピーされました!
クラスターの作成手順を完了したら、Red Hat Advanced Cluster Management コンソールからアクセスできず、クラスターのステータスが offline と表示されます。
1.6.2. 問題の解決: クラスターのステータスがオフライン状態になっている リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターが利用可能かどうかを確認します。これは、Red Hat Advanced Cluster Management コンソールの Clusters エリアで確認できます。
利用不可の場合は、マネージドクラスターの再起動を試行します。
マネージドクラスターのステータスがオフラインのままの場合は、以下の手順を実行します。
-
ハブクラスターで
oc get managedcluster <cluster_name> -o yamlコマンドを実行します。<cluster_name>は、クラスター名に置き換えます。 -
status.conditionsセクションを見つけます。 -
type: ManagedClusterConditionAvailableのメッセージを確認して、問題を解決します。
-
ハブクラスターで
1.7. マネージドクラスターのインポート失敗に関するトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
クラスターのインポートに失敗した場合は、クラスターのインポートが失敗した理由を判別するためにいくつかの手順を実行できます。
1.7.1. 現象: インポートされたクラスターを利用できない リンクのコピーリンクがクリップボードにコピーされました!
クラスターのインポート手順を完了したら、Red Hat Advanced Cluster Management for Kubernetes コンソールからアクセスできません。
1.7.2. 問題の解決: インポートされたクラスターが利用できない リンクのコピーリンクがクリップボードにコピーされました!
インポートの試行後にインポートクラスターが利用できない場合には、いくつかの理由があります。クラスターのインポートに失敗した場合は、インポートに失敗した理由が見つかるまで以下の手順を実行します。
Red Hat Advanced Cluster Management ハブクラスターで以下のコマンドを実行し、Red Hat Advanced Cluster Management インポートコントローラーが実行していることを確認します。
kubectl -n multicluster-engine get pods -l app=managedcluster-import-controller-v2
kubectl -n multicluster-engine get pods -l app=managedcluster-import-controller-v2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 実行中の Pod が 2 つ表示されるはずです。Pod のいずれかが実行されていない場合には、以下のコマンドを実行してログを表示して理由を判別します。
kubectl -n multicluster-engine logs -l app=managedcluster-import-controller-v2 --tail=-1
kubectl -n multicluster-engine logs -l app=managedcluster-import-controller-v2 --tail=-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Advanced Cluster Management ハブクラスターで以下のコマンドを実行し、Red Hat Advanced Cluster Management インポートコントローラーでマネージドクラスターのインポートシークレットが正常に生成されたかどうかを確認します。
kubectl -n <managed_cluster_name> get secrets <managed_cluster_name>-import
kubectl -n <managed_cluster_name> get secrets <managed_cluster_name>-importCopy to Clipboard Copied! Toggle word wrap Toggle overflow インポートシークレットが存在しない場合は、以下のコマンドを実行してインポートコントローラーのログエントリーを表示し、作成されていない理由を判断します。
kubectl -n multicluster-engine logs -l app=managedcluster-import-controller-v2 --tail=-1 | grep importconfig-controller
kubectl -n multicluster-engine logs -l app=managedcluster-import-controller-v2 --tail=-1 | grep importconfig-controllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Advanced Cluster Management ハブクラスターで、マネージドクラスターが
local-clusterで、Hive によってプロビジョニングされるか、自動インポートシークレットがある場合は、以下のコマンドを実行してマネージドクラスターのインポートステータスを確認します。kubectl get managedcluster <managed_cluster_name> -o=jsonpath='{range .status.conditions[*]}{.type}{"\t"}{.status}{"\t"}{.message}{"\n"}{end}' | grep ManagedClusterImportSucceededkubectl get managedcluster <managed_cluster_name> -o=jsonpath='{range .status.conditions[*]}{.type}{"\t"}{.status}{"\t"}{.message}{"\n"}{end}' | grep ManagedClusterImportSucceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow ManagedClusterImportSucceededがtrueでない場合には、コマンドの結果で失敗の理由が表示されます。- マネージドクラスターの Klusterlet ステータスが degraded 状態でないかを確認します。Klusterlet のパフォーマンスが低下した理由を特定するには、degraded 状態にある Klusterlet のトラブルシューティング を参照してください。
1.8. Pending Import ステータスのクラスターのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
クラスターのコンソールで継続的に Pending import と表示される場合は、以下の手順を実行して問題をトラブルシューティングしてください。
1.8.1. 現象: ステータスが Pending Import クラスター リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management コンソールを使用してクラスターをインポートした後に、コンソールで、クラスターのステータスが Pending import と表示されます。
1.8.2. 問題の特定: ステータスが Pending Import クラスター リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターで以下のコマンドを実行し、問題のある Kubernetes Pod 名を表示します。
kubectl get pod -n open-cluster-management-agent | grep klusterlet-registration-agent
kubectl get pod -n open-cluster-management-agent | grep klusterlet-registration-agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターで以下のコマンドを実行し、エラーのログエントリーを探します。
kubectl logs <registration_agent_pod> -n open-cluster-management-agent
kubectl logs <registration_agent_pod> -n open-cluster-management-agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow registration_agent_pod は、手順 1 で特定した Pod 名に置き換えます。
-
返された結果に、ネットワーク接続の問題があったと示すテキストがないかどうかを検索します。たとえば、
no such hostです。
1.8.3. 問題の解決: ステータスが Pending Import クラスター リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターで以下のコマンドを実行して、問題のあるポート番号を取得します。
oc get infrastructure cluster -o yaml | grep apiServerURL
oc get infrastructure cluster -o yaml | grep apiServerURLCopy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターのホスト名が解決でき、ホストおよびポートへの送信接続が機能していることを確認します。
マネージドクラスターで通信が確立できない場合は、クラスターのインポートが完了していません。マネージドクラスターのクラスターステータスは、Pending import になります。
1.9. クラスターがすでに存在するというエラーのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターを Red Hat Advanced Cluster Management MultiClusterHub にインポートできず、AlreadyExists エラーを受け取る場合は、手順に従って問題をトラブルシューティングします。
1.9.1. 以前の動作: OpenShift Container Platform クラスターをインポートするときにエラーログがすでに存在する リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターを Red Hat Advanced Cluster Management MultiClusterHub にインポートすると、エラーログが表示されます。
1.9.2. 問題の特定: OpenShift Container Platform クラスターのインポート時にすでに存在する リンクのコピーリンクがクリップボードにコピーされました!
以下のコマンドを実行して、新しい Red Hat Advanced Cluster Management MultiClusterHub にインポートする Red Hat Advanced Cluster Management 関連のリソースがクラスター上にあるかどうかを確認します。
oc get all -n open-cluster-management-agent oc get all -n open-cluster-management-agent-addon
oc get all -n open-cluster-management-agent
oc get all -n open-cluster-management-agent-addon
1.9.3. 問題の解決: OpenShift Container Platform クラスターのインポート時にすでに存在する リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを使用して、klusterlet カスタムリソースを削除します。
oc get klusterlet | grep klusterlet | awk '{print $1}' | xargs oc patch klusterlet --type=merge -p '{"metadata":{"finalizers": []}}'
oc get klusterlet | grep klusterlet | awk '{print $1}' | xargs oc patch klusterlet --type=merge -p '{"metadata":{"finalizers": []}}'
次のコマンドを実行して、既存のリソースを削除します。
oc delete namespaces open-cluster-management-agent open-cluster-management-agent-addon --wait=false
oc get crds | grep open-cluster-management.io | awk '{print $1}' | xargs oc delete crds --wait=false
oc get crds | grep open-cluster-management.io | awk '{print $1}' | xargs oc patch crds --type=merge -p '{"metadata":{"finalizers": []}}'
oc delete namespaces open-cluster-management-agent open-cluster-management-agent-addon --wait=false
oc get crds | grep open-cluster-management.io | awk '{print $1}' | xargs oc delete crds --wait=false
oc get crds | grep open-cluster-management.io | awk '{print $1}' | xargs oc patch crds --type=merge -p '{"metadata":{"finalizers": []}}'
1.10. VMware vSphere でのクラスター作成のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
VMware vSphere で Red Hat OpenShift Container Platform クラスターを作成する時に問題が発生した場合は、以下のトラブルシューティング情報を参照して、この情報のいずれかが問題に対応しているかどうかを確認します。
注記: VMware vSphere でクラスター作成プロセスが失敗した場合に、リンクが有効にならずログが表示されないことがあります。上記が発生する場合は、hive-controllers Pod のログを確認して問題を特定できます。hive-controllers ログは hive namespace にあります。
1.10.1. 証明書の IP SAN エラーでマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
1.10.1.1. 現象: 証明書の IP SAN エラーでマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
VMware vSphere で新規の Red Hat OpenShift Container Platform クラスターを作成した後に、証明書 IP SAN エラーを示すエラーメッセージでクラスターに問題が発生します。
1.10.1.2. 問題の特定: 証明書の IP SAN エラーでマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターのデプロイメントに失敗して、デプロイメントログに以下のエラーが返されます。
time="2020-08-07T15:27:55Z" level=error msg="Error: error setting up new vSphere SOAP client: Post https://147.1.1.1/sdk: x509: cannot validate certificate for xx.xx.xx.xx because it doesn't contain any IP SANs" time="2020-08-07T15:27:55Z" level=error
time="2020-08-07T15:27:55Z" level=error msg="Error: error setting up new vSphere SOAP client: Post https://147.1.1.1/sdk: x509: cannot validate certificate for xx.xx.xx.xx because it doesn't contain any IP SANs"
time="2020-08-07T15:27:55Z" level=error
1.10.1.3. 問題の解決: 証明書の IP SAN エラーでマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
認証情報の IP アドレスではなく VMware vCenter サーバー完全修飾ホスト名を使用します。また、VMware vCenter CA 証明書を更新して、IP SAN を組み込むこともできます。
1.10.2. 不明な証明局のエラーでマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
1.10.2.1. 現象: 不明な証明局のエラーでマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
VMware vSphere で新規の Red Hat OpenShift Container Platform クラスターを作成した後に、証明書が不明な証明局により署名されているのでクラスターに問題が発生します。
1.10.2.2. 問題の特定: 不明な証明局のエラーでマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターのデプロイメントに失敗して、デプロイメントログに以下のエラーが返されます。
Error: error setting up new vSphere SOAP client: Post https://vspherehost.com/sdk: x509: certificate signed by unknown authority"
Error: error setting up new vSphere SOAP client: Post https://vspherehost.com/sdk: x509: certificate signed by unknown authority"
1.10.2.3. 問題の解決: 不明な証明局のエラーでマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
認証情報の作成時に認証局の正しい証明書が入力されていることを確認します。
1.10.3. 証明書の期限切れでマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
1.10.3.1. 現象: 証明書の期限切れでマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
VMware vSphere で新規の Red Hat OpenShift Container Platform クラスターを作成した後に、証明書の期限が切れているか、有効にしていないため、クラスターに問題が発生します。
1.10.3.2. 問題の特定: 証明書の期限切れでマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターのデプロイメントに失敗して、デプロイメントログに以下のエラーが返されます。
x509: certificate has expired or is not yet valid
x509: certificate has expired or is not yet valid
1.10.3.3. 問題の解決: 証明書の期限切れでマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
ESXi ホストの時間が同期されていることを確認します。
1.10.4. タグ付けの権限が十分ではないためマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
1.10.4.1. 現象: タグ付けの権限が十分ではないためマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
VMware vSphere で新規の Red Hat OpenShift Container Platform クラスターを作成した後に、タグ付けの使用に十分な権限がないためクラスターに問題が発生します。
1.10.4.2. 問題の特定: タグ付けの権限が十分にないためにマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターのデプロイメントに失敗して、デプロイメントログに以下のエラーが返されます。
1.10.4.3. 問題の解決: タグ付けの権限が十分ではないためマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
VMware vCenter が必要とするアカウントの権限が正しいことを確認します。詳細は、インストール時に削除されたイメージレジストリー を参照してください。
1.10.5. 無効な dnsVIP でマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
1.10.5.1. 現象: 無効な dnsVIP でマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
VMware vSphere で新規の Red Hat OpenShift Container Platform クラスターを作成した後に、dnsVIP が無効であるため、クラスターに問題が発生します。
1.10.5.2. 問題の特定: 無効な dnsVIP でマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
VMware vSphere で新しいマネージドクラスターをデプロイしようとして以下のメッセージが表示されるのは、VMware Installer Provisioned Infrastructure (IPI) をサポートしない以前の OpenShift Container Platform リリースイメージを使用しているためです。
failed to fetch Master Machines: failed to load asset \\\"Install Config\\\": invalid \\\"install-config.yaml\\\" file: platform.vsphere.dnsVIP: Invalid value: \\\"\\\": \\\"\\\" is not a valid IP
failed to fetch Master Machines: failed to load asset \\\"Install Config\\\": invalid \\\"install-config.yaml\\\" file: platform.vsphere.dnsVIP: Invalid value: \\\"\\\": \\\"\\\" is not a valid IP
1.10.5.3. 問題の解決: 無効な dnsVIP でマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
VMware インストーラーでプロビジョニングされるインフラストラクチャーをサポートする OpenShift Container Platform で、新しいバージョンのリリースイメージを選択します。
1.10.6. ネットワークタイプが正しくないためマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
1.10.6.1. 現象: ネットワークタイプが正しくないためマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
VMware vSphere で新規の Red Hat OpenShift Container Platform クラスターを作成した後に、間違ったネットワークタイプが指定されているため、クラスターに問題が発生します。
1.10.6.2. 問題の特定: ネットワークタイプが正しくないためマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
VMware vSphere で新しいマネージドクラスターをデプロイしようとして以下のメッセージが表示されるのは、VMware Installer Provisioned Infrastructure (IPI) をサポートしない以前の OpenShift Container Platform イメージを使用しているためです。
1.10.6.3. 問題の解決: ネットワークタイプが正しくないためマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
指定の VMware クラスターに対して有効な VMware vSphere ネットワークタイプを選択します。
1.10.7. ディスクの変更処理のエラーでマネージドクラスターの作成に失敗する リンクのコピーリンクがクリップボードにコピーされました!
1.10.7.1. 現象: ディスク変更の処理中にエラーが発生するため、VMware vSphere マネージドクラスターの追加が失敗する リンクのコピーリンクがクリップボードにコピーされました!
VMware vSphere で新規の Red Hat OpenShift Container Platform クラスターを作成した後に、ディスク変更処理時にエラーによりクラスターに問題が発生します。
1.10.7.2. 問題の特定: ディスク変更処理エラーのため、VMware vSphere マネージドクラスターの追加に失敗する リンクのコピーリンクがクリップボードにコピーされました!
以下のようなメッセージがログに表示されます。
ERROR ERROR Error: error reconfiguring virtual machine: error processing disk changes post-clone: disk.0: ServerFaultCode: NoPermission: RESOURCE (vm-71:2000), ACTION (queryAssociatedProfile): RESOURCE (vm-71), ACTION (PolicyIDByVirtualDisk)
ERROR
ERROR Error: error reconfiguring virtual machine: error processing disk changes post-clone: disk.0: ServerFaultCode: NoPermission: RESOURCE (vm-71:2000), ACTION (queryAssociatedProfile): RESOURCE (vm-71), ACTION (PolicyIDByVirtualDisk)
1.10.7.3. 問題の解決: ディスク変更の処理中にエラーが発生したため、VMware vSphere マネージドクラスターの追加に失敗する リンクのコピーリンクがクリップボードにコピーされました!
VMware vSphere クライアントを使用してユーザーに プロファイル駆動型のストレージ権限 の 全権限 を割り当てます。
1.11. Red Hat OpenStack Platform でマネージドクラスターの作成が不明な権限エラーで失敗する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform で Red Hat OpenShift Container Platform クラスターを作成する時に問題が発生した場合は、以下のトラブルシューティング情報を参照して、この情報のいずれかが問題に対応しているかどうかを確認します。
1.11.1. 現象: マネージドクラスターの作成が不明な権限エラーで失敗する リンクのコピーリンクがクリップボードにコピーされました!
自己署名証明書を使用して Red Hat OpenStack Platform で新しい Red Hat OpenShift Container Platform クラスターを作成した後、クラスターは失敗し、不明な権限エラーを示すエラーメッセージが表示されます。
1.11.2. 問題の特定: マネージドクラスターの作成が不明な権限エラーで失敗する リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターのデプロイが失敗し、次のエラーメッセージが返されます。
x509: certificate signed by unknown authority
1.11.3. 問題の解決: マネージドクラスターの作成が不明な権限エラーで失敗する リンクのコピーリンクがクリップボードにコピーされました!
次のファイルが正しく設定されていることを確認します。
clouds.yamlファイルは、cacertパラメーターでca.crtファイルへのパスを指定する必要があります。ignition shim の生成時に、cacertパラメーターが OpenShift インストーラーに渡されます。以下の例を参照してください。clouds: openstack: cacert: "/etc/pki/ca-trust/source/anchors/ca.crt"clouds: openstack: cacert: "/etc/pki/ca-trust/source/anchors/ca.crt"Copy to Clipboard Copied! Toggle word wrap Toggle overflow certificatesSecretRefパラメーターは、ca.crtファイルと一致するファイル名を持つシークレットを参照する必要があります。以下の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 一致するファイル名でシークレットを作成するには、次のコマンドを実行します。
oc create secret generic txue-osspoke-openstack-certificatebundle --from-file=ca.crt=ca.crt.pem -n $CLUSTERNAME
oc create secret generic txue-osspoke-openstack-certificatebundle --from-file=ca.crt=ca.crt.pem -n $CLUSTERNAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow -
ca.certファイルのサイズは、63,000 バイト未満である必要があります。
1.12. OpenShift Container Platform バージョン 3.11 クラスターのインポートの失敗時のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
1.12.1. 現象: OpenShift Container Platform バージョン 3.11 クラスターのインポートに失敗する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Container Platform バージョン 3.11 クラスターのインポートを試行すると、以下の内容のようなログメッセージでインポートに失敗します。
1.12.2. 問題の特定: OpenShift Container Platform バージョン 3.11 クラスターのインポートに失敗する リンクのコピーリンクがクリップボードにコピーされました!
この問題は多くの場合、インストールされている kubectl コマンドラインツールのバージョンが 1.11 以前であるために発生します。以下のコマンドを実行して、実行中の kubectl コマンドラインツールのバージョンを表示します。
kubectl version
kubectl version
返されたデータがバージョンが 1.11 以前の場合は、問題の解決: OpenShift Container Platform バージョン 3.11 クラスターのインポートに失敗する に記載される修正のいずれかを実行します。
1.12.3. 問題の解決: OpenShift Container Platform バージョン 3.11 クラスターのインポートに失敗する リンクのコピーリンクがクリップボードにコピーされました!
この問題は、以下のいずれかの手順を実行して解決できます。
最新バージョンの
kubectlコマンドラインツールをインストールします。-
kubectlツールの最新バージョンを、Kubernetes ドキュメントの kubectl のインストールとセットアップ からダウンロードします。 -
kubectlツールのアップグレード後にクラスターを再度インポートします。
-
import コマンドが含まれるファイルを実行します。
- CLI を使用したマネージドクラスターのインポート の手順を開始します。
-
クラスターの import コマンドを作成する場合には、この import コマンドを
import.yamlという名前の YAML ファイルにコピーします。 以下のコマンドを実行して、ファイルからクラスターを再度インポートします。
oc apply -f import.yaml
oc apply -f import.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.13. 証明書を変更した後のインポート済みクラスターのオフラインでのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
カスタムの apiserver 証明書のインストールはサポートされますが、証明書情報を変更する前にインポートされたクラスターの 1 つまたは複数でステータスが offline になります。
1.13.1. 現象: 証明書の変更後にクラスターがオフラインになる リンクのコピーリンクがクリップボードにコピーされました!
証明書シークレットを更新する手順を完了すると、オンラインだった 1 つ以上のクラスターがコンソールに offline ステータスを表示するようになります。
1.13.2. 問題の特定: 証明書の変更後にクラスターがオフラインになる リンクのコピーリンクがクリップボードにコピーされました!
カスタムの API サーバー証明書の情報を更新すると、インポートされ、新しい証明書が追加される前に稼働していたクラスターのステータスが offline になります。
オフラインのマネージドクラスターの open-cluster-management-agent namespace にある Pod のログで、証明書に問題があるとのエラーが見つかります。以下の例のようなエラーがログに表示されます。
以下の work-agent ログを参照してください。
E0917 03:04:05.874759 1 manifestwork_controller.go:179] Reconcile work test-1-klusterlet-addon-workmgr fails with err: Failed to update work status with err Get "https://api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/namespaces/test-1/manifestworks/test-1-klusterlet-addon-workmgr": x509: certificate signed by unknown authority E0917 03:04:05.874887 1 base_controller.go:231] "ManifestWorkAgent" controller failed to sync "test-1-klusterlet-addon-workmgr", err: Failed to update work status with err Get "api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/namespaces/test-1/manifestworks/test-1-klusterlet-addon-workmgr": x509: certificate signed by unknown authority E0917 03:04:37.245859 1 reflector.go:127] k8s.io/client-go@v0.19.0/tools/cache/reflector.go:156: Failed to watch *v1.ManifestWork: failed to list *v1.ManifestWork: Get "api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/namespaces/test-1/manifestworks?resourceVersion=607424": x509: certificate signed by unknown authority
E0917 03:04:05.874759 1 manifestwork_controller.go:179] Reconcile work test-1-klusterlet-addon-workmgr fails with err: Failed to update work status with err Get "https://api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/namespaces/test-1/manifestworks/test-1-klusterlet-addon-workmgr": x509: certificate signed by unknown authority
E0917 03:04:05.874887 1 base_controller.go:231] "ManifestWorkAgent" controller failed to sync "test-1-klusterlet-addon-workmgr", err: Failed to update work status with err Get "api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/namespaces/test-1/manifestworks/test-1-klusterlet-addon-workmgr": x509: certificate signed by unknown authority
E0917 03:04:37.245859 1 reflector.go:127] k8s.io/client-go@v0.19.0/tools/cache/reflector.go:156: Failed to watch *v1.ManifestWork: failed to list *v1.ManifestWork: Get "api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/namespaces/test-1/manifestworks?resourceVersion=607424": x509: certificate signed by unknown authority
以下の registration-agent ログを確認してください。
I0917 02:27:41.525026 1 event.go:282] Event(v1.ObjectReference{Kind:"Namespace", Namespace:"open-cluster-management-agent", Name:"open-cluster-management-agent", UID:"", APIVersion:"v1", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'ManagedClusterAvailableConditionUpdated' update managed cluster "test-1" available condition to "True", due to "Managed cluster is available"
E0917 02:58:26.315984 1 reflector.go:127] k8s.io/client-go@v0.19.0/tools/cache/reflector.go:156: Failed to watch *v1beta1.CertificateSigningRequest: Get "https://api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/managedclusters?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dtest-1&resourceVersion=607408&timeout=9m33s&timeoutSeconds=573&watch=true"": x509: certificate signed by unknown authority
E0917 02:58:26.598343 1 reflector.go:127] k8s.io/client-go@v0.19.0/tools/cache/reflector.go:156: Failed to watch *v1.ManagedCluster: Get "https://api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/managedclusters?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dtest-1&resourceVersion=607408&timeout=9m33s&timeoutSeconds=573&watch=true": x509: certificate signed by unknown authority
E0917 02:58:27.613963 1 reflector.go:127] k8s.io/client-go@v0.19.0/tools/cache/reflector.go:156: Failed to watch *v1.ManagedCluster: failed to list *v1.ManagedCluster: Get "https://api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/managedclusters?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dtest-1&resourceVersion=607408&timeout=9m33s&timeoutSeconds=573&watch=true"": x509: certificate signed by unknown authority
I0917 02:27:41.525026 1 event.go:282] Event(v1.ObjectReference{Kind:"Namespace", Namespace:"open-cluster-management-agent", Name:"open-cluster-management-agent", UID:"", APIVersion:"v1", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'ManagedClusterAvailableConditionUpdated' update managed cluster "test-1" available condition to "True", due to "Managed cluster is available"
E0917 02:58:26.315984 1 reflector.go:127] k8s.io/client-go@v0.19.0/tools/cache/reflector.go:156: Failed to watch *v1beta1.CertificateSigningRequest: Get "https://api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/managedclusters?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dtest-1&resourceVersion=607408&timeout=9m33s&timeoutSeconds=573&watch=true"": x509: certificate signed by unknown authority
E0917 02:58:26.598343 1 reflector.go:127] k8s.io/client-go@v0.19.0/tools/cache/reflector.go:156: Failed to watch *v1.ManagedCluster: Get "https://api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/managedclusters?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dtest-1&resourceVersion=607408&timeout=9m33s&timeoutSeconds=573&watch=true": x509: certificate signed by unknown authority
E0917 02:58:27.613963 1 reflector.go:127] k8s.io/client-go@v0.19.0/tools/cache/reflector.go:156: Failed to watch *v1.ManagedCluster: failed to list *v1.ManagedCluster: Get "https://api.aaa-ocp.dev02.location.com:6443/apis/cluster.management.io/v1/managedclusters?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dtest-1&resourceVersion=607408&timeout=9m33s&timeoutSeconds=573&watch=true"": x509: certificate signed by unknown authority
1.13.3. 問題の解決: 証明書の変更後にクラスターがオフラインになる リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターが local-cluster であるか、Red Hat Advanced Cluster Management for Kubernetes を使用して作成された場合、マネージドクラスターを再インポートするには、10 分以上待つ必要があります。
マネージドクラスターをすぐに再インポートするには、ハブクラスター上のマネージドクラスターのインポートシークレットを削除し、Red Hat Advanced Cluster Management を使用して再インポートします。以下のコマンドを実行します。
oc delete secret -n <cluster_name> <cluster_name>-import
oc delete secret -n <cluster_name> <cluster_name>-import
<cluster_name> を、インポートするマネージドクラスターの名前に置き換えます。
Red Hat Advanced Cluster Management を使用してインポートされたマネージドクラスターを再インポートする場合は、以下の手順を実行してマネージドクラスターを再度インポートします。
ハブクラスターで、次のコマンドを実行してマネージドクラスターのインポートシークレットを再作成します。
oc delete secret -n <cluster_name> <cluster_name>-import
oc delete secret -n <cluster_name> <cluster_name>-importCopy to Clipboard Copied! Toggle word wrap Toggle overflow <cluster_name>を、インポートするマネージドクラスターの名前に置き換えます。ハブクラスターで、次のコマンドを実行して、マネージドクラスターのインポートシークレットを YAML ファイルに公開します。
oc get secret -n <cluster_name> <cluster_name>-import -ojsonpath='{.data.import\.yaml}' | base64 --decode > import.yamloc get secret -n <cluster_name> <cluster_name>-import -ojsonpath='{.data.import\.yaml}' | base64 --decode > import.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow <cluster_name>を、インポートするマネージドクラスターの名前に置き換えます。マネージドクラスターで、次のコマンドを実行して
import.yamlファイルを適用します。oc apply -f import.yaml
oc apply -f import.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
注記: 前の手順では、マネージドクラスターがハブクラスターから切り離されません。この手順により、必要なマニフェストがマネージドクラスターの現在の設定 (新しい証明書情報を含む) で更新されます。
1.14. クラスターの削除後も namespace が残る リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターを削除すると、通常 namespace はクラスターの削除プロセスの一部として削除されます。まれに namespace は一部のアーティファクトが含まれた状態で残る場合があります。このような場合は、namespace を手動で削除する必要があります。
1.14.1. 現象: クラスターの削除後も namespace が残る リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターの削除後に namespace が削除されません。
1.14.2. 問題の解決: クラスターの削除後も namespace が残る リンクのコピーリンクがクリップボードにコピーされました!
namespace を手作業で削除するには、以下の手順を実行します。
次のコマンドを実行して、<cluster_name> namespace に残っているリソースのリストを作成します。
oc api-resources --verbs=list --namespaced -o name | grep -E '^secrets|^serviceaccounts|^managedclusteraddons|^roles|^rolebindings|^manifestworks|^leases|^managedclusterinfo|^appliedmanifestworks'|^clusteroauths' | xargs -n 1 oc get --show-kind --ignore-not-found -n <cluster_name>
oc api-resources --verbs=list --namespaced -o name | grep -E '^secrets|^serviceaccounts|^managedclusteraddons|^roles|^rolebindings|^manifestworks|^leases|^managedclusterinfo|^appliedmanifestworks'|^clusteroauths' | xargs -n 1 oc get --show-kind --ignore-not-found -n <cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster_nameは、削除を試みたクラスターの namespace 名に置き換えます。以下のコマンドを入力してリストを編集し、ステータスが
Deleteではないリストから特定したリソースを削除します。oc edit <resource_kind> <resource_name> -n <namespace>
oc edit <resource_kind> <resource_name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow resource_kindは、リソースの種類に置き換えます。resource_nameは、リソース名に置き換えます。namespaceは、リソースの namespace に置き換えます。-
メタデータで
finalizer属性の場所を特定します。 -
vi エディターの
ddコマンドを使用して、Kubernetes 以外のファイナライザーを削除します。 -
:wqコマンドを入力し、リストを保存してviエディターを終了します。 以下のコマンドを入力して namespace を削除します。
oc delete ns <cluster-name>
oc delete ns <cluster-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-nameを、削除する namespace の名前に置き換えます。
1.15. クラスターのインポート時の auto-import-secret-exists エラー リンクのコピーリンクがクリップボードにコピーされました!
クラスターのインポートは、auto import secret exists というエラーメッセージで失敗します。
1.15.1. 現象: クラスターのインポート時の Auto-import-secret-exists エラー リンクのコピーリンクがクリップボードにコピーされました!
管理用のハイブクラスターをインポートすると、auto-import-secret already exists というエラーが表示されます。
1.15.2. 問題の解決: クラスターのインポート時の Auto-import-secret-exists エラー リンクのコピーリンクがクリップボードにコピーされました!
この問題は、Red Hat Advanced Cluster Management で以前に管理されていたクラスターをインポートしようとすると発生します。これが生じると、クラスターを再インポートしようとすると、シークレットは競合します。
この問題を回避するには、以下の手順を実行します。
既存の
auto-import-secretを手動で削除するには、ハブクラスターで以下のコマンドを実行します。oc delete secret auto-import-secret -n <cluster-namespace>
oc delete secret auto-import-secret -n <cluster-namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow namespaceは、お使いのクラスターの namespace に置き換えます。- クラスターインポートの概要 の手順を使用して、クラスターを再度インポートします。
1.16. VolSync 用の cinder Container Storage Interface (CSI) ドライバーのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
VolSync を使用する場合、または cinder Container Storage Interface (CSI) ドライバーのデフォルト設定を使用する場合、使用中の PVC でエラーが発生する可能性があります。
1.16.1. 症状: ボリュームスナップショット のエラー状態 リンクのコピーリンクがクリップボードにコピーされました!
スナップショットを使用するように VolSync ReplicationSource または ReplicationDestination を設定できます。また、ReplicationSource および ReplicationDestination で storageclass および volumesnapshotclass を設定できます。cinder volumesnapshotclass には、デフォルト値が false の、force-create というパラメーターがあります。volumesnapshotclass でこの force-create パラメーターを指定すると、cinder が使用中の PVC から volumesnapshot を取得できません。その結果、volumesnapshot はエラー状態になります。
1.16.2. 問題の解決: パラメーターを true に設定する リンクのコピーリンクがクリップボードにコピーされました!
-
cinder CSI ドライバーの新しい
volumesnapshotclassを作成します。 force-createパラメーターをtrueに変更します。以下のサンプル YAML を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.17. must-gather コマンドを実行したトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
must-gather コマンドを実行して詳細、ログを収集し、問題のデバッグ手順を実行します。このデバッグ情報は、サポートリクエストを開くときにも役立ちます。oc adm must-gather CLI コマンドは、問題のデバッグによく必要となる次のような情報をクラスターから収集します。
- リソース定義
- サービスログ
1.17.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
must-gather コマンドを実行するには、次の前提条件を満たす必要があります。
-
cluster-adminロールを持つユーザーとして、グローバルハブおよびマネージドハブクラスターにアクセスします。 - OpenShift Container Platform CLI (oc) がインストールされている。
1.17.2. must-gather コマンドの実行 リンクのコピーリンクがクリップボードにコピーされました!
must-gather コマンドを使用して情報を収集するには、次の手順を実行します。
-
OpenShift Container Platform ドキュメントの クラスターに関するデータの収集 を読み、
must-gatherコマンドについて学び、必要な前提条件をインストールします。 グローバルハブクラスターにログインします。一般的な使用例では、グローバルハブクラスターにログインしているときに次のコマンドを実行します。
oc adm must-gather --image=quay.io/stolostron/must-gather:SNAPSHOTNAME
oc adm must-gather --image=quay.io/stolostron/must-gather:SNAPSHOTNAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドハブクラスターを確認する場合は、それらのクラスターで
must-gatherコマンドを実行します。オプション: 結果を
SOMENAMEディレクトリーに保存する場合は、前の手順で 1 つではなく次のコマンドを実行できます。oc adm must-gather --image=quay.io/stolostron/must-gather:SNAPSHOTNAME --dest-dir=<SOMENAME> ; tar -cvzf <SOMENAME>.tgz <SOMENAME>
oc adm must-gather --image=quay.io/stolostron/must-gather:SNAPSHOTNAME --dest-dir=<SOMENAME> ; tar -cvzf <SOMENAME>.tgz <SOMENAME>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ディレクトリーには別の名前を指定できます。
注記: コマンドには、gzipped tarball ファイルを作成するために必要な追加が含まれます。
以下の情報は、must-gather コマンドから収集されます。
-
2 つのピアレベル:
cluster-scoped-resourcesとnamespacesリソース。 - それぞれに対するサブレベル: クラスタースコープおよび namespace スコープの両方のリソースに対するカスタムリソース定義の API グループ。
- それぞれの次のレベル: 種類別にソートされた YAML ファイル。
-
グローバルハブクラスターの場合は、
namespacesリソースのPostgresClusterとKafkaを確認できます。 -
グローバルハブクラスターの場合は、Multicluster Global Hub 関連の Pod と、
namespacesリソースのPod内のログを確認できます。 -
マネージドハブクラスターの場合、Multicluster Global Hub エージェント Pod と
namespacesリソースのPod内のログを確認できます。
1.18. プロビジョニングされた PostgreSQL データベースにアクセスすることでのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
プロビジョニングされた PostgreSQL データベースにアクセスして、multicluster global hub の問題のトラブルシューティングに役立つメッセージを表示できます。サービスの種類に応じて、プロビジョニングされた PostgreSQL データベースにアクセスするには 3 つの方法があります。
ClusterIPサービスの使用次のコマンドを実行して、postgres 接続 URI を確認します。
oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "uri" | base64decode}}'oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "uri" | base64decode}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してデータベースにアクセスします。
oc exec -it $(kubectl get pods -n multicluster-global-hub-postgres -l postgres-operator.crunchydata.com/role=master -o jsonpath='{.items..metadata.name}') -c database -n multicluster-global-hub-postgres -- psql -U postgres -d hoh -c "SELECT 1"oc exec -it $(kubectl get pods -n multicluster-global-hub-postgres -l postgres-operator.crunchydata.com/role=master -o jsonpath='{.items..metadata.name}') -c database -n multicluster-global-hub-postgres -- psql -U postgres -d hoh -c "SELECT 1"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
NodePortサービスの使用次のコマンドを実行して、サービスを NodePort に変更し、ホストをノード IP に設定し、ポートを 32432 に設定します。
oc patch postgrescluster hoh -n multicluster-global-hub-postgres -p '{"spec":{"service":{"type":"NodePort", "nodePort": 32432}}}' --type mergeoc patch postgrescluster hoh -n multicluster-global-hub-postgres -p '{"spec":{"service":{"type":"NodePort", "nodePort": 32432}}}' --type mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してユーザー名を追加します。
oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "user" | base64decode}}'oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "user" | base64decode}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してパスワードを追加します。
oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "password" | base64decode}}'oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "password" | base64decode}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、データベース名を追加します。
oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "dbname" | base64decode}}'oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "dbname" | base64decode}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
LoadBalancer次のコマンドを実行して、サービスタイプを
LoadBalancerに設定します。oc patch postgrescluster hoh -n multicluster-global-hub-postgres -p '{"spec":{"service":{"type":"LoadBalancer"}}}' --type mergeoc patch postgrescluster hoh -n multicluster-global-hub-postgres -p '{"spec":{"service":{"type":"LoadBalancer"}}}' --type mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトのポートは 5432 です
次のコマンドを実行してホスト名を設定します。
kubectl get svc -n multicluster-global-hub-postgres hoh-ha -ojsonpath='{.status.loadBalancer.ingress[0].hostname}'kubectl get svc -n multicluster-global-hub-postgres hoh-ha -ojsonpath='{.status.loadBalancer.ingress[0].hostname}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してユーザー名を追加します。
oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "user" | base64decode}}'oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "user" | base64decode}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してパスワードを追加します。
oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "password" | base64decode}}'oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "password" | base64decode}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、データベース名を追加します。
oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "dbname" | base64decode}}'oc get secrets -n multicluster-global-hub-postgres hoh-pguser-postgres -o go-template='{{index (.data) "dbname" | base64decode}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.19. トラブルシューティングのためのデータベースのダンプと復元の使用 リンクのコピーリンクがクリップボードにコピーされました!
運用環境では、データベース管理タスクとして PostgreSQL データベースを定期的にバックアップします。バックアップは、Multicluster Global Hub のデバッグにも使用できます。
1.19.1. ダバッグ用にデータベースの出力をダンプする リンクのコピーリンクがクリップボードにコピーされました!
問題をデバッグするために、Multicluster Global Hub データベースに出力をダンプする必要がある場合があります。PostgreSQL データベースには、データベースの内容をダンプするための pg_dump コマンドラインツールが用意されています。localhost データベースサーバーからデータをダンプするには、次のコマンドを実行します。
pg_dump hoh > hoh.sql
pg_dump hoh > hoh.sql
リモートサーバー上にある Multicluster Global Hub データベースを圧縮形式でダンプするには、次の例に示すように、コマンドラインオプションを使用して接続の詳細を制御します。
pg_dump -h my.host.com -p 5432 -U postgres -F t hoh -f hoh-$(date +%d-%m-%y_%H-%M).tar
pg_dump -h my.host.com -p 5432 -U postgres -F t hoh -f hoh-$(date +%d-%m-%y_%H-%M).tar
1.19.2. ダンプからデータベースを復元する リンクのコピーリンクがクリップボードにコピーされました!
PostgreSQL データベースを復元するには、psql または pg_restore コマンドラインツールを使用できます。psql ツールは、pg_dump によって作成されたプレーンテキストファイルを復元するために使用されます。
psql -h another.host.com -p 5432 -U postgres -d hoh < hoh.sql
psql -h another.host.com -p 5432 -U postgres -d hoh < hoh.sql
pg_restore ツールは、pg_dump によって非プレーンテキスト形式 (カスタム、tar、またはディレクトリー) のいずれかで作成されたアーカイブから PostgreSQL データベースを復元するために使用されます。
pg_restore -h another.host.com -p 5432 -U postgres -d hoh hoh-$(date +%d-%m-%y_%H-%M).tar
pg_restore -h another.host.com -p 5432 -U postgres -d hoh hoh-$(date +%d-%m-%y_%H-%M).tar
1.20. コンプライアンスデータの復元 リンクのコピーリンクがクリップボードにコピーされました!
Grafana データソースは主に、history.local_compliance という名前のテーブルから取得されます。そのレコードは、毎晩 00:00:00 に開始される要約ルーチンによって生成されます。通常、要約プロセスを手動で実行する必要はありません。場合によっては、コンプライアンスジョブの実行時に予期しないエラーが発生する可能性があるため、データベースに手動でログインして概要プロセス全体を実行し、生成されなかったデータを回復する必要があります。手動での要約プロセスの実行 の手順に従ってデータを回復できます。
1.20.1. オプション: 既存のテーブルをパーティションテーブルに手動でアップグレードする リンクのコピーリンクがクリップボードにコピーされました!
GA より前に Multicluster Global Hub の初期バージョンをインストールしている場合は、現在の Multicluster Global Hub Operator と互換性があるようにテーブルをアップグレードする必要があります。アップグレードの主な目的は、event.local_policies、event.local_root_policies、および history.local_compliance テーブルをパーティション化されたテーブルに変換することです。
次の例は、日付が 2023-08 に設定された event.local_policies テーブルの変換を示しています。他の 2 つのテーブルのアップグレード手順は同様です。
ターゲットがパーティション化されていることを確認してください。
SELECT relname, relkind FROM pg_class WHERE relname = 'local_policies';
SELECT relname, relkind FROM pg_class WHERE relname = 'local_policies';Copy to Clipboard Copied! Toggle word wrap Toggle overflow テーブルの出力は次の例のようになります。
Expand relname
relkind
local_policies
r
relkindがpの場合、現在のテーブルはパーティション化されます。存在する場合は、残りの手順をスキップして、他のテーブルをアップグレードできます。通常のテーブルをパーティションテーブルに変換します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow テーブル名と現在の日付に従って、次の値を置き換えることができます。
-
event.local_policies_2023_08は、現在の月 の接尾辞が付いたパーティション名です。例として 8 月を使用します。 -
'2023-08-01'と'2023-09-01'は、現在の月のパーティションの最小境界と最大境界です。 -
event.local_policies_2023_07は、前月 (7 月) の接尾辞が付いたパーティション名です。 -
'2000-01-01'と'2023-08-01'は、前月のパーティションの最小境界と最大境界です。
-
1.21. クラスターのステータスが offline から available に変わる場合のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターのステータスは、環境またはクラスターを手動で変更することなく、offline と available との間で切り替わります。
1.21.1. 現象: クラスターのステータスが offline から available に変わる リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターからハブクラスターへのネットワーク接続が不安定な場合に、マネージドクラスターのステータスが offline と available との間で順に切り替わると、ハブクラスターにより報告されます。
ハブクラスターとマネージドクラスター間の接続は、leaseDurationSeconds の間隔値で検証されるリースを通じて維持されます。連続 5 回の leaseDurationSeconds 値の試行以内にリースが検証されない場合、クラスターは offline としてマークされます。
たとえば、クラスターは 60 seconds の leaseDurationSeconds の間隔で 5 分後に offline としてマークされます。この設定は、接続の問題や遅延などの理由により不適切であり、不安定になる可能性があります。
1.21.2. 問題の解決: クラスターのステータスが offline から available に変わる リンクのコピーリンクがクリップボードにコピーされました!
5 回の検証試行はデフォルトであり変更できませんが、leaseDurationSeconds の間隔は変更できます。
クラスターを offline としてマークする時間を分単位で決定し、その値を 60 倍にして秒に変換します。次に、デフォルトの試行回数 5 で割ります。その結果が leaseDurationSeconds 値になります。
次のコマンドを入力してハブクラスターの
ManagedCluster仕様を編集します。ただし、cluster-nameはマネージドクラスターの名前に置き換えます。oc edit managedcluster <cluster-name>
oc edit managedcluster <cluster-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のサンプル YAML にあるように、
ManagedCluster仕様のleaseDurationSecondsの値を増やします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存し、適用します。
1.22. ステータスが Pending または Failed のクラスターのコンソールでのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
作成してたクラスターのステータスがコンソールで Pending または Failed と表示されている場合は、以下の手順を実行して問題のトラブルシューティングを実行します。
1.22.1. 現象: コンソールでステータスが Pending または Failed のクラスターのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes コンソールで新規クラスターを作成した後に、コンソールでクラスターのステータスが Pending または Failed と表示されてそれ以上進みません。
1.22.2. 問題の特定: コンソールでステータスが Pending または Failed のクラスター リンクのコピーリンクがクリップボードにコピーされました!
クラスターのステータスが Failed と表示される場合は、クラスターの詳細ページに移動して、提供されたログへのリンクに進みます。ログが見つからない場合や、クラスターのステータスが Pending と表示される場合は、以下の手順を実行してログを確認します。
手順 1
ハブクラスターで以下のコマンドを実行し、新規クラスターの namespace に作成した Kubernetes Pod の名前を表示します。
oc get pod -n <new_cluster_name>
oc get pod -n <new_cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow new_cluster_nameは、作成したクラスター名に置き換えます。名前に
provisionの文字列が含まれる Pod が表示されていない場合は、手順 2 に進みます。タイトルにprovisionが含まれる Pod があった場合は、ハブクラスターで以下のコマンドを実行して、その Pod のログを表示します。oc logs <new_cluster_name_provision_pod_name> -n <new_cluster_name> -c hive
oc logs <new_cluster_name_provision_pod_name> -n <new_cluster_name> -c hiveCopy to Clipboard Copied! Toggle word wrap Toggle overflow new_cluster_name_provision_pod_nameは、作成したクラスター名の後にprovisionが含まれる Pod 名を指定するように置き換えます。- ログでエラーを検索してください。この問題の原因が解明する場合があります。
手順 2
名前に
provisionが含まれる Pod がない場合は、問題がプロセスの初期段階で発生しています。ログを表示するには、以下の手順を実行します。ハブクラスターで以下のコマンドを実行してください。
oc describe clusterdeployments -n <new_cluster_name>
oc describe clusterdeployments -n <new_cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow new_cluster_nameは、作成したクラスター名に置き換えます。クラスターのインストールログの詳細は、Red Hat OpenShift ドキュメントの インストールログの収集 を参照してください。- リソースの Status.Conditions.Message と Status.Conditions.Reason のエントリーに問題に関する追加の情報があるかどうかを確認します。
1.22.3. 問題の解決: コンソールでステータスが Pending または Failed のクラスター リンクのコピーリンクがクリップボードにコピーされました!
ログでエラーを特定した後に、エラーの解決方法を決定してから、クラスターを破棄して、作り直してください。
以下の例では、サポート対象外のゾーンを選択している可能性を示すログエラーと、解決に必要なアクションが提示されています。
No subnets provided for zones
No subnets provided for zones
クラスターの作成時に、サポートされていないリージョンにあるゾーンを 1 つ以上選択しています。問題解決用にクラスターを再作成する時に、以下のアクションの 1 つを実行します。
- リージョン内の異なるゾーンを選択します。
- 他のゾーンをリストしている場合は、サポートを提供しないゾーンを省略します。
- お使いのクラスターに、別のリージョンを選択します。
ログから問題を特定した後に、クラスターを破棄し、再作成します。
クラスター作成の詳細は、クラスター作成の概要 を参照してください。
1.23. アプリケーションの Git サーバー接続のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
open-cluster-management namespace のログでは、Git リポジトリーのクローンの失敗について表示されます。
1.23.1. 現象: Git サーバー接続 リンクのコピーリンクがクリップボードにコピーされました!
open-cluster-management namespace にあるサブスクリプションコントローラー Pod multicluster-operators-hub-subscription-<random-characters> のログに、Git リポジトリーのクローン作成に失敗したことが示されています。x509: certificate signed by unknown authority エラーまたは BadGateway エラーが表示されます。
1.23.2. 問題の解決: Git サーバー接続 リンクのコピーリンクがクリップボードにコピーされました!
重要: 以前のバージョンを使用している場合は、アップグレードしてください。
- apps.open-cluster-management.io_channels_crd.yaml を同じファイル名として保存します。
Red Hat Advanced Cluster Management クラスターで以下のコマンドを実行し、ファイルを適用します。
oc apply -f apps.open-cluster-management.io_channels_crd.yaml
oc apply -f apps.open-cluster-management.io_channels_crd.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow open-cluster-managementnamespace で以下のコマンドを実行してadvanced-cluster-management.<version, example 2.5.0>CSV を編集します。oc edit csv advanced-cluster-management.<version, example 2.5.0> -n open-cluster-management
oc edit csv advanced-cluster-management.<version, example 2.5.0> -n open-cluster-managementCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコンテナーを見つけます。
-
multicluster-operators-standalone-subscription multicluster-operators-hub-subscriptionコンテナーイメージを、使用するコンテナーに置き換えます。
quay.io/open-cluster-management/multicluster-operators-subscription:<your image tag>
quay.io/open-cluster-management/multicluster-operators-subscription:<your image tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
この更新では
open-cluster-managementnamespace に以下の Pod を作成します。-
multicluster-operators-standalone-subscription-<random-characters> -
multicluster-operators-hub-subscription-<random-characters>
-
新たに作成した Pod が新規 docker イメージで実行していることを確認します。以下のコマンドを実行して、新しい docker イメージを見つけます。
oc get pod multicluster-operators-standalone-subscription-<random-characters> -n open-cluster-management -o yaml oc get pod multicluster-operators-hub-subscription-<random-characters> -n open-cluster-management -o yaml
oc get pod multicluster-operators-standalone-subscription-<random-characters> -n open-cluster-management -o yaml oc get pod multicluster-operators-hub-subscription-<random-characters> -n open-cluster-management -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターのイメージを更新します。
ハブクラスターで、次のコマンドを実行して、
multicluster_operators_subscriptionキーのイメージ値を使用するイメージに更新します。oc edit configmap -n open-cluster-management mch-image-manifest-<version, example 2.5.0> ... data: multicluster_operators_subscription: <your image with tag>
oc edit configmap -n open-cluster-management mch-image-manifest-<version, example 2.5.0> ... data: multicluster_operators_subscription: <your image with tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 既存の
multicluster-operators-hub-subscriptionPod を再起動します。oc delete pods -n open-cluster-management multicluster-operators-hub-subscription--<random-characters>
oc delete pods -n open-cluster-management multicluster-operators-hub-subscription--<random-characters>Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、マネージドクラスターの
open-cluster-management-agent-addonnamespace にapplication-manager-<random-characters>Pod が再作成されます。- 新たに作成した Pod が新規 docker イメージで実行していることを確認します。
コンソールまたは CLI を使用してアプリケーションを作成する場合は、チャネル仕様に insecureSkipVerify: true を手動で追加します。以下の例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.24. Grafana のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Grafana エクスプローラーで時間のかかるメトリックをクエリーすると、Gateway Time-out エラーが発生する可能性があります。
1.24.1. 現象: Grafana エクスプローラーゲートウェイのタイムアウト リンクのコピーリンクがクリップボードにコピーされました!
Grafana エクスプローラーで時間のかかるメトリックをクエリーするときに Gateway Time-out エラーが発生した場合は、open-cluster-management-observability namespace の Grafana が原因でタイムアウトが発生した可能性があります。
1.24.2. 問題の解決: Grafana を設定する リンクのコピーリンクがクリップボードにコピーされました!
この問題が発生した場合は、以下の手順を実行します。
Grafana のデフォルト設定に想定のタイムアウト設定があることを確認します。
Grafana のデフォルトタイムアウト設定を確認するには、以下のコマンドを実行します。
oc get secret grafana-config -n open-cluster-management-observability -o jsonpath="{.data.grafana\.ini}" | base64 -d | grep dataproxy -A 4oc get secret grafana-config -n open-cluster-management-observability -o jsonpath="{.data.grafana\.ini}" | base64 -d | grep dataproxy -A 4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のタイムアウト設定が表示されるはずです。
[dataproxy] timeout = 300 dial_timeout = 30 keep_alive_seconds = 300
[dataproxy] timeout = 300 dial_timeout = 30 keep_alive_seconds = 300Copy to Clipboard Copied! Toggle word wrap Toggle overflow Grafana のデフォルトのデータソースクエリータイムアウトを確認するには、以下のコマンドを実行します。
oc get secret/grafana-datasources -n open-cluster-management-observability -o jsonpath="{.data.datasources\.yaml}" | base64 -d | grep queryTimeoutoc get secret/grafana-datasources -n open-cluster-management-observability -o jsonpath="{.data.datasources\.yaml}" | base64 -d | grep queryTimeoutCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のタイムアウト設定が表示されるはずです。
queryTimeout: 300s
queryTimeout: 300sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Grafana のデフォルト設定に予想されるタイムアウト設定があることを確認した場合は、次のコマンドを実行して、
open-cluster-management-observabilitynamespace で Grafana を設定できます。oc annotate route grafana -n open-cluster-management-observability --overwrite haproxy.router.openshift.io/timeout=300s
oc annotate route grafana -n open-cluster-management-observability --overwrite haproxy.router.openshift.io/timeout=300sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Grafana ページを更新し、再度メトリクスのクエリーを試行します。Gateway Time-out エラーが表示されなくなりました。
1.25. 配置ルールでローカルクラスターが選択されていない場合のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターは配置ルールで選択されますが、local-cluster (同じく管理されているハブクラスター) は選択されません。配置ルールユーザーには、local-cluster namespace の managedcluster リソースを取得するためのパーミッションは付与されません。
1.25.1. 現象: ローカルクラスターがマネージドクラスターとして選択されていない問題のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
すべてのマネージドクラスターは配置ルールで選択されますが、local-cluster は選択されません。配置ルールユーザーには、local-cluster namespace の managedcluster リソースを取得するためのパーミッションは付与されません。
1.25.2. 問題の解決: マネージドクラスターとして選択されていないローカルクラスターのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
非推奨: PlacementRule
この問題を解決するには、local-cluster namespace に managedcluster 管理パーミッションを付与する必要があります。以下の手順を実行します。
マネージドクラスターのリストに
local-clusterが含まれていること、配置ルールのdecisionsリストでlocal-clusterが表示されていないことを確認します。以下のコマンドを実行して結果を表示します。% oc get managedclusters
% oc get managedclustersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例を確認すると、
local-clusterが結合されているものの、PlacementRuleの YAML にないことが分かります。NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE local-cluster true True True 56d cluster1 true True True 16h
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE local-cluster true True True 56d cluster1 true True True 16hCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML ファイルに
Roleを作成し、local-clusternamespace にmanagedcluster管理パーミッションを付与します。以下の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow RoleBindingリソースを作成し、配置ルールユーザーにlocal-clusternamespace へのアクセスを許可します。以下の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.26. アプリケーションの Kubernetes デプロイメントバージョンのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
非推奨の Kubernetes apiVersion を使用するマネージドクラスターはサポートされない可能性があります。非推奨の API バージョンの詳細は、Kubernetes issue を参照してください。
1.26.1. 現象: アプリケーションデプロイメントバージョン リンクのコピーリンクがクリップボードにコピーされました!
サブスクリプションの YAML ファイルのアプリケーションリソースの 1 つまたは複数で、非推奨の API が使用されている場合に、以下のようなエラーが発生する可能性があります。
failed to install release: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "Deployment" in version "extensions/v1beta1"
failed to install release: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for
kind "Deployment" in version "extensions/v1beta1"
または、old.yaml などの名前で YAML ファイルに新しい Kubernetes API バージョンを追加している場合は、以下のエラーが発生する可能性があります。
error: unable to recognize "old.yaml": no matches for kind "Deployment" in version "deployment/v1beta1"
error: unable to recognize "old.yaml": no matches for kind "Deployment" in version "deployment/v1beta1"
1.26.2. 解決: アプリケーションデプロイメントバージョン リンクのコピーリンクがクリップボードにコピーされました!
リソースの
apiVersionを更新します。たとえば、サブスクリプション YAML ファイルの Deployment の種類のエラーが表示された場合は、apiVersionをextensions/v1beta1からapps/v1に更新する必要があります。以下の例を参照してください。
apiVersion: apps/v1 kind: Deployment
apiVersion: apps/v1 kind: DeploymentCopy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターで以下のコマンドを実行して、利用可能なバージョンを確認します。
kubectl explain <resource>
kubectl explain <resource>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
VERSIONを確認します。
1.27. degraded 状態にある Klusterlet のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Klusterlet の状態が Degraded の場合は、マネージドクラスターの Klusterlet エージェントの状態を診断しやすくなります。Klusterlet の状態が Degraded になると、マネージドクラスターの Klusterlet エージェントで発生する可能性のあるエラーに対応する必要があります。Klusterlet の degraded の状態が True に設定されている場合は、以下の情報を参照します。
1.27.1. 現象: Klusterlet の状態が degraded である リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターで Klusterlet をデプロイした後に、KlusterletRegistrationDegraded または KlusterletWorkDegraded の状態が True と表示されます。
1.27.2. 問題の特定: Klusterlet の状態が degraded である リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターで以下のコマンドを実行して、Klusterlet のステータスを表示します
kubectl get klusterlets klusterlet -oyaml
kubectl get klusterlets klusterlet -oyamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
KlusterletRegistrationDegradedまたはKlusterletWorkDegradedをチェックして、状態がTrueに設定されいるかどうかを確認します。記載されている Degraded の状態は、問題の解決 に進みます。
1.27.3. 問題の解決: Klusterlet の状態が degraded である リンクのコピーリンクがクリップボードにコピーされました!
ステータスが Degraded のリストおよびこれらの問題の解決方法を参照してください。
-
KlusterletRegistrationDegradedの状態が True で、この状態の理由が BootStrapSecretMissing の場合は、open-cluster-management-agentnamespace にブートストラップのシークレットを作成する必要があります。 -
KlusterletRegistrationDegradedの状態が True と表示され、状態の理由が BootstrapSecretError または BootstrapSecretUnauthorized の場合は、現在のブートストラップシークレットが無効です。現在のブートストラップシークレットを削除して、open-cluster-management-agentnamespace で有効なブートストラップシークレットをもう一度作成します。 -
KlusterletRegistrationDegradedおよびKlusterletWorkDegradedが True と表示され、状態の理由が HubKubeConfigSecretMissing の場合は、Klusterlet を削除して作成し直します。 -
KlusterletRegistrationDegradedおよびKlusterletWorkDegradedが True と表示され、状態の理由が ClusterNameMissing、KubeConfigMissing、HubConfigSecretError、または HubConfigSecretUnauthorized の場合は、open-cluster-management-agentnamespace からハブクラスターの kubeconfig シークレットを削除します。登録エージェントは再度ブートストラップして、新しいハブクラスターの kubeconfig シークレットを取得します。 -
KlusterletRegistrationDegradedが True と表示され、状態の理由が GetRegistrationDeploymentFailed または UnavailableRegistrationPod の場合は、状態のメッセージを確認して、問題の詳細を取得して解決してみてください。 -
KlusterletWorkDegradedが True と表示され、状態の理由が GetWorkDeploymentFailed または UnavailableWorkPod の場合は、状態のメッセージを確認して、問題の詳細を取得し、解決してみてください。
1.28. オブジェクトストレージチャネルシークレットのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
SecretAccessKey を変更すると、オブジェクトストレージチャネルのサブスクリプションは、更新されたシークレットを自動的に取得できず、エラーが発生します。
1.28.1. 現象: オブジェクトストレージチャネルシークレット リンクのコピーリンクがクリップボードにコピーされました!
オブジェクトストレージチャネルのサブスクリプションは、更新されたシークレットを自動的に取得できません。そのため、サブスクリプションオペレーターが調整できなくなり、オブジェクトストレージからマネージドクラスターにリソースがデプロイされなくなります。
1.28.2. 問題の解決: オブジェクトストレージチャネルシークレット リンクのコピーリンクがクリップボードにコピーされました!
シークレットを作成するには、認証情報を手動で入力してから、チャネル内のシークレットを参照する必要があります。
サブスクリプションオペレーターに単一の調整を生成するために、サブスクリプション CR にアノテーションを付けます。以下の
data仕様を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc annotateを実行してテストします。oc annotate appsub -n <subscription-namespace> <subscription-name> test=true
oc annotate appsub -n <subscription-namespace> <subscription-name> test=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
コマンドの実行後に、アプリケーションコンソールに移動して、リソースがマネージドクラスターにデプロイされていることを確認してください。または、マネージドクラスターにログインして、アプリケーションリソースが特定の namespace で作成されているかどうかを確認できます。
1.29. 可観測性のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
可観測性コンポーネントをインストールした後に、コンポーネントが停止し、Installing のステータスが表示されます。
1.29.1. 現象: MultiClusterObservability リソースの状態が停止する リンクのコピーリンクがクリップボードにコピーされました!
可観測性のカスタムリソース定義 (CRD) をインストールして作成した後に可観測性のステータスが Installing で停止すると、spec:storageConfig:storageClass パラメーターに値が定義されていない場合があります。または、可観測性コンポーネントは自動的にデフォルトの storageClass を検索しますが、ストレージの値が指定されていないと、コンポーネントが Installing ステータスのままになります。
1.29.2. 問題の解決: MultiClusterObservability リソースの状態が停止する リンクのコピーリンクがクリップボードにコピーされました!
この問題が発生した場合は、以下の手順を実行します。
可観測性コンポーネントがインストールされていることを確認します。
multicluster-observability-operatorを確認するには、以下のコマンドを実行します。kubectl get pods -n open-cluster-management|grep observability
kubectl get pods -n open-cluster-management|grep observabilityCopy to Clipboard Copied! Toggle word wrap Toggle overflow 適切な CRD が存在することを確認するには、以下のコマンドを実行します。
kubectl get crd|grep observ
kubectl get crd|grep observCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の CRD が表示されるまで、コンポーネントを有効化しないでください。
multiclusterobservabilities.observability.open-cluster-management.io observabilityaddons.observability.open-cluster-management.io observatoria.core.observatorium.io
multiclusterobservabilities.observability.open-cluster-management.io observabilityaddons.observability.open-cluster-management.io observatoria.core.observatorium.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- ベアメタルクラスター用に独自の storageClass を作成する場合は、NFS を使用した永続ストレージ を参照してください。
-
可観測性コンポーネントがデフォルトの storageClass を検索できるようにするには、
multicluster-observability-operatorカスタムリソース定義のstorageClassパラメーターを更新します。パラメーターは、以下のような値になります。
storageclass.kubernetes.io/is-default-class: "true"
storageclass.kubernetes.io/is-default-class: "true"
インストールが完了すると、可観測性コンポーネントのステータスが Ready に更新されます。インストールの完了に失敗すると、ステータスが Fail と表示されます。
1.30. OpenShift モニタリングサービスのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターの可観測性サービスは OpenShift Container Platform モニタリングスタックからメトリクスを収集する必要があります。metrics-collector は、OpenShift Container Platform モニタリングスタックが準備状態にならないと、インストールされません。
1.30.1. 現象: OpenShift モニタリングサービスが準備状態にならない リンクのコピーリンクがクリップボードにコピーされました!
endpoint-observability-operator-x Pod は、prometheus-k8s サービスが openshift-monitoring namespace で利用可能かどうかを確認します。このサービスが openshift-monitoring namespace に存在しない場合は、metrics-collector はデプロイされません。Failed to get prometheus resource というエラーメッセージが表示される可能性があります。
1.30.2. 問題の解決: OpenShift モニタリングサービスが準備状態にならない リンクのコピーリンクがクリップボードにコピーされました!
この問題が発生した場合は、以下の手順を実行します。
- OpenShift Container Platform クラスターにログイン。
-
openshift-monitoringnamespace にアクセスし、prometheus-k8sサービスが利用可能であることを確認。 -
マネージドクラスターの
open-cluster-management-addon-observabilitynamespace で、endpoint-observability-operator-xPod を再起動。
1.31. metrics-collector のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターで observability-client-ca-certificate シークレットが更新されないと、内部サーバーのエラーが発生する可能性があります。
1.33. Thanos コンパクターのブロックエラーのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Thanos コンパクターのブロックが破損していることを示すブロックエラーメッセージが表示される場合があります。
1.33.1. 現象: Thanos コンパクターのブロックエラー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes をアップグレードし、oc logs observability-thanos-compact-0 コマンドを使用して Thanos コンパクターのログを確認すると、ログに次のエラーメッセージが表示されます。
ts=2024-01-24T15:34:51.948653839Z caller=compact.go:491 level=error msg="critical error detected; halting" err="compaction: group 0@15699422364132557315: compact blocks [/var/thanos/compact/compact/0@15699422364132557315/01HKZGQGJCKQWF3XMA8EXAMPLE /var/thanos/compact/compact/0@15699422364132557315/01HKZQK7TD06J2XWGR5EXAMPLE /var/thanos/compact/compact/0@15699422364132557315/01HKZYEZ2DVDQXF1STVEXAMPLE /var/thanos/compact/compact/0@15699422364132557315/01HM05APAHXBQSNC0N5EXAMPLE]: populate block: chunk iter: cannot populate chunk 8 from block 01HKZYEZ2DVDQXF1STVEXAMPLE: segment index 0 out of range"
ts=2024-01-24T15:34:51.948653839Z caller=compact.go:491 level=error msg="critical error detected; halting" err="compaction: group 0@15699422364132557315: compact blocks [/var/thanos/compact/compact/0@15699422364132557315/01HKZGQGJCKQWF3XMA8EXAMPLE /var/thanos/compact/compact/0@15699422364132557315/01HKZQK7TD06J2XWGR5EXAMPLE /var/thanos/compact/compact/0@15699422364132557315/01HKZYEZ2DVDQXF1STVEXAMPLE /var/thanos/compact/compact/0@15699422364132557315/01HM05APAHXBQSNC0N5EXAMPLE]: populate block: chunk iter: cannot populate chunk 8 from block 01HKZYEZ2DVDQXF1STVEXAMPLE: segment index 0 out of range"
1.33.2. 問題の解決: thanos bucket verify コマンドを追加する リンクのコピーリンクがクリップボードにコピーされました!
オブジェクトストレージ設定に thanos bucket verify コマンドを追加します。以下の手順を実行します。
オブジェクトストレージ設定に
thanos bucket verifyコマンドを追加して、ブロックエラーを解決します。次のコマンドを使用して、observability-thanos-compactPod を設定します。oc rsh observability-thanos-compact-0 [..] thanos tools bucket verify -r --objstore.config="$OBJSTORE_CONFIG" --objstore-backup.config="$OBJSTORE_CONFIG" --id=01HKZYEZ2DVDQXF1STVEXAMPLE
oc rsh observability-thanos-compact-0 [..] thanos tools bucket verify -r --objstore.config="$OBJSTORE_CONFIG" --objstore-backup.config="$OBJSTORE_CONFIG" --id=01HKZYEZ2DVDQXF1STVEXAMPLECopy to Clipboard Copied! Toggle word wrap Toggle overflow 前のコマンドが機能しない場合は、ブロックが破損している可能性があるため、削除対象としてマークする必要があります。以下のコマンドを実行します。
thanos tools bucket mark --id "01HKZYEZ2DVDQXF1STVEXAMPLE" --objstore.config="$OBJSTORE_CONFIG" --marker=deletion-mark.json --details=DELETE
thanos tools bucket mark --id "01HKZYEZ2DVDQXF1STVEXAMPLE" --objstore.config="$OBJSTORE_CONFIG" --marker=deletion-mark.json --details=DELETECopy to Clipboard Copied! Toggle word wrap Toggle overflow 削除をブロックした場合は、次のコマンドを実行してマークされたブロックをクリーンアップします。
thanos tools bucket cleanup --objstore.config="$OBJSTORE_CONFIG"
thanos tools bucket cleanup --objstore.config="$OBJSTORE_CONFIG"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.34. 検索データベースのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
検索またはアプリケーショントポロジーが欠落している場合は、検索データが同期していない可能性があります。
この問題を回避するには、以下の手順を実行します。
-
open-cluster-managementnamespace でsearch-indexerPod を再起動します。 -
Search ページに移動し、
kind:Clusterを検索します。 - Topology ビューに切り替え、クラスターの一覧がマネージドクラスターと一致することを確認します。
1.35. インストール後に Submariner が接続できない場合のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Submariner を設定しても正常に実行できない場合は、次の手順を実行して問題を診断します。
1.35.1. 現象: Submariner がインストール後に接続されない リンクのコピーリンクがクリップボードにコピーされました!
インストール後、Submariner ネットワークが通信していません。
1.35.2. 問題の特定: Submariner がインストール後に接続されない リンクのコピーリンクがクリップボードにコピーされました!
Submariner のデプロイ後にネットワーク接続が確立されない場合は、トラブルシューティング手順を開始します。Submariner をデプロイすると、プロセスが完了するまでに数分かかる場合があることに注意してください。
1.35.3. 問題の解決: Submariner がインストール後に接続されない リンクのコピーリンクがクリップボードにコピーされました!
デプロイメントした後で Submariner が正常に実行できない場合は、次の手順を実行します。
Submariner のコンポーネントが正しくデプロイメントされているかどうかを判断するには、次の要件を確認してください。
-
submariner-addonPod は、ハブクラスターのopen-cluster-managementnamespace で実行されています。 次の Pod は、各マネージドクラスターの
submariner-operatornamespace で実行されています。- submariner-addon
- submariner-gateway
- submariner-routeagent
- submariner-operator
- submariner-globalnet (ClusterSet で Globalnet が有効になっている場合のみ)
- submariner-lighthouse-agent
- submariner-lighthouse-coredns
-
submariner-networkplugin-syncer (指定された CNI 値が
OVNKubernetesの場合のみ) - submariner-metrics-proxy
-
-
subctl diagnose allコマンドを実行して、必要な Pod (submariner-addonPod は除く) のステータスを確認します。 -
必ず
must-gatherコマンドを実行して、デバッグ問題で役立つログを収集してください。
1.36. Submariner アドオンのステータスが低下してい場合のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
クラスターセット内のクラスターに Submariner アドオンを追加すると、Connection status、Agent status、および Gateway nodes のステータスにクラスターの予期しないステータスが表示されます。
1.36.1. 現象: Submariner のアドオンステータスが低下している リンクのコピーリンクがクリップボードにコピーされました!
クラスターセット内のクラスターに Submariner アドオンを追加すると、クラスターの Gateway nodes、Agent status、および Connection status に次のステータスが表示されます。
ラベルの付いたゲートウェイノード
-
Progressing: ゲートウェイノードにラベルを付けるプロセスが開始されました。 -
Nodes not labeled: ゲートウェイノードはラベル付けされていません。おそらく、それらにラベルを付けるプロセスが完了していないためです。 -
Nodes not labeled: おそらくプロセスが別のプロセスの終了を待機しているため、ゲートウェイノードはまだラベル付けされていません。 - Nodes labeled: ゲートウェイノードにはラベルが付けられています。
-
エージェントのステータス
- Progressing: Submariner エージェントのインストールが開始されました。
- Degraded: Submariner エージェントが正しく実行されていません。おそらく、まだ進行中です。
接続状態
- Progressing: Submariner アドオンとの接続を確立するプロセスが開始されました。
-
Degraded: 接続の準備ができていません。アドオンをインストールしたばかりの場合は、プロセスがまだ進行中である可能性があります。接続がすでに確立されて実行された後である場合は、2 つのクラスターが相互に接続を失っています。複数のクラスターがある場合、いずれかのクラスターが切断状態にあると、すべてのクラスターに
Degradedステータスが表示されます。
また、接続されているクラスターと切断されているクラスターも表示されます。
1.36.2. 問題の解決: Submariner のアドオンステータスが低下している リンクのコピーリンクがクリップボードにコピーされました!
- degraded ステータスは、プロセスが完了すると自動的に解決することがよくあります。表のステータスをクリックすると、プロセスの現在のステップを確認できます。その情報を使用して、プロセスが終了したかどうかを判断し、他のトラブルシューティング手順を実行する必要があります。
それ自体で解決しない問題の場合は、次の手順を実行して問題のトラブルシューティングを行います。
次の条件が存在する場合、
subctlユーティリティーでdiagnoseコマンドを使用して、Submariner 接続でいくつかのテストを実行できます。-
Agent status または Connection status は
Degraded状態です。diagnoseコマンドは、問題に関する詳細な分析を提供します。 コンソールではすべてが緑色ですが、ネットワーク接続が正しく機能していません。
diagnoseコマンドは、コンソールの外部に他の接続またはデプロイメントの問題がないことを確認するのに役立ちます。問題を特定するために、デプロイメント後にdiagnosticsコマンドを実行することを推奨します。コマンドの実行方法の詳細は、Submariner の
diagnoseを参照してください。
-
Agent status または Connection status は
Connection statusで問題が続く場合は、subctlユーティリティーツールのdiagnoseコマンドを実行して、2 つの Submariner クラスター間の接続のより詳細なステータスを取得することから始めることができます。コマンドの形式は次のとおりです。subctl diagnose all --kubeconfig <path-to-kubeconfig-file>
subctl diagnose all --kubeconfig <path-to-kubeconfig-file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow path-to-kubeconfig-fileをkubeconfigファイルへのパスに置き換えます。コマンドの詳細は、Submariner のドキュメントのdiagnoseを参照してください。ファイアウォールの設定を確認してください。接続の問題は、クラスターの通信を妨げるファイアウォールのアクセス許可の問題が原因で発生する場合があります。これにより、
Connection statusが degraded として表示される可能性があります。次のコマンドを実行して、ファイアウォールの問題を確認します。subctl diagnose firewall inter-cluster <path-to-local-kubeconfig> <path-to-remote-cluster-kubeconfig>
subctl diagnose firewall inter-cluster <path-to-local-kubeconfig> <path-to-remote-cluster-kubeconfig>Copy to Clipboard Copied! Toggle word wrap Toggle overflow path-to-local-kubeconfigを、いずれかのクラスターのkubeconfigファイルへのパスに置き換えます。path-to-remote-kubeconfigを、他のクラスターのkubeconfigファイルへのパスに置き換えます。subctlユーティリティーツールでverifyコマンドを実行して、2 つの Submariner クラスター間の接続をテストできます。コマンドの基本的な形式は次のとおりです。Connection statusで問題が続く場合は、subctlユーティリティーツールでverifyコマンドを実行して、2 つの Submariner クラスター間の接続をテストできます。コマンドの基本的な形式は次のとおりです。subctl verify --kubecontexts <cluster1>,<cluster2> [flags]
subctl verify --kubecontexts <cluster1>,<cluster2> [flags]Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster1とcluster2を、テストしているクラスターの名前に置き換えます。コマンドの詳細は、Submariner のドキュメントのverifyを参照してください。トラブルシューティング手順で問題が解決したら、
subctlツールでbenchmarkコマンドを使用して、追加の診断を実行するときに比較する基準を確立します。コマンドのオプションの詳細は、Submariner のドキュメントの
benchmarkを参照してください。
1.37. 復元ステータスがエラーで終了する場合のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
バックアップを復元すると、リソースは正しく復元されますが、Red Hat Advanced Cluster Management の復元リソースには FinishedWithErrors ステータスが表示されます。
1.37.1. 現象: 復元ステータスのトラブルシューティングがエラーで終了する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management は FinishedWithErrors ステータスを示し、Red Hat Advanced Cluster Management の復元で作成された 1 つ以上の Velero 復元リソースは PartiallyFailed ステータスを示します。
1.37.2. 問題の解決: 復元ステータスのトラブルシューティングがエラーで終了する リンクのコピーリンクがクリップボードにコピーされました!
空のバックアップから復元する場合は、FinishedWithErrors ステータスを無視しても安全です。
Red Hat Advanced Cluster Management for Kubernetes の復元では、すべての Velero リストアリソースの累積ステータスが表示されます。1 つのステータスが PartiallyFailed で、他のステータスが Completed の場合、少なくとも 1 つの問題があることが示すために累積ステータスとして PartiallyFailed が表示されます。
この問題を解決するには、ステータスが PartiallyFailed になっているすべての Velero 復元リソースのステータスを個別に確認し、さらにログで詳細を確認します。ログはオブジェクトストレージから直接取得するか、DownloadRequest カスタムリソースを使用して OADP Operator からダウンロードできます。
コンソールから DownloadRequest を作成するには、次の手順を実行します。
- Operators > Installed Operators > Create DownloadRequest に移動します。
-
Kind として
BackupLogを選択し、コンソールの指示に従ってDownloadRequestの作成を完了します。
1.38. ハブクラスターのバックアップを復元すると汎用リソースが削除される リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターのバックアップを復元し、Restore.cluster.open-cluster-management.io リソースで cleanupBeforeRestore: CleanupRestored パラメーターを使用すると、acm-resources-generic-schedule バックアップで作成されたリソースが削除される可能性があります。
1.38.1. 現象: ハブクラスターのバックアップを復元すると汎用リソースが削除される リンクのコピーリンクがクリップボードにコピーされました!
acm-resources-generic-schedule バックアップでバックアップされたリソースは、復元されたハブクラスターには表示されません。バックアップオペレーターのログを確認すると、次のようなメッセージが表示されます。
_2023-06-08T13:42:48.066572033Z 2023-06-08T13:42:48.066Z INFO Deleting resource DRPlacementControl [c1-helloworld-placement-1-drpc.c1-helloworld] {"controller": "restore", "controllerGroup": "cluster.open-cluster-management.io", "controllerKind": "Restore", "restore":
{"name":"restore-acm","namespace":"open-cluster-management-backup"}
_2023-06-08T13:42:48.066572033Z 2023-06-08T13:42:48.066Z INFO Deleting resource DRPlacementControl [c1-helloworld-placement-1-drpc.c1-helloworld] {"controller": "restore", "controllerGroup": "cluster.open-cluster-management.io", "controllerKind": "Restore", "restore":
{"name":"restore-acm","namespace":"open-cluster-management-backup"}
1.38.2. 問題の解決: ハブクラスターのバックアップを復元すると汎用リソースが削除される リンクのコピーリンクがクリップボードにコピーされました!
次の状況が発生した場合、リソースは削除されます。
-
acm-resources-generic-scheduleバックアップによってバックアップされたリソースが、cluster.open-cluster-management.io/backupラベルを持つ Secret または ConfigMap リソースタイプと一致しない。 -
Restore.cluster.open-cluster-management.ioリソースを使用するリストアを実行し、cleanupBeforeRestore:値をCleanupRestoredに設定します。 -
最新の Red Hat Advanced Cluster Management バックアップセットには
acm-resources-scheduleバックアップが含まれていないため、古いバージョンのバックアップが選択されます。その結果、acm-resources-scheduleバックアップのタイムスタンプは、acm-resources-generic-scheduleバックアップとは異なります。復元後の操作中に CleanRestore オプションが処理されると、すべての汎用リソースはacm-resources-schedule backupと同じタイムスタンプを持たないため、クリーンアップされます。
この問題を解決するには、復元操作を再度実行して、cleanupBeforeRestore: 値を None に設定します。
1.39. 複数行の YAML 解析のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
fromSecret 関数を使用して Secret リソースのコンテンツを Route リソースに追加すると、コンテンツが正しく表示されません。
1.39.1. 現象: 複数行の YAML 解析のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターとハブクラスターが同じクラスターである場合、証明書データは編集されるため、内容はテンプレート JSON 文字列として解析されません。次のエラーメッセージが表示される場合があります。
1.39.2. 問題の解決: 複数行の YAML 解析のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターとマネージドクラスターの fromSecret 値を取得するように証明書ポリシーを設定します。autoindent 機能を使用して、次の内容で証明書ポリシーを更新します。
tls:
certificate: |
{{ print "{{hub fromSecret "open-cluster-management" "minio-cert" "tls.crt" hub}}" | base64dec | autoindent }}
tls:
certificate: |
{{ print "{{hub fromSecret "open-cluster-management" "minio-cert" "tls.crt" hub}}" | base64dec | autoindent }}