第7章 既知の問題
このセクションでは、Red Hat OpenShift Data Foundation 4.13 の既知の問題について説明します。
7.1. 障害復旧 リンクのコピーリンクがクリップボードにコピーされました!
フェイルオーバーアクションは、RPC エラー still in use を表示し、Pod で失敗した RADOS ブロックデバイスのイメージマウントを報告する。
障害復旧 (DR) で保護されるワークロードをフェイルオーバーすると、フェイルオーバーしたクラスター上のボリュームを使用している Pod が、RADOS ブロックデバイス (RBD) イメージがまだ使用中であることを報告する時に停止する可能性があります。これにより、Pod が長時間 (最大数時間) 起動できなくなります。
フェイルオーバーアクションは、RPC エラー fsck を表示し、Pod で失敗した RADOS ブロックデバイスのイメージマウントを報告する。
障害復旧 (DR) で保護されるワークロードをフェイルオーバーすると、ボリュームにファイルシステムの整合性チェック (fsck) エラーがあると示すボリュームマウントエラーにより、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のコマンドを実行します。
一部のイメージで RBD ミラースケジューリングが停止する
Ceph Manager デーモンは、さまざまな理由でブロックリストに登録されます。これにより、スケジュールされた RBD ミラースナップショットが、イメージがプライマリーであるクラスターでトリガーされなくなります。ミラーリングが有効になっている (つまり DR 保護されている) すべての RBD イメージは、
rbd mirror snapshot schedule status -p ocs-storagecluster-cephblockpoolを使用して調べたときにスケジュールを一覧表示しないため、ピアサイトにアクティブにミラーリングされません。回避策: イメージがプライマリーである管理対象クラスターで Ceph Manager のデプロイを再起動して、現在実行中のインスタンスに対するブロックリストを回避します。これは、次のように Ceph Manager のデプロイをスケールダウンしてからスケールアップすることで実行できます。
oc -n openshift-storage scale deployments/rook-ceph-mgr-a --replicas=0 oc -n openshift-storage scale deployments/rook-ceph-mgr-a --replicas=1
$ oc -n openshift-storage scale deployments/rook-ceph-mgr-a --replicas=0 $ oc -n openshift-storage scale deployments/rook-ceph-mgr-a --replicas=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 結果:
rbd mirror snapshot schedule status -p ocs-storagecluster-cephblockpoolを使用して調べると、DR が有効で、管理対象クラスターでプライマリーとして示されているイメージがミラーリングスケジュールの報告を開始します。
クラスターがストレッチモードの場合、ceph
dfが無効な MAX AVAIL 値を報告するRed Hat Ceph Storage クラスターのクラッシュルールに複数の "take" ステップがある場合、
ceph dfレポートは、マップの使用可能な最大サイズを間違って表示します。この問題は、今後のリリースで修正される予定です。
Ceph が Globalnet によって割り当てられたグローバル IP を認識しない
Ceph は Globalnet によって割り当てられたグローバル IP を認識しないため、Globalnet を使用して重複するサービス CIDR を持つクラスター間で障害復旧ソリューションを設定することはできません。このため、サービス
CIDRが重複している場合、障害復旧ソリューションは機能しません。
両方の 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 ストアからクリーンアップします。タイムスタンプがフェイルオーバーまたは再配置の時刻に近いものだけを保持します。
結果: 復元操作が完了し、フェイルオーバーまたは再配置操作が次のステップに進みます。
ワークロードをピアクラスターにフェイルオーバーまたは再配置すると、フェイルオーバーまたは再配置元のクラスターがクリーンアップされるまで、
PeerReady条件がtrueに設定される障害復旧 (DR) アクションを開始した後、ワークロードがピアクラスターにフェイルオーバーまたは再配置される間、
PeerReady条件は最初にtrueに設定されます。その後、フェイルオーバーまたは再配置元のクラスターは、今後のアクションのためにクリーンアップされるまで、falseに設定されます。アクションを実行するためにDRPlacementControlステータス条件を見ているユーザーは、この中間的なPeerReady状態を見て、ピアの準備ができていると認識し、アクションを実行する可能性があります。この場合、操作は保留中されるか失敗し、回復するためにユーザーの介入が必要になることがあります。回避策: アクションを実行する前に、
AvailableとPeerReadyの両方の状態を調べます。ワークロードの DR 状態を正常にするために、両方がtrueである必要があります。両方の状態が true のときにアクションを実行すれば、要求された操作が進行します。
障害復旧のワークロードが削除されたままになる
クラスターからワークロードを削除すると、対応する Pod が
FailedKillPodなどのイベントで終了しない場合があります。これにより、PVC、VolumeReplication、VolumeReplicationGroupなどの DR リソースに依存するガベージコレクションで遅延または障害が発生する可能性があります。また、古いリソースがまだガベージコレクションされていないため、クラスターへの同じワークロードの今後のデプロイもできなくなります。回避策: Pod が現在実行中で、終了状態でスタックしているワーカーノードを再起動します。これにより、Pod が正常に終了し、その後、関連する DR API リソースもガベージコレクションされます。
ブロックリスト登録により Pod がエラー状態で停止することがある
ネットワークの問題、または非常に過負荷/不均衡なクラスターが原因でブロックリスト登録が実行されると、テイルレイテンシーが急増します。このため、Pod は
CreateContainerErrorでスタックし、次のメッセージが表示されます。Error: relabel failed /var/lib/kubelet/pods/cb27938e-f66f-401d-85f0-9eb5cf565ace/volumes/kubernetes.io~csi/pvc-86e7da91-29f9-4418-80a7-4ae7610bb613/mount: lsetxattr /var/lib/kubelet/pods/cb27938e-f66f-401d-85f0-9eb5cf565ace/volumes/kubernetes.io~csi/pvc-86e7da91-29f9-4418-80a7-4ae7610bb613/mount/#ib_16384_0.dblwr: read-only file system.
Error: relabel failed /var/lib/kubelet/pods/cb27938e-f66f-401d-85f0-9eb5cf565ace/volumes/kubernetes.io~csi/pvc-86e7da91-29f9-4418-80a7-4ae7610bb613/mount: lsetxattr /var/lib/kubelet/pods/cb27938e-f66f-401d-85f0-9eb5cf565ace/volumes/kubernetes.io~csi/pvc-86e7da91-29f9-4418-80a7-4ae7610bb613/mount/#ib_16384_0.dblwr: read-only file system.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 回避策: 次の手順に従って、これらの Pod がスケジュールされ、障害が発生しているノードを再起動します。
- 問題のあるノードを遮断してからドレインします。
- 問題のあるノードを再起動します。
問題のあるノードのコードの遮断を解除します。
マネージドクラスターが OpenShift Container Platform と OpenShift Data Foundation の異なるバージョン上にある場合、アプリケーションのフェイルオーバーが
Failover状態でハングするOpenShift Data Foundation 4.13 を使用した障害復旧ソリューションは、永続ボリューム (PV) データに加えて永続ボリューム要求 (PVC) データを保護および復元します。プライマリークラスターが古い OpenShift Data Foundation バージョン上にあり、ターゲットクラスターが 4.13 に更新されている場合、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"}]'$ oc patch validatingwebhookconfigurations vdrplacementcontrol.kb.io-lq2kz --type=json --patch='[{"op": "remove", "path": "/webhooks"}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
サブスクリプションベースのワークロードに関連付けられた特定の管理リソースが削除される
ハブのリカバリー中に、OpenShift Data Foudation で Red Hat Advanced Cluster Management バージョン 2.7.4 (またはそれ以降) の既知の問題が発生し、サブスクリプションベースのワークロードに関連付けられた特定の管理リソースが意図せず削除される可能性があります。現在、この問題には既知の回避策がありません。
ハブの回復後にピアの準備完了ステータスが
Unknownと表示されるゾーン障害とハブの回復後、障害復旧の配置制御 (DRPC) 内のサブスクリプションおよびアプリケーションセットアプリケーションのピア準備完了ステータスが
Unknownと表示されることがあります。これは表面上の問題であり、Ramen の通常の機能には影響せず、ocコマンドを使用して表示したときの DRPC 出力の外観に限定されます。回避策: YAML 出力を使用して、正しいステータスを確認します。
oc get drpc -o yaml
$ oc get drpc -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.1. DR アップグレード リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、障害復旧環境での Red Hat OpenShift Data Foundation のバージョン 4.12 から 4.13 へのアップグレードに関連する問題と回避策について説明します。
アップグレード前に存在していたワークロードのフェイルオーバーまたは再配置がブロックされる
OpenShift Data Foundation Disaster Recovery ソリューションは、永続ボリューム (PV) データに加えて永続ボリューム要求 (PVC) データも保護します。アップグレード前に存在していたワークロードでは、PVC データがバックアップされていないため、フェイルオーバーまたは再配置がブロックされます。
回避策:
各ワークロードのプライマリークラスターで次の手順を実行して、OpenShift Data Foundation Disaster Recovery ソリューションが PV データに加えて PVC データを確実にバックアップするようにします。
ボリュームレプリケーショングループ (VRG) のステータスを編集します。
oc edit --subresource=status vrg -n <namespace> <name>
$ oc edit --subresource=status vrg -n <namespace> <name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
vrg.Status.ProtectedPVCs条件ごとに、ClusterDataProtected ステータスをFalseに設定します。これにより、S3 ストアにアプリケーション PVC が追加されます。 - Ramen Pod を 0 にスケールダウンしてから 1 に戻して再起動します。
-
すべての
vrg.Status.ProtectedPVCs条件のClusterDataProtectedステータスが再びTRUEに変わるのを待って、S3 ストアにアプリケーション PVC が設定されていることを確認します。
フェイルオーバーまたは再配置操作を開始する場合は、次の手順を実行します。
フェイルオーバーまたは再配置操作を開始する前に、DRPC ステータスサブリソースを編集して、
status.preferredDecision.ClusterNamespaceフィールドをクリアします (まだ編集していない場合)。oc edit --subresource=status drpc -n <namespace> <name>
$ oc edit --subresource=status drpc -n <namespace> <name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
status.preferredDecision.ClusterNamespaceでキャッシュされた値が間違っているOpenShift Data Foundation がバージョン 4.12 から 4.13 にアップグレードされると、障害復旧配置制御 (DRPC) の
status.preferredDecision.ClusterNamespaceに誤った値がキャッシュされる可能性があります。その結果、DRPC はフェイルオーバーがすでに完了していることを検出せず、誤ってWaitForFencingPROGRESSION に入ります。マネージドクラスターのワークロードは、この問題の影響を受けません。回避策:
-
影響を受ける DRPC を特定するには、CURRENTSTATE として
FailedOver状態にあり、WaitForFencingPROGRESSION でスタックしている DRPC がないか確認します。 間違った値をクリアするには、DRPC サブリソースを編集し、
status.PreferredCluster.ClusterNamespaceという行を削除します。oc edit --subresource=status drpc -n <namespace> <name>
$ oc edit --subresource=status drpc -n <namespace> <name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow DRPC ステータスを確認するには、PROGRESSION が
COMPLETED状態であり、FailedOverが CURRENTSTATE であるかどうかを確認します。
-
影響を受ける DRPC を特定するには、CURRENTSTATE として