第 7 章 已知问题
本节论述了 Red Hat OpenShift Container Storage 4.8 中已知的问题。
仲裁程序节点不能使用 OpenShift Container Storage 节点标签标记
如果使用 OpenShift Container Storage 节点标签 cluster.ocs.openshift.io/openshift-storage
标记,仲裁程序节点将被视为有效的非仲裁节点。这意味着,非仲裁资源的放置不会确定。要临时解决这个问题,请不要使用 OpenShift Container Storage 节点标签标记仲裁节点,以便仅将仲裁资源放置在仲裁器节点上。
替换磁盘后,Ceph 状态为 HEALTH_WARN
替换磁盘后,即使所有 OSD pod 都已启动并在运行,也会看到 最近出现 1 后台程序崩溃
的警告。此警告会导致 Ceph 状态出现更改。Ceph 状态应当是 HEALTH_OK,而非 HEALTH_WARN。为解决这个问题,将 rsh 到 ceph-tools pod 并静默警告,Ceph 健康状况随后将返回到 HEALTH_OK。
在 CephCluster
资源中重置监控规格
每当 ocs-operator
重启或升级过程中,监控规格就会变为空。这不会影响功能,但如果您查找监控端点详情,您会发现它为空。
要解决这个问题,请在从 4.7 升级到 4.8 后更新 rook-ceph-external-cluster-details
secret,以便将所有端点(如以逗号分隔的活跃和待机 MGR 的 IP 地址)的详情更新至"MonitoringEndpoint"数据键。这有助于避免因为新集群中和升级的集群中端点数量存在差异,未来出现任何问题。
没有obaa-db-pg-0 的问题
当托管节点停机时,NooBaa-db-pg-0 pod 不会迁移到其他节点。当节点停机时,NooBaa 无法正常工作,因为 noobaa-db-pg-0 pod 的迁移已被阻止。
如果删除了插件 pod,则数据将无法访问,直到节点重启发生为止
造成此问题的原因是,当 csi-cephfsplugin
pod 重启时,挂载的 netns
被销毁,这会导致 in csi-cephfs 插件锁定
所有挂载的卷。只有使用 multus 启用的集群才会出现这个问题。
当您在删除后重启 who csi-cephfs 插件
的节点时会解决这个问题。
加密密码短语存储在源 KMS 中,以便从快照中恢复卷
当父级和恢复的 PVC 在 KMS 设置中具有不同的后端路径 StorageClass 时,恢复的 PVC 会进入 Bound
状态,加密密码则在快照的 KMS 设置的后端路径中创建。恢复的 PVC 无法附加到 Pod,因为检查加密密码短语时使用 2nd StorageClass 路径中链接的设置,其中加密密码短语无法在后端路径中找到。
为防止这个问题,PVC 在创建和恢复快照时应始终使用相同的 KMS 设置。
在使用 kv-v2
secret 引擎删除加密 PVC 后,密钥仍然会列在 Vault 中
HashiCorp Vault 为键值存储 v2 添加了一项功能,其中删除存储的密钥可让您在单独步骤中删除已删除密钥的元数据。在 Hashicorp Vault 中将键值 v2 存储用于 secret 时,删除卷不会从 KMS 中删除加密密码短语的元数据。虽然以后可以恢复加密的密码短语。KMS 不会自动清理这些部分删除的密钥。
您可以通过手动删除已删除密钥的元数据来解决这个问题。在元数据中设置了 delete_time
的任何键都可以假定在使用键值存储 v1 时已被删除,但可通过 v2 保持可用。
恢复 Snapshot/Clone 操作的大小大于父 PVC 会导致无限制循环
Ceph CSI 不支持恢复快照或创建大小大于父 PVC 的克隆。因此,恢复快照/Clone 操作的大小更大会导致无状态循环。要解决这个问题,请删除待处理的 PVC。要获得更大的 PVC,请根据您正在使用的操作完成以下操作之一: 如果使用快照,恢复现有快照以创建与父 PVC 大小相同的卷,然后将其附加到 pod 并将其扩展为所需的大小。如需更多信息,请参阅卷快照。如果使用 Clone,克隆父 PVC 以创建与父 PVC 大小相同的卷,然后将其附加到 pod,并将 PVC 扩展至所需的大小。如需更多信息,请参阅卷克隆。
PVC 从快照恢复,或者从密集置备的 PVC 克隆,且未置备为 thick
当使用 Sthick provisioning 启用的存储类恢复 thick
置备 PVC 快照时,恢复的卷不会被置备。恢复的 PVC 达到 Bound
状态,且没有 thick provisioning。这只有在使用 RHCS-5.x 时才能解决。较旧的 Ceph 版本不支持复制零填充的数据块(在密集置备时使用)。
目前,要解决基于 RHCS-4.x 的部署的问题,需要将 thick-provisioned 卷的 PVC-cloning 和 snapshot-restoring 标记为限制。新创建的卷将变为精简置备。
在密集置备进行时删除待处理的 PVC 和 RBD 置备程序 Pod,会保留过时的镜像和 OMAP 元数据
当 RBD PVC 被密集置备时,持久性卷声明(PVC)处于 Pending
状态。如果删除了 RBD 置备程序领导和 PVC 本身,RBD 镜像和 OMAP 元数据不会被删除。
要解决这个问题,在密集置备进行过程中不要删除 PVC。
当存储集群利用率达到 85% 甚至删除 PVC 后,置备尝试也不会停止。
如果在调配 RBD thick PVC 时存储集群利用率达到 85%,则调配尝试不会通过删除待处理的 PVC 来自动停止,而且 RBD 镜像在删除待处理的 PVC 后也不会被删除。
如果请求的大小超过可用的存储,则最好的方法是不启动置备。
使用 kv-v2
时,不会在卸载过程中删除 Vault 中的 OSD 的密钥
当 Vault K/V Secret 引擎是版本 2 时,密钥加密密钥 数据 会在集群删除过程中从 Vault 进行软删除。这意味着可以检索任意版本的密钥,从而撤消删除。元数据仍然可见,因此可以恢复密钥。如果这会导致不便,则仍可使用 vault 命令及"destroy"参数手动删除密钥。
删除 CephBlockPool
会卡住,并阻止新池的创建
在 Multus 启用的集群中,Rook Operator 没有网络注解,因此无法访问 OSD 网络。这意味着,在池清理期间运行"rbd"类型命令时,命令将挂起,因为它无法联系 OSD。解决方法是使用 toolbox 手动删除 CephBlockPool
。
无法通过用户界面为加密的 OpenShift Container Storage 集群执行设备替换操作
在加密的 OpenShift Container Storage 集群中,发现结果 CR 会发现由 Ceph OSD(对象存储守护进程)支持的设备与 Ceph 警报中报告的不同。单击警报时,用户会显示 Disk not found 消息。由于不匹配,console UI 无法为 OpenShift Container Storage 用户启用磁盘替换选项。要解决这个问题,请在替换设备指南中使用 CLI 流程来替换失败的设备。
对于将 volumeMode 作为块的 PVC 的 false Alerts
由于 Kubernetes 中的更改,OpenShift Container Platform 的 Prometheus 警报中出现了一个回归问题。这个变化会影响以下内容:
Alert: KubePersistentVolumeFillingUp.
PVC: volumeMode 中的 PVC: Block
匹配命名空间中的正则表达式:"(openshift-.|kube-.|default|logging)"
metric: kubelet_volume_stats_available_bytes
因此,警报 kubelet_volume_stats_available_bytes 将 PVC 创建时的可用大小报告为 0,并为 volumeMode: Blocks 中的所有 PVC 触发一个假的警报:与正则表达式匹配:"(openshift-.|kube-.|default|logging)"。这会影响为内部和内部附加模式以及 Amazon Web Services、VMware、Baremetal 等不同基础架构部署的 OSD 设备集创建的所有 PVC。这也会影响客户工作负载 PVC。
目前,这个问题在即将发布的 OpenShift Container Platform 4.8.z 的一个次发行版本中解决前,还没有可用的临时解决方案。因此,可以非常迅速、紧急地解决有关 OpenShift Container Storage 存储容量的任何警报。
关键警报通知在安装仲裁存储集群后发送,因为 ceph objectstore 的 ceph
对象用户无法在存储集群重新安装期间创建。
在包含 CephCluster 和一个或多个 Ceph
ObjectStores
的存储集群中,如果在完全删除所有 Ceph
资源,Rook Operator 仍然可以在内存中保留 CephObjectStore(s)的连接详情。如果重新创建了相同的 ObjectStore 资源前删除了 Ceph
ClusterCephCluster
和 CephObjectStore(s),CephObjectStore(s)可能会进入 "Failed" 状态。
为避免此问题,请在删除 CephCluster 之前完全删除 CephObjectStore。
- 如果您不想等待 CephObjectStore 被删除,重启 Rook Operator(通过删除 Operator Pod)可以避免在卸载后出现问题。
-
如果您正遇到这个问题,重启 Rook Operator 将通过清除旧
CephObjectStore
连接详情的 Operator 内存来解决此问题。