跳转到正文

存储排障

对象存储问题应按配置 → 集群 → 文件浏览 → PVC → 容器挂载 → 应用路径逐层定位。不要把凭据粘贴到日志、截图或工单中。

无法创建或更新存储配置

先判断问题发生在页面填写阶段,还是提交到多个集群之后。页面提示必填项错误时检查表单;只有部分集群失败时,不要重复提交整份配置。

页面校验失败

确认:

  • 至少选择了一个关联集群。
  • 新建时填写了 Access Key Secret。
  • 名称、Bucket、Endpoint、Region 和必填项完整。

更新时名称不可修改。Access Key Secret 留空会尝试沿用已有 Secret;如果后端无法读取现有 Secret,更新会失败,此时应由获授权人员重新提供有效 Secret。

提交后部分集群失败

一个配置会按顺序应用到每个已选集群,先成功的集群不会因后续失败自动回滚。停止再次提交,记录已完成和失败集群,并收集脱敏后的错误。由获授权人员在每个已选集群分别核对 Secret 和 StorageClass,再检查:

  • 目标集群 Agent 是否可达。
  • 同名 StorageClass 或 Secret 是否存在冲突。
  • 命名空间是否存在且允许创建 Secret。
  • 集群是否安装并运行平台所需的 rclone CSI 组件。

不要反复提交不同 Bucket 或凭据来试错。聚合列表也不能表示每个集群都已完成配置。请先确认目标配置和影响范围,再逐个集群检查配置和读写,避免各集群指向不同数据源。

文件浏览器无法列出对象

先核对文件浏览器显示的集群和 StorageClass,再核对配置详情:

  1. Bucket 名称。
  2. Provider、Endpoint 和 Region。
  3. Path Style 设置。
  4. 当前集群仍在关联列表中。
  5. 凭据至少具有列出目标前缀的权限。
  6. 目标集群到对象存储 Endpoint 的 DNS、网络和 TLS 路径可用。

“配置创建成功”只表示 Kubernetes 资源已应用,不表示对象存储已经可以访问。

选择文件管理后没有可见响应

存储列表中的文件夹图标不会替换原页面。它会使用配置关联列表中的第一个集群,并在新标签页打开该存储类的文件浏览器。如需核对地址结构,请参见控制台页面与路由

按顺序检查:

  1. 当前存储配置至少关联一个集群;未关联时页面应显示提示,不会打开文件页。
  2. 查看浏览器地址栏附近是否出现弹出页面被拦截的提示。只允许当前 RLark 站点的预期页面,不要关闭浏览器的全局保护。
  3. 检查是否已经打开但位于后台的新标签页;原存储列表保持不变属于正常行为。
  4. 在新标签页核对 URL 中的集群和 StorageClass,确认它们与存储配置的第一个关联集群一致。
  5. 新标签页打开但列表报错时,继续按本页“文件浏览器无法列出对象”检查后端访问,不要把它归类为按钮无响应。

如果仍未打开新页面,也没有错误提示,请记录操作时间、存储配置名称、关联集群顺序、浏览器是否提示拦截,以及不含凭据的控制台错误,再联系平台管理员排查页面跳转。不要附带 Access Key 或完整签名 URL。

已知对象没有出现在列表中

依次检查:

  • 当前面包屑前缀是否与对象键完全一致。
  • 对象名称大小写是否一致。
  • 搜索框是否仍有过滤条件。
  • 当前集群和 StorageClass 是否指向预期 Bucket。
  • 对象是否位于当前首批列表之外。

文件页一次最多加载 100 个对象,搜索和界面分页只处理这批数据。未显示的对象不一定不存在;请使用更精确的公共前缀缩小范围,或让存储管理员在对象存储侧检查完整键。

上传失败或只上传了部分文件

多个文件由控制台依次上传。中途某个文件失败时,之前成功的对象不会自动回滚。

  1. 记录失败文件名和当前前缀。
  2. 重新打开列表,逐个核对哪些对象已经存在。
  3. 检查写入权限、对象大小限制、网络和 Endpoint 状态。
  4. 再次上传前确认完整目标键,避免覆盖已成功的同名对象。

上传入口只保留文件名,不保留本地文件夹层级。若文件出现在“错误目录”,先检查上传时的面包屑前缀。

下载链接无法使用

控制台请求的临时签名下载链接有效期为一小时。出现失败时:

  1. 回到文件浏览器,确认对象仍存在。
  2. 重新发起下载以获得新链接。
  3. 检查浏览器是否拦截新页面或下载。
  4. 若新链接也失败,检查对象读取权限和 Endpoint 连通性。

不要把签名链接发送给他人或粘贴到工单;它在有效期内可能直接授予对象访问能力。

控制台能看到文件,但容器路径为空

文件浏览器直接访问对象存储,容器则通过 PVC 和 volumeMount 读取挂载。两处结果不一致时,按顺序确认:

  1. Task 所在集群已关联同名 StorageClass。
  2. 作业角色选择的是该 StorageClass,而不是名称相似的另一个配置。
  3. Task 工作负载中存在 PVC 到 StorageClass 的映射。
  4. PVC 已创建并成功绑定。
  5. Pod volume 和 volumeMount 都存在,容器挂载路径与创建器配置一致。
  6. 应用读取的是容器路径下的对象,而不是 Bucket 名、本地电脑路径或宿主机路径。

若 Worker 尚未产生 Pod,先排查调度和 PVC 创建;此时无法通过 WebTerminal 检查挂载。若挂载类型为 hostPath,则应检查实际调度节点的本地目录;它与对象存储无关。

挂载后镜像中的文件“不见了”

先检查 Job 角色配置和生成的 volumeMounts。如果卷挂载到了镜像原本已有内容的目录,挂载会遮蔽该目录中的镜像文件;这通常不表示文件已从镜像删除。

  1. 记录预期文件的镜像内路径和当前容器挂载路径。
  2. 在 Worker 配置中确认哪个卷占用了该路径。
  3. 使用 WebTerminal 查看目标目录和 /proc/mounts;不要在运行中的容器内执行卸载、移动或复制来试修复。
  4. 对照已知镜像版本或镜像构建清单,确认文件原本是否由镜像提供。
  5. 如确属路径重叠,复制 Job 后改用不重叠的挂载路径,或把所需初始化动作写入可重复执行的准备脚本,再检查新 Worker。

不要通过删除卷中内容来寻找被遮蔽的镜像文件。卷被移除后镜像内容会重新可见,但卷中被删除的数据无法由 RLark 恢复。

输出在 Pod 重建后丢失

配置了存储挂载,不代表容器中的所有写入都会持久化。按以下顺序核对:

  1. 记录应用配置中的实际输出绝对路径,不要只记录当前工作目录。
  2. 确认该路径位于 volumeMounts.mountPath 内,而不是挂载点旁边的同级目录。
  3. 使用不会修改文件的命令检查目标路径对应的挂载;不要用 touch 或覆盖现有文件来测试写权限。
  4. 检查应用日志,确认检查点或结果已经完成写入,而不是仍在内存、临时文件或异步上传队列中。
  5. 通过文件浏览器按准确前缀和对象键核对输出;若对象较多,注意页面只加载首批 100 个对象。

如果数据写在容器根文件系统或默认工作目录,Pod 重建后无法从 RLark 恢复。请先保留剩余 Worker、日志和路径信息,再修正输出目录并通过复制的 Job 检查结果;不要反复重建现有 Pod。

删除对象后需要恢复

RLark 没有对象回收站或撤销操作。立即停止后续清理和对同名键的写入,并联系存储管理员检查底层 Bucket 是否预先启用了版本控制、快照或备份。没有这些机制时,RLark 无法恢复已删除对象。

联系平台管理员时提供

  • 存储配置名称、目标集群和 Bucket 名称。
  • 当前对象前缀或经过脱敏的对象键。
  • 操作类型和时间:列表、上传、下载、删除或挂载。
  • HTTP 状态码和脱敏后的错误信息。
  • 受影响 Job、Task、Worker/Pod 和容器挂载路径。
  • 问题是否只发生在一个集群、一个前缀或一个对象。

不得提供 Access Key Secret、完整签名 URL、SSH 私钥或其他凭据。