第7章 既知の問題
このセクションでは、Red Hat OpenShift Data Foundation 4.14 の既知の問題について説明します。
7.1. 障害復旧
フェイルオーバーアクションは、RPC エラー still in use を表示し、Pod で失敗した RADOS ブロックデバイスのイメージマウントを報告する。
障害復旧 (DR) で保護されるワークロードをフェイルオーバーすると、フェイルオーバーしたクラスター上のボリュームを使用している Pod が、RADOS ブロックデバイス (RBD) イメージがまだ使用中であることを報告する時に停止する可能性があります。これにより、Pod が長時間 (最大数時間) 起動できなくなります。
マネージドクラスターのアプリケーション 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 クラスターのクラッシュルールに複数の実行ステップがある場合、
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 後のアクションに失敗しなくなりました。
再配置中にアプリケーションが Relocating 状態でスタックする
マルチクラウドオブジェクトゲートウェイでは、同じ名前または namespace の複数の永続ボリューム (PV) オブジェクトを同じパスの S3 ストアに追加できました。これにより、同一の
claimRef
を指す複数のバージョンが検出されたため、Ramen は PV を復元しません。回避策: S3 CLI または同等の機能を使用して、重複する PV オブジェクトを S3 ストアからクリーンアップします。タイムスタンプがフェイルオーバーまたは再配置の時刻に近いものだけを保持します。
結果: 復元操作が完了し、フェイルオーバーまたは再配置操作が次のステップに進みます。
障害復旧のワークロードが削除されたままになる
クラスターからワークロードを削除すると、対応する Pod が
FailedKillPod
などのイベントで終了しない場合があります。これにより、PVC
、VolumeReplication
、VolumeReplicationGroup
などの DR リソースに依存するガベージコレクションで遅延または障害が発生する可能性があります。また、古いリソースがまだガベージコレクションされていないため、クラスターへの同じワークロードの今後のデプロイもできなくなります。回避策: Pod が現在実行中で、終了状態でスタックしているワーカーノードを再起動します。これにより、Pod が正常に終了し、その後、関連する DR API リソースもガベージコレクションされます。
マネージドクラスターが OpenShift Container Platform と OpenShift Data Foundation の異なるバージョン上にある場合、アプリケーションのフェイルオーバーが
Failover
状態でハングするOpenShift Data Foundation 4.14 を使用した障害復旧ソリューションは、永続ボリューム (PV) データに加えて永続ボリューム要求 (PVC) データを保護および復元します。プライマリークラスターが古い OpenShift Data Foundation バージョン上にあり、ターゲットクラスターが 4.14 に更新されている場合、S3 ストアに PVC データがないため、フェイルオーバーが停止します。
回避策: Disaster Recovery クラスターをアップグレードする場合は、最初にプライマリークラスターをアップグレードしてから、アップグレード後の手順を実行する必要があります。
DRPolicy が同じ namespace 内の複数のアプリケーションに適用されると、ボリュームレプリケーショングループが作成されない
namespace 内の他のアプリケーションと同じ場所に配置されているアプリケーション用に DRPlacementControl (DRPC) が作成される場合、DRPC にはアプリケーション用のラベルセレクターセットがありません。その後ラベルセレクターに変更が加えられた場合、OpenShift Data Foundation Hub コントローラーの検証アドミッション Webhook は変更を拒否します。
回避策: アドミッション Webhook がそのような変更を許可するように変更されるまでは、DRPC
validatingwebhookconfigurations
にパッチを適用して Webhook を削除できます。$ oc patch validatingwebhookconfigurations vdrplacementcontrol.kb.io-lq2kz --type=json --patch='[{"op": "remove", "path": "/webhooks"}]'
c1 クラスターから c2 クラスターへのアプリのフェイルオーバーがフェイルオーバーでハングする
S3 ストアの設定ミスによりデータが S3 ストアにアップロードされない場合でも、Ramen は、フェイルオーバーアクションを無効にしないので、フェイルオーバー中にフェイルオーバークラスターでクラスターデータが利用できません。そのため、フェイルオーバーを完了できません。
回避策: 初期デプロイ後に Ramen ログを調べて、s3 設定エラーが報告されていないことを確認します。
$ oc get drpc -o yaml
ハブ復旧後のデータ損失の潜在的なリスク
孤立したリソースをクリーンアップするように設計されたエビクションルーチンにより、ハブの回復後に潜在的なデータ損失のリスクが存在します。このルーチンは、コレクション用の対応する
ManifestWorks
が欠如しているAppliedManifestWorks
インスタンスを識別し、マークします。1 時間のハードコーディングされた猶予期間が提供されます。この期間が経過すると、AppliedManifestWork
に関連付けられたすべてのリソースがガベージコレクションの対象になります。ハブクラスターが最初の 1 時間以内に対応する
ManifestWorks
を再生成できなかった場合は、データ損失が発生する可能性があります。これは、データ損失のリスクを最小限に抑えるために、ManifestWorks の
ハブ後のリカバリーの再作成を妨げる可能性がある問題に迅速に対処することの重要性を強調しています。
7.1.1. DR アップグレード
このセクションでは、障害復旧環境での Red Hat OpenShift Data Foundation のバージョン 4.13 から 4.14 へのアップグレードに関連する問題と回避策について説明します。
status.preferredDecision.ClusterNamespace
でキャッシュされた値が間違っているOpenShift Data Foundation がバージョン 4.13 から 4.14 にアップグレードされると、障害復旧配置制御 (DRPC) の
status.preferredDecision.ClusterNamespace
に誤った値がキャッシュされる可能性があります。その結果、DRPC はフェイルオーバーがすでに完了していることを検出せず、誤ってWaitForFencing
PROGRESSION に入ります。マネージドクラスターのワークロードは、この問題の影響を受けません。回避策:
-
影響を受ける DRPC を特定するには、CURRENTSTATE として
FailedOver
状態にあり、WaitForFencing
PROGRESSION でスタックしている DRPC がないか確認します。 間違った値をクリアするには、DRPC サブリソースを編集し、
status.PreferredCluster.ClusterNamespace
という行を削除します。$ oc edit --subresource=status drpc -n <namespace> <name>
DRPC ステータスを確認するには、PROGRESSION が
COMPLETED
状態であり、FailedOver
が CURRENTSTATE であるかどうかを確認します。
-
影響を受ける DRPC を特定するには、CURRENTSTATE として