第8章 既知の問題
このセクションでは、Red Hat OpenShift Data Foundation 4.18 の既知の問題を説明します。
8.1. 障害復旧 リンクのコピーリンクがクリップボードにコピーされました!
ノードのクラッシュにより kubelet サービスの障害が発生し、Data Foundation がエラー状態になる
OpenShift クラスターで予期しないノードクラッシュが発生すると、ノードが
NotReady状態でスタックしたままとなり、ストレージクラスターに影響が及ぶ可能性があります。回避策:
保留中の CSR を取得します。
oc get csr | grep Pending
oc get csr | grep PendingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 保留中の CSR を承認します。
Approve the pending CSR
Approve the pending CSRCopy to Clipboard Copied! Toggle word wrap Toggle overflow
それぞれのノードがダウンしている場合、CIDR 範囲は
csiaddonsnodeオブジェクトに保持されないノードがダウンすると、Classless Inter-Domain Routing (CIDR) 情報が
csiaddonsnodeオブジェクトから消えます。これは、影響を受けるノードをフェンスする必要がある場合に、フェンシングメカニズムに影響を及ぼします。回避策:
NetworkFenceClassオブジェクトが作成された直後に CIDR 情報を収集します。
ノードの置き換え後、新しい mon Pod のスケジュールが失敗する
ノードの置き換え後、新しい
monPod は新しく追加されたノードでスケジュールを設定できません。その結果、monpod はPending状態のままとなり、monが使用できない状態で storagecluster のステータスに影響します。回避策: 正しい
nodeSelectorを使用して新しい mon デプロイメントを手動で更新します。
クラスターがストレッチモードの場合、
ceph dfが無効なMAX AVAIL値を報告するRed Hat Ceph Storage クラスターの CRUSH ルールに複数の
takeステップがある場合、ceph dfレポートには、関連付けられているプールの最大使用可能サイズが誤って表示されます。
DRPC は同じ namespace で作成されたすべての永続ボリューム要求を保護する
複数の障害復旧 (DR) で保護されたワークロードをホストする namespace において、ハブクラスター上の同じ namespace にある DRPlacementControl リソースが、その
spec.pvcSelectorフィールドを使ってワークロードごとに永続ボリューム要求 (PVC) を指定および分離していない場合、その DRPlacementControl リソースは namespace 内のすべての PVC を保護します。これにより、複数のワークロードにわたって DRPlacementControl
spec.pvcSelectorに一致する PVC が生成されます。あるいは、すべてのワークロードでセレクターが欠落している場合、レプリケーション管理が各 PVC を複数回管理し、個々の DRPlacementControl アクションに基づいてデータの破損または無効な操作を引き起こす可能性があります。回避策: ワークロードに属する PVC に一意のラベルを付け、選択したラベルを DRPlacementControl
spec.pvcSelectorとして使用して、どの DRPlacementControl が namespace 内の PVC のどのサブセットを保護および管理するかを明確にします。ユーザーインターフェイスを使用して DRPlacementControl のspec.pvcSelectorフィールドを指定することはできません。したがって、そのようなアプリケーションの DRPlacementControl を削除し、コマンドラインを使用して作成する必要があります。結果: PVC は複数の DRPlacementControl リソースによって管理されなくなり、操作およびデータの不整合は発生しません。
PeerReadyフラグを無効にすると、アクションをフェイルオーバーに変更できなくなるDR コントローラーは、必要に応じて完全な調整を実行します。クラスターにアクセスできなくなると、DR コントローラーは健全性チェックを実行します。ワークロードがすでに再配置されている場合、この健全性チェックによりワークロードに関連付けられた
PeerReadyフラグが無効になり、クラスターがオフラインであるため健全性チェックは完了しません。その結果、無効にされたPeerReadyフラグは、アクションを Failover に変更できなくなります。回避策: コマンドラインインターフェイスを使用して、
PeerReadyフラグが無効になっているにもかかわらず、DR アクションをフェイルオーバーに変更します。
ストレッチクラスター内の 2 つのデータセンター間の接続が失われると、Ceph にアクセスできなくなり、IO が一時停止する
2 つのデータセンターが相互の接続を失っても Arbiter ノードに接続されたままの場合は、Ceph Monitor 間で無限の選出が発生するという選出ロジックに不具合があります。その結果、モニターはリーダーを選出できず、Ceph クラスターが使用できなくなります。また、接続が切断されている間は IO が一時停止されます。
回避策: ゾーンノードを停止して、いずれかのデータゾーンのモニターをシャットダウンします。さらに、存続した Monitor Pod の接続スコアをリセットすることもできます。
その結果、Monitor がクォーラムを形成して Ceph が再び利用可能になり、IO が再開します。
交換前のクラスターからの古い 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フィールドのカスタム値がある場合は、アップグレードの実行後にそれらのカスタム値を設定します。
CephFS を使用している検出対象アプリケーションの場合、フェイルオーバー後に同期が停止する
CephFS ベースのワークロードの場合、フェイルオーバーまたは再配置後のある時点で、検出対象アプリケーションの同期が停止することがあります。これは、
ReplicationSourceステータスでPermission Deniedエラーが報告された場合に発生する可能性があります。回避策:
検出対象以外のアプリケーションの場合
VolumeSnapshot を削除します。
oc delete volumesnapshot -n <vrg-namespace> <volumesnapshot-name>
$ oc delete volumesnapshot -n <vrg-namespace> <volumesnapshot-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow スナップショット名は通常、PVC 名で始まり、その後にタイムスタンプが続きます。
VolSync ジョブを削除します。
oc delete job -n <vrg-namespace> <pvc-name>
$ oc delete job -n <vrg-namespace> <pvc-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ジョブ名は PVC 名と一致します。
検出対象アプリケーションの場合:
上記と同じ手順を使用しますが、
<namespace>は VRG namespace ではなく、アプリケーションワークロード namespace を指します。整合性グループを使用するワークロードの場合
ReplicationGroupSource を削除します。
oc delete replicationgroupsource -n <namespace> <name>
$ oc delete replicationgroupsource -n <namespace> <name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow その namespace 内のすべての VolSync ジョブを削除します。
oc delete jobs --all -n <namespace>
$ oc delete jobs --all -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow この場合、
<namespace>はワークロードの namespace (検出されたかどうかに関係なく) を参照し、<name>は ReplicationGroupSource リソースの名前を参照します。
仮想マシンページの検出対象アプリケーションに対して DR の削除オプションは使用できない
Remove DR オプションは、Virtual machines ページにリストされている検出対象アプリケーションでは使用できません。
回避策:
不足しているラベルを DRPlacementControl に追加します。
{{oc label drplacementcontrol <drpcname> \ odf.console.selector/resourcetype=virtualmachine \ -n openshift-dr-ops}}{{oc label drplacementcontrol <drpcname> \ odf.console.selector/resourcetype=virtualmachine \ -n openshift-dr-ops}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシン名を値として
PROTECTED_VMSレシピパラメーターを追加します。{{oc patch drplacementcontrol <drpcname> \ -n openshift-dr-ops \ --type='merge' \ -p '{"spec":{"kubeObjectProtection":{"recipeParameters":{"PROTECTED_VMS":["<vm-name>"]}}}}'}}{{oc patch drplacementcontrol <drpcname> \ -n openshift-dr-ops \ --type='merge' \ -p '{"spec":{"kubeObjectProtection":{"recipeParameters":{"PROTECTED_VMS":["<vm-name>"]}}}}'}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Virtual machines ページで検出対象アプリケーションの DR ステータスが表示されない
Virtual machines ページにリストされている検出対象アプリケーションの DR Status は表示されません。
回避策:
不足しているラベルを DRPlacementControl に追加します。
{{oc label drplacementcontrol <drpcname> \ odf.console.selector/resourcetype=virtualmachine \ -n openshift-dr-ops}}{{oc label drplacementcontrol <drpcname> \ odf.console.selector/resourcetype=virtualmachine \ -n openshift-dr-ops}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシン名を値として
PROTECTED_VMSレシピパラメーターを追加します。{{oc patch drplacementcontrol <drpcname> \ -n openshift-dr-ops \ --type='merge' \ -p '{"spec":{"kubeObjectProtection":{"recipeParameters":{"PROTECTED_VMS":["<vm-name>"]}}}}'}}{{oc patch drplacementcontrol <drpcname> \ -n openshift-dr-ops \ --type='merge' \ -p '{"spec":{"kubeObjectProtection":{"recipeParameters":{"PROTECTED_VMS":["<vm-name>"]}}}}'}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
フェイルオーバー後に PVC が選択解除されると、セカンダリー VRG 内の古いエントリーがクリーンアップされず、後続の再配置が失敗する
ワークロードのフェイルオーバー後に PVC が選択解除され、その後に preferredCluster への再配置操作が実行された場合、古い PVC が引き続き VRG に報告される可能性があります。その結果、DRPC は
Protected状態をFalseとして報告し、次のようなメッセージが表示される場合があります。VolumeReplicationGroup (/) on cluster is not reporting any lastGroupSyncTime as primary, retrying till status is met.回避策:
この問題を解決するには、古い PVC (つまり、フェイルオーバー後に選択解除されたもの) を VRG ステータスから手動でクリーンアップします。
- フェイルオーバー後に選択解除され、保護の対象ではなくなった古い PVC を特定します。
<managed-cluster-name> という名前の ManagedCluster の VRG ステータスを編集します。
oc edit --subresource=status -n <vrg-namespace> <vrg-name>
$ oc edit --subresource=status -n <vrg-namespace> <vrg-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow status.protectedPVCsセクションから古い PVC エントリーを削除します。古いエントリーが削除されると、DRPC は回復し、健全であると報告されます。
検出対象アプリケーションの DR 保護が削除されても、セカンダリー PVC が削除されない
セカンダリークラスターでは、ワークロードにリンクされた CephFS PVC は通常、VolumeReplicationGroup (VRG) によって管理されます。ただし、検出対象アプリケーション機能を使用してワークロードが検出されると、関連付けられた CephFS PVC は VRG 所有としてマークされません。その結果、ワークロードが無効になっている場合、これらの PVC は自動的にクリーンアップされず、孤立してしまいます。
回避策: 検出対象ワークロードの DR 保護を無効にした後、孤立した CephFS PVC をクリーンアップするには、次のコマンドを使用して手動で削除します。
oc delete pvc <pvc-name> -n <pvc-namespace>
$ oc delete pvc <pvc-name> -n <pvc-namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
マイナーアップグレード後の Relocating 状態の DRPC
バージョン 4.19 から 4.20 にアップグレードした後、DRPC (Disaster Recovery Placement Control)が Relocating 状態になる可能性があります。このプロセス中に、新しい VGR (VolumeGroupReplication)が異なる命名規則で作成され、2 つの VGR が同じ PVC を要求しようとします。この競合により、DRPC ステータスで一時的な不安定が発生する可能性があります。
回避策:古い VGR (以前の命名規則を持つもの)を削除します。新しい VGR は PVC を正常に要求し、DRPC はしばらくすると正常な状態に戻します。
(DFBUGS-4450)
クラスターに容量を追加した後、Ceph が警告状態になる
デバイスの交換または容量の追加後、Ceph が
HEALTH_WARN状態になり、mon が遅い操作を報告していることが観察されます。ただし、クラスターのユーザービリティーには影響しません。
追加容量時に OSD Pod が再起動する
クラスターに容量を追加してクラスター拡張を実行した後、OSD Pod が再起動します。ただし、Pod の再起動以外にクラスターへの影響は確認されません。
PVC の選択解除後に同期が停止します
ラベルをグループ基準に一致または不一致に変更して PersistentVolumeClaim (PVC) をグループに追加またはグループから削除すると、同期操作が予期せず停止することがあります。これは、古い保護された PVC エントリーが VolumeReplicationGroup (VRG) ステータスに残っているために発生します。
回避策:
古くなった保護された PVC を削除するには、VRG のステータスフィールドを手動で編集します。
oc edit vrg <vrg-name> -n <vrg-namespace> --subresource=status
$ oc edit vrg <vrg-name> -n <vrg-namespace> --subresource=statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ワークロードの削除後にリリースされた状態にある PV Remain Stuck
最終同期後も、すべての一時的な PV/PVC が削除されます。ただし、一部の PV の場合、
persistentVolumeReclaimPolicyはRetainに設定されたままになり、PV はReleased状態のままになります。回避策:
以下のコマンドを使用して PV
persistentVolumeReclaimPolicyを編集します。oc edit pv <pv-name>
$ oc edit pv <pv-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow persistentVolumeReclaimPolicyをDeleteに変更します。スタックした PV は消えます。(DFBUGS-4535)