第7章 既知の問題
このセクションでは、Red Hat OpenShift Data Foundation 4.16 の既知の問題を説明します。
7.1. 障害復旧
マネージドクラスターのアプリケーション namespace の作成
アプリケーション namespace は、Disaster Recovery(DR) 関連の事前デプロイアクションのために RHACM マネージドクラスターに存在する必要があるため、アプリケーションが ACM ハブクラスターにデプロイされるときに事前に作成されます。ただし、アプリケーションがハブクラスターで削除され、対応する namespace がマネージドクラスターで削除された場合、それらはマネージドクラスターに再表示されます。
回避策:
openshift-dr
は、ACM ハブのマネージドクラスター namespace に namespacemanifestwork
リソースを維持します。これらのリソースは、アプリケーションの削除後に削除する必要があります。たとえば、クラスター管理者として、ハブクラスターで以下のコマンドを実行します。$ oc delete manifestwork -n <managedCluster namespace> <drPlacementControl name>-<namespace>-ns-mw
クラスターがストレッチモードの場合、ceph
df
が無効な MAX AVAIL 値を報告するRed Hat Ceph Storage クラスターのクラッシュルールに複数の "take" ステップがある場合、
ceph df
レポートは、マップの使用可能な最大サイズを間違って表示します。この問題は、今後のリリースで修正される予定です。
両方の DRPC が、同じ namespace で作成されたすべての永続ボリューム要求を保護する
複数の障害復旧 (DR) で保護されたワークロードをホストする namespace は、指定されていないハブクラスター上の同じ namespace 内の各 DRPlacementControl リソースの namespace にある永続ボリュームクレーム (PVC) をすべて保護し、その
spec.pvcSelector
フィールドを使用してワークロードに基づいて PVC を分離します。これにより、複数のワークロードにわたって DRPlacementControl
spec.pvcSelector
に一致する PVC が生成されます。あるいは、すべてのワークロードでセレクターが欠落している場合、レプリケーション管理が各 PVC を複数回管理し、個々の DRPlacementControl アクションに基づいてデータの破損または無効な操作を引き起こす可能性があります。回避策: ワークロードに属する PVC に一意のラベルを付け、選択したラベルを DRPlacementControl
spec.pvcSelector
として使用して、どの DRPlacementControl が namespace 内の PVC のどのサブセットを保護および管理するかを明確にします。ユーザーインターフェイスを使用して DRPlacementControl のspec.pvcSelector
フィールドを指定することはできません。したがって、そのようなアプリケーションの DRPlacementControl を削除し、コマンドラインを使用して作成する必要があります。結果: PVC は複数の DRPlacementControl リソースによって管理されなくなり、操作およびデータの不整合は発生しません。
MongoDB Pod は、
cephrbd
ボリュームのデータを読み取る許可エラーのため、CrashLoopBackoff
になっています異なるマネージドクラスターにまたがる OpenShift プロジェクトには、異なるセキュリティーコンテキスト制約 (SCC) があり、特に指定された UID 範囲と
FSGroups
が異なります。これにより、特定のワークロード Pod とコンテナーが、ログ内のファイルシステムアクセスエラーが原因で、これらのプロジェクト内でフェイルオーバーの操作または再配置操作を開始できなくなります。回避策: ワークロードプロジェクトが同じプロジェクトレベルの SCC ラベルを持つすべてのマネージドクラスターで作成されていることを確認し、フェイルオーバーまたは再配置時に同じファイルシステムコンテキストを使用できるようにします。Pod は、ファイルシステム関連のアクセスエラーで DR 後のアクションに失敗しなくなりました。
障害復旧のワークロードが削除されたままになる
クラスターからワークロードを削除すると、対応する Pod が
FailedKillPod
などのイベントで終了しない場合があります。これにより、PVC
、VolumeReplication
、VolumeReplicationGroup
などの DR リソースに依存するガベージコレクションで遅延または障害が発生する可能性があります。また、古いリソースがまだガベージコレクションされていないため、クラスターへの同じワークロードの今後のデプロイもできなくなります。回避策: Pod が現在実行中で、終了状態でスタックしているワーカーノードを再起動します。これにより、Pod が正常に終了し、その後、関連する DR API リソースもガベージコレクションされます。
Regional DR CephFS ベースのアプリケーションのフェイルオーバーで、サブスクリプションに関する警告が表示される
アプリケーションがフェイルオーバーまたは再配置されると、ハブサブスクリプションに "Some resources failed to deployUse View status YAML link to view the details." というエラーが表示されます。これは、バッキングストレージプロビジョナーとして CephFS を使用し、Red Hat Advanced Cluster Management for Kubernetes (RHACM) サブスクリプションでデプロイし、DR で保護されたアプリケーションの永続ボリューム要求 (PVC) がそれぞれの DR コントローラーにより所有されているためです。
回避策: サブスクリプションステータスのエラーを修正する回避策はありません。ただし、デプロイに失敗したサブスクリプションリソースをチェックして、それらが PVC であることを確認できます。これにより、他のリソースに問題が発生しないようにします。サブスクリプション内のデプロイに失敗した唯一のリソースが DR で保護されているリソースである場合、エラーは無視できます。
PeerReady
フラグを無効にすると、アクションをフェイルオーバーに変更できなくなりますDR コントローラーは、必要に応じて完全な調整を実行します。クラスターにアクセスできなくなると、DR コントローラーは健全性チェックを実行します。ワークロードがすでに再配置されている場合、この健全性チェックによりワークロードに関連付けられた
PeerReady
フラグが無効になり、クラスターがオフラインであるため健全性チェックは完了しません。その結果、無効にされたPeerReady
フラグは、アクションを Failover に変更できなくなります。回避策: コマンドラインインターフェイスを使用して、
PeerReady
フラグが無効になっているにもかかわらず、DR アクションをフェイルオーバーに変更します。
ストレッチクラスター内の 2 つのデータセンター間の接続が失われると、Ceph にアクセスできなくなり、IO が一時停止します。
2 つのデータセンターが相互の接続を失っても Arbiter ノードに接続されたままの場合は、モニター間で無限の選出が発生するという選出ロジックに不具合があります。その結果、モニターはリーダーを選出できず、Ceph クラスターが使用できなくなります。また、接続が切断されている間は IO が一時停止されます。
回避策: モニターがクォーラムを超えているデータセンターの 1 つでモニターをシャットダウンし (
ceph -s
コマンドを実行すると確認可)、残りのモニターの接続スコアをリセットします。その結果、モニターがクォーラムを形成できるようになり、Ceph が再び使用可能になり、IOs resume が再開します。
交換前のクラスターからの古い Ceph プール ID を使用すると、RBD アプリケーションの再配置に失敗する
新しいピアクラスターが作成される前に作成されたアプリケーションの場合、ピアクラスターが置き換えられると CSI configmap 内の CephBlockPoolID のマッピングを更新できないため、RBD PVC をマウントできません。
回避策: 交換されていないピアクラスター上の cephBlockPoolID のマッピングを使用して
rook-ceph-csi-mapping-config
configmap を更新します。これにより、アプリケーション用の RBD PVC をマウントできるようになります。
使用できない管理対象クラスター上のプライマリーワークロードのハブ回復後、
lastGroupSyncTime
に関する情報が失われる以前に管理対象クラスターにフェイルオーバーされたアプリケーションは
lastGroupSyncTime
を報告しないため、VolumeSynchronizationDelay
のアラートがトリガーされます。これは、DRPolicy の一部である ACM ハブと管理対象クラスターが使用できない場合、バックアップから新しい ACM ハブクラスターが再構築されるためです。回避策: ワークロードのフェイルオーバー先のマネージドクラスターが使用できない場合でも、残っているマネージドクラスターにフェイルオーバーできます。
MCO Operator が
veleroNamespaceSecretKeyRef
とCACertificates
フィールドを調整するOpenShift Data Foundation Operator がアップグレードされると、Ramen 設定の
s3StoreProfiles
の下のCACertificates
フィールドとveleroNamespaceSecretKeyRef
フィールドが失われます。回避策: Ramen 設定に
CACertificates
フィールドとveleroNamespaceSecretKeyRef
フィールドのカスタム値がある場合は、アップグレードの実行後にそれらのカスタム値を設定します。
アップグレード後の token-exchange-agent Pod が不安定である
以前のデプロイメントリソースが適切にクリーンアップされていないため、マネージドクラスター上の
token-exchange-agent
Pod が不安定になります。これにより、アプリケーションのフェイルオーバーアクションが失敗する可能性があります。回避策: ナレッジベースの記事 "token-exchange-agent" pod on managed cluster is unstable after upgrade to ODF 4.16.0 を参照してください。
結果: 回避策に従うと、"token-exchange-agent" pod が安定し、フェイルオーバーアクションが期待どおりに機能します。
再配置時に MAC 割り当てに失敗したため、
virtualmachines.kubevirt.io
リソースの復元に失敗する仮想マシンを優先クラスターに再配置すると、MAC アドレスが使用できないために再配置を完了できない場合があります。これは、仮想マシンがフェイルオーバークラスターにフェイルオーバーされたときに、優先されるクラスター上で完全に消去されていない場合に発生します。
ワークロードを再配置する前に、ワークロードが優先されるクラスターから完全に削除されていることを確認します。
ハブの復旧後にフェイルオーバーするとサブスクリプションアプリケーション Pod が起動しない
ハブの回復後、プライマリーマネージドクラスターからセカンダリーマネージドクラスターにフェイルオーバーすると、サブスクリプションアプリケーション Pod が起動しません。マネージドクラスターの
AppSub
サブスクリプションリソースで RBAC エラーが発生します。これは、バックアップと復元のシナリオにおけるタイミングの問題が原因です。各管理対象クラスターで application-manager Pod が再起動されると、ハブサブスクリプションとチャネルリソースは新しいハブで再作成されません。その結果、子のAppSub
サブスクリプションリソースはエラーで調整されます。回避策:
次のコマンドを使用して、
appsub
の名前を取得します。% oc get appsub -n <namespace of sub app>
次のコマンドを使用して、ハブの AppSub に任意の値を指定して新しいラベルを追加します。
% oc edit appsub -n <appsub-namespace> <appsub>-subscription-1
不明な証明書の問題を示す子の appsub エラーが引き続き存在する場合は、ワークロードがフェイルオーバーされるマネージドクラスターでアプリケーションマネージャー Pod を再起動します。
% oc delete pods -n open-cluster-management-agent-addon application-manager-<>-<>
ReplicationDestination
リソースがまだ作成されていない場合にフェイルオーバープロセスが失敗するLastGroupSyncTime
の更新前にユーザーがフェイルオーバーを開始すると、フェイルオーバープロセスが失敗する場合があります。このように失敗すると、ReplicationDestination
が存在しないことを示すエラーメッセージが表示されます。回避策:
ハブクラスターの VRG の
ManifestWork
を編集します。マニフェストから次のセクションを削除します。
/spec/workload/manifests/0/spec/volsync
変更を保存します。
この回避策を正しく適用すると、VRG は
ReplicationDestination
リソースを使用した PVC の復元の試行を省略します。PVC がすでに存在する場合、アプリケーションはそれをそのまま使用します。PVC が存在しない場合は、新しい PVC が作成されます。