第 7 章 已知问题
本节介绍 Red Hat OpenShift Data Foundation 4.18 中已知的问题。
7.1. 灾难恢复 复制链接链接已复制到粘贴板!
节点崩溃会导致 kubelet 服务失败,从而导致 Data Foundation 处于错误状态
OpenShift 集群中的意外节点崩溃可能会导致节点处于
NotReady
状态,并影响存储集群。临时解决方案:
获取待处理的 CSR:
oc get csr | grep Pending
oc get csr | grep Pending
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 批准待处理的 CSR:
Approve the pending CSR
Approve the pending CSR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (DFBUGS-3636)R
从 4.18 升级到 4.19 后,ramen-hub-operator-config 缺少 s3StoreProfile
当使用默认值覆盖
configmap
时,由 Multicluster Orchestrator (MCO) Operator 添加的自定义 S3Profile 和其他详情将会丢失。这是因为在升级 Ramen-DR hub Operator 后,OLM 会使用 Ramen-hub CSV 提供的默认值覆盖现有的ramen-hub-operator-config
configmap
。临时解决方案:重启 hub 集群上的 MCO Operator。因此,在
configmap
中会更新 S3profiles 等所需值。
当对应节点停机时,CIDR 范围不会保留在
csiaddonsnode
对象中当节点停机时,无类别域间路由(CIDR)信息会从
csiaddonsnode
对象中消失。当需要隔离隔离节点时,这会影响隔离机制。临时解决方案:在创建
NetworkFenceClass
对象后立即收集 CIDR 信息。
节点替换后,新的 mon pod 无法调度
在节点替换后,新的
mon
pod 无法在新添加的节点中调度自己。因此,mon
pod 处于Pending
状态,这会影响 storagecluster 状态,并带有mon
不可用。临时解决方案:使用正确的
nodeSelector
手动更新新的 mon 部署。
从 v4.17.z 升级到 v4.18 后,灾难恢复会被错误配置
当 ODF Multicluster Orchestrator 和 Openshift DR Hub Operator 从 4.17.z 升级到 4.18 时,某些灾难恢复资源会在内部模式部署中错误配置。这会影响使用
ocs-storagecluster-ceph-rbd
和ocs-storagecluster-ceph-rbd-virtualization
StorageClasses 进行工作负载的灾难恢复。要解决这个问题,请按照本 知识库文章 中的说明操作。
当集群处于扩展模式时,Ceph df
会报告一个无效的AVAIL
值当 Red Hat Ceph Storage 集群中的 CRUSH 规则具有多个步骤时,
ceph df
报告显示关联池的最大可用大小。
DRPC 保护在同一命名空间中创建的所有持久性卷声明
托管多个灾难恢复(DR)保护工作负载的命名空间保护 hub 集群上每个 DRPlacementControl 资源的所有持久性卷声明(PVC),它们不会根据其
spec.pvcSelector
字段根据工作负载指定和隔离 PVC。这会导致 PVC 与多个工作负载的 DRPlacementControl
spec.pvcSelector
匹配。或者,如果所有工作负载都缺少选择器,复制管理可能会多次管理每个 PVC,并根据单独的 DRPlacementControl 操作造成数据崩溃或无效操作。临时解决方案:标签 PVC 属于唯一工作负载,并使用所选标签作为 DRPlacementControl
spec.pvcSelector
,以忽略哪个 DRPlacementControl 保护和管理命名空间中的哪些 PVC 子集。无法使用用户界面为 DRPlacementControl 指定spec.pvcSelector
字段,因此必须使用命令行删除并创建此类应用程序的 DRPlacementControl。结果: PVC 不再由多个 DRPlacementControl 资源管理,不会造成任何操作和数据不一致。
灾难恢复工作负载在删除时会卡住
当从集群中删除工作负载时,对应的 pod 可能无法与
FailedKillPod
等事件终止。这可能会导致垃圾收集依赖的 DR 资源(如PVC
、VolumeReplication
和VolumeReplicationGroup
)的延迟或失败。它还可防止以后将相同的工作负载部署到集群中,因为过时的资源还没有垃圾回收。临时解决方案:重启正在运行 pod 的 worker 节点,并处于终止状态。这会导致 pod 终止以及随后相关的 DR API 资源被收集垃圾回收。
基于 Region-DR CephFS 的应用程序故障转移显示有关订阅的警告
应用程序通过或重新定位失败后,hub 订阅会显示错误声明"Some resources failed to deploy.。使用 View status YAML 链接来查看详情"。这是因为使用 CephFS 作为后备存储置备程序应用持久性卷声明(PVC),使用 Red Hat Advanced Cluster Management for Kubernetes (RHACM)订阅进行部署,并且具有 DR 保护的不受相应的 DR 控制器所有。
临时解决方案:无法调整订阅状态中的错误。但是,可以检查无法部署的订阅资源,以确保它们是 PVC。这样可确保其他资源没有问题。如果无法部署的订阅中的唯一资源是 DR 保护的资源,则错误可以被忽略。
禁用
PeerReady
标志可防止将操作改为 FailoverDR 控制器根据需要执行完全协调。当集群无法访问时,DR 控制器会执行完整性检查。如果工作负载已重新定位,则此 sanity 检查会导致与工作负载关联的
PeerReady
标志被禁用,因为集群离线,sanity 检查不会完成。因此,禁用PeerReady
标志可防止您将操作改为 Failover。临时解决方案:即使禁用了
PeerReady
标志,使用命令行界面将 DR 操作改为 Failover。
当连接在扩展集群的两个数据中心之间丢失连接时,Ceph 变得无法访问,并且 IO 暂停
当两个数据中心相互丢失但仍然连接到 Arbiter 节点时,在选择逻辑中存在一个会导致 Ceph 监控器中无限选举的漏洞。因此,监控器无法选举领导,Ceph 集群将不可用。另外,IO 在连接丢失过程中暂停。
临时解决方案:通过关闭区节点来关闭任何一个数据区的监控器。另外,您可以重置存活 monitor pod 的连接分数。
因此,监控器可以形成仲裁,Ceph 会再次可用,IOs 会恢复。
在从替换集群中使用过时的 Ceph 池 ID 时,RBD 应用无法分配
对于在创建新对等集群之前创建的应用,无法挂载 RBD PVC,因为当替换对等集群时,无法更新 CSI configmap 中的 CephBlockPoolID 的映射。
临时解决方案:在未替换的对等集群中,将
rook-ceph-csi-mapping-config
configmap 更新为 cephBlockPoolID 的映射。这将启用为应用挂载 RBD PVC。
有关
lastGroupSyncTime
的信息会在 hub 恢复后丢失,这些工作负载在不可用受管集群上是主的以前失败的应用程序不会报告
lastGroupSyncTime
,从而导致警报VolumeSynchronizationDelay
触发。这是因为当 ACM hub 和作为 DRPolicy 一部分的受管集群不可用时,从备份中重建新的 ACM hub 集群。临时解决方案:如果工作负载失败的受管集群不可用,您仍可以切换到一个存活的受管集群。
MCO operator 协调
veleroNamespaceSecretKeyRef
和CACertificates
字段当 OpenShift Data Foundation Operator 升级时,Ramen 配置中的
s3StoreProfiles
下的CACertificates
和veleroNamespaceSecretKeyRef
字段将会丢失。临时解决方案:如果 Ramen 配置具有
CACertificates
和veleroNamespaceSecretKeyRef
字段的自定义值,则在执行升级后如何设置这些自定义值。
升级后 token-exchange-agent pod 的不稳定
受管集群中的
token-exchange-agent
pod 不稳定,因为旧的部署资源不会被正确清理。这可能导致应用程序故障切换操作失败。临时解决方案: 在升级到 ODF 4.17.0 后,请参阅知识库文章 "token-exchange-agent" pod is unstable。
结果:如果遵循这个临时解决方案,"token-exchange-agent" pod 是 stabilized,故障转移操作可以正常工作。
VirtualMachines.kubevirt.io
资源因为重新定位中的 mac 分配失败而无法恢复当虚拟机重新定位到首选集群时,可能会因为其 MAC 地址不可用,它可能无法完成重新定位。如果虚拟机在故障转移集群时没有完全清理在首选集群中,会出现这种情况。
在重新定位工作负载前,请确保工作负载从首选集群完全删除。
为启用了一致性组的 CephFS 应用禁用 DR 可能会保留一些资源
为启用了一致性组的 CephFS 应用禁用 DR 可能会保留一些资源。在这种情况下,可能需要手动清理。
临时解决方案:按照以下步骤手动清理资源:
在二级集群中:
手动删除 ReplicationGroupDestination。
oc delete rgd -n <namespace>
$ oc delete rgd -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认已删除以下资源:
- ReplicationGroupDestination
- VolumeSnapshot
- VolumeSnapshotContent
- ReplicationDestination
- VolumeReplicationGroup
在主集群中:
手动删除 ReplicationGroupSource。
oc delete rgs -n <namespace>
$ oc delete rgs -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认已删除以下资源:
- ReplicationGroupSource
- VolumeGroupSnapshot
- VolumeGroupSnapshotContent
- VolumeSnapshot
- VolumeSnapshotContent
- ReplicationSource
VolumeReplicationGroup
对于使用 CephFS 发现的应用程序,在故障切换后同步停止
对于基于 CephFS 的工作负载,发现的应用同步可能会在故障转移或重新定位后在某个点停止。这可能会出现在
ReplicationSource
状态中报告的Permission Denied
错误。临时解决方案:
对于 Non-Discovered 应用程序
删除 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&
gt; 是指 应用程序工作负载命名空间,而不是 VRG 命名空间。对于使用一致性组的工作负载
删除 ReplicationGroupSource :
oc delete replicationgroupsource -n <namespace> <name>
$ oc delete replicationgroupsource -n <namespace> <name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除该命名空间中的所有 VolSync 作业:
oc delete jobs --all -n <namespace>
$ oc delete jobs --all -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,&
lt;namespace
> 是指工作负载的命名空间(已发现或未发现),<name
> 代表 ReplicationGroupSource 资源的名称。
在虚拟机页面中发现的应用程序无法使用 remove DR 选项
在 Virtual Machines 页面中列出的应用程序无法使用 Remove DR 选项。
临时解决方案:
将缺少的标签添加到 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
recipe 参数作为其值:{{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 状态 。
临时解决方案:
将缺少的标签添加到 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
recipe 参数作为其值:{{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 (/)没有报告任何 lastGroupSyncTime 作为主,满足重试 till 状态。
临时解决方案:
要解决这个问题,请从 VRG 状态手动清理过时的 PVC (例如,在故障切换后取消选择的 PVC)。
- 识别在故障切换后取消选择的过时的 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.protectedPVC 部分中删除过时的 PVC
条目。删除过时的条目后,DRPC 将恢复并报告为健康。
当为发现的应用程序移除 DR 保护时,辅助 PVC 不会被删除
在辅助集群中,链接到工作负载的 CephFS PVC 通常由 VolumeReplicationGroup (VRG)管理。但是,当使用 Discovered Applications 功能发现工作负载时,关联的 CephFS PVC 不会被标记为 VRG-owned。因此,当禁用工作负载时,这些 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
当还没有创建
ReplicationDestination
资源时,故障转移过程会失败如果用户在
LastGroupSyncTime
更新前启动故障转移,故障转移过程可能会失败。此失败由一条错误消息指示ReplicationDestination
不存在。临时解决方案:
编辑 hub 集群上 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。
在向集群添加容量后,Ceph 处于警告状态
在设备替换或添加容量后,观察到 Ceph 处于
HEALTH_WARN
状态,并带有 mon 报告缓慢的 ops。但是,对集群的可用性没有影响。
OSD pod 在添加容量过程中重启
在执行集群扩展后,OSD pod 会重启,方法是向集群添加容量。但是,除了 pod 重启外,不会对集群造成影响。