故障排除

DirectPV 在我的 Kubernetes 中安装失败。为什么?

您需要拥有执行安装的必要权限和许可。请参阅规范文档。对于 Red Hat OpenShift,请参阅OpenShift 特定文档

将 DirectPV 升级到 v4.x.x 后,我找不到 `direct-csi-min-io` 存储类。为什么?

旧版 DirectCSI 已弃用,包括存储类 `direct-csi-min-io`,并且不再受支持。之前创建的卷将继续正常工作。对于新的卷请求,请使用 `directpv-min-io` 存储类。

DirectPV 安装失败,并显示类似 错误;无法获取旧版驱动器;direct.csi.min.io/v1beta3 的转换 Webhook,... 或类似的错误消息。为什么?

安装 DirectPV 也会尝试升级旧版 DirectCSI。升级低于 v3.1.0 的 DirectCSI 需要 转换 Webhook 服务运行。有关合适的升级流程,请参阅 升级文档

discover 命令的 YAML 输出中,我没有找到我的存储驱动器。为什么?

DirectPV 会忽略满足以下任何条件的驱动器

  • 驱动器的大小小于 512MiB。
  • 驱动器被隐藏。
  • 驱动器为只读。
  • 驱动器已分区。
  • 驱动器被其他设备占用。
  • 驱动器已挂载或已被 DirectPV 使用。
  • 驱动器是正在使用的交换分区。
  • 驱动器是 CDROM。

检查 discover --all 命令输出的最后一列,以查看哪些条件排除了驱动器。解决这些条件并重试。

您是否支持 SAN、NAS、iSCSI、网络驱动器等?

DirectPV 适用于具有直接连接存储的高性能本地卷。我们不建议使用任何远程驱动器,因为远程驱动器可能会导致性能下降。

您是否支持 LVM、Linux RAID、硬件 RAID、软件 RAID 或类似功能?

它可以工作,但我们强烈建议使用原始设备以获得更好的性能。

是否支持 LUKS 设备?

是的

我已经使用本地持久卷 (Local PV) 进行存储。为什么我需要 DirectPV?

本地持久卷是短暂的,并且与 Pod 的生命周期绑定。当 Pod 重启或删除时,这些卷将丢失,这可能导致数据丢失。

此外,本地持久卷的生命周期需要管理技能。DirectPV 按需动态配置持久卷,这些卷在 Pod/节点重启后仍然存在。DirectPV 卷的生命周期由关联的持久卷声明 (PVC) 管理,从而简化了卷管理。

我在持久卷声明中看到 未找到驱动器... 错误消息。为什么?

下表列出了可能的原因和解决方案。

原因 解决方案
在没有将任何驱动器添加到 DirectPV 的情况下创建了卷声明。 添加驱动器。
没有驱动器有足够的可用空间来满足请求的大小。 添加新的驱动器或删除过时的卷。
未满足请求的拓扑。 修改持久卷声明。
在请求的节点上找不到请求的驱动器。 修改持久卷声明。
请求的节点不是 DirectPV 节点。 修改持久卷声明。

我看到持久卷声明已创建,但相应的 DirectPV 卷未创建。为什么?

DirectPV 带有 WaitForFirstConsumer 卷绑定模式。这意味着必须首先调度一个 Pod 来使用该卷。

我看到使用卷的 Pod 仍然处于 Pending 状态。为什么?

  • 如果您尚未创建相应的持久卷声明,请创建它。
  • 您可能遇到 Kubernetes 调度问题。请参阅 Kubernetes 文档 关于调度的部分

我看到 卷 XXXXX 尚未分段,但请求时出现 YYYYY 错误。为什么?

根据 CSI 规范,Kubelet 应该首先调用 StageVolume RPC,然后调用 PublishVolume RPC。在极少数情况下,StageVolume RPC 未触发/调用,但 PublishVolume RPC 已调用。重新启动您的 Kubelet 并将此问题报告给您的 Kubernetes 提供商。

我看到 udev 错误。为什么?

您可能很少看到 udev 错误

unable to find device by FSUUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; either device is removed or run command `sudo udevadm control --reload-rules && sudo udevadm trigger` on the host to reload

在极少数情况下,系统中的 Udev 错过了更新 /dev 目录。运行以下命令以更新和重新加载 udev,然后将此问题报告给您的操作系统供应商。

sudo udevadm control --reload-rules && sudo udevadm trigger