第6章 既知の問題
このセクションでは、Red Hat OpenShift Data Foundation 4.17 の既知の問題を説明します。
6.1. 障害復旧
- クラスターがストレッチモードの場合、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 が一時停止されます。 - 回避策: ゾーンノードを停止して、いずれかのデータゾーンのモニターをシャットダウンします。さらに、存続した mon Pod の接続スコアをリセットすることもできます。 - その結果、モニターがクォーラムを形成できるようになり、Ceph が再び使用可能になり、IOs resume が再開します。 
- 交換前のクラスターからの古い Ceph プール ID を使用すると、RBD アプリケーションの再配置に失敗する - 新しいピアクラスターが作成される前に作成されたアプリケーションの場合、ピアクラスターが置き換えられると CSI configmap 内の CephBlockPoolID のマッピングを更新できないため、RBD PVC をマウントできません。 - 回避策: 交換されていないピアクラスター上の cephBlockPoolID のマッピングを使用して - rook-ceph-csi-mapping-configconfigmap を更新します。これにより、アプリケーション用の 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-agentPod が不安定になります。これにより、アプリケーションのフェイルオーバーアクションが失敗する可能性があります。- 回避策: ナレッジベースの記事 "token-exchange-agent" pod on managed cluster is unstable after upgrade to ODF 4.17.0 を参照してください。 - 結果: 回避策に従うと、"token-exchange-agent" pod が安定し、フェイルオーバーアクションが期待どおりに機能します。 
- 再配置時に MAC 割り当てに失敗したため、 - virtualmachines.kubevirt.ioリソースの復元に失敗する- 仮想マシンを優先クラスターに再配置すると、MAC アドレスが使用できないために再配置を完了できない場合があります。これは、仮想マシンがフェイルオーバークラスターにフェイルオーバーされたときに、優先されるクラスター上で完全に消去されていない場合に発生します。 - ワークロードを再配置する前に、ワークロードが優先されるクラスターから完全に削除されていることを確認します。 
- CephFS の再配置が WaitForReadiness で停止する - DRPC の進行が WaitForReadiness で停止するシナリオがあります。この状態が長期間続く場合は、既知の問題が発生し、Ramen が PlacementDecision を新しいプライマリーに更新できない可能性があります。 - その結果、再配置プロセスは完了せず、ワークロードは新しいプライマリークラスターにデプロイされないままになります。これにより、ユーザーが介入するまで回復が遅れる可能性があります。 - 回避策: 新しいプライマリーを指すように PlacementDecision を手動で更新します。 
- PlacementRule を使用するワークロードの場合: - PlacementRule を編集します。 - oc edit placementrule --subresource=status -n [namespace] [name of the placementrule]7 - $ oc edit placementrule --subresource=status -n [namespace] [name of the placementrule]7- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 以下に例を示します。 - oc edit placementrule --subresource=status -n busybox-workloads-cephfs-2 busybox-placement - $ oc edit placementrule --subresource=status -n busybox-workloads-cephfs-2 busybox-placement- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- placementrule のステータスに以下を追加します。 - status: decisions: - clusterName: [primary cluster name] reason: [primary cluster name]- status: decisions: - clusterName: [primary cluster name] reason: [primary cluster name]- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- Placement を使用するワークロードの場合: - PlacementRule を編集します。 - oc edit placementdecision --subresource=status -n [namespace] [name of the placementdecision] - $ oc edit placementdecision --subresource=status -n [namespace] [name of the placementdecision]- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 以下に例を示します。 - oc get placementdecision --subresource=status -n openshift-gitops busybox-3-placement-cephfs-decision-1 - $ oc get placementdecision --subresource=status -n openshift-gitops busybox-3-placement-cephfs-decision-1- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- placementrule のステータスに以下を追加します。 - status: decisions: - clusterName: [primary cluster name] reason: [primary cluster name]- status: decisions: - clusterName: [primary cluster name] reason: [primary cluster name]- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - その結果、PlacementDecision が更新され、ワークロードがプライマリークラスターにデプロイされます。 
 
- ReplicationDestinationリソースがまだ作成されていない場合にフェイルオーバープロセスが失敗する- LastGroupSyncTimeの更新前にユーザーがフェイルオーバーを開始すると、フェイルオーバープロセスが失敗する場合があります。このように失敗すると、- ReplicationDestinationが存在しないことを示すエラーメッセージが表示されます。- 回避策: - ハブクラスターの VRG の - ManifestWorkを編集します。- マニフェストから次のセクションを削除します。 - /spec/workload/manifests/0/spec/volsync - /spec/workload/manifests/0/spec/volsync- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 変更を保存します。 - この回避策を正しく適用すると、VRG は - ReplicationDestinationリソースを使用した PVC の復元の試行を省略します。PVC がすでに存在する場合、アプリケーションはそれをそのまま使用します。PVC が存在しない場合は、新しい PVC が作成されます。