排查 Managed Lustre 卷问题

本页面介绍了在 Google Kubernetes Engine 上使用 Google Cloud Managed Lustre CSI 驱动程序时遇到的常见问题和错误的问题排查步骤。

在按照本部分中的问题排查步骤操作之前,请参阅从 GKE 连接到 Managed Lustre 时的限制

更新了最小实例容量

Managed Lustre 实例的最小容量已更新为 9,000 GiB。如需使用 Managed Lustre CSI 驱动程序创建 9, 000 GiB 实例,请将集群版本升级到 1.34.0-gke.2285000 或更高版本。

动态预配的 Lustre 实例的性能层级不正确

动态配置 Lustre 实例时,无论 API 请求中指定的 perUnitStorageThroughput 值是多少,实例创建都会因 PerUnitStorageThroughput 而失败并显示 InvalidArgument 错误。这会影响 1.33.4-gke.1036000 之前的 GKE 1.33 版本。

临时解决方法:

将 GKE 集群升级到 1.33.4-gke.1036000 版或更高版本。 如果使用的是稳定版渠道,则可能尚未有更新的版本可用。在这种情况下,您可以从常规渠道或快速渠道中手动选择包含相应修复的版本。

Managed Lustre 通信端口

Managed Lustre CSI 驱动程序使用不同的端口与 Managed Lustre 实例进行通信,具体取决于您的 GKE 集群版本和现有的 Managed Lustre 配置。

  • 默认端口 (988):对于运行 1.33.2-gke.4780000 版或更高版本的新 GKE 集群,驱动程序默认使用端口 988 进行 Lustre 通信。

  • 旧版端口 (6988):在以下情况下,驱动程序会使用端口 6988

    • 早期 GKE 版本:如果您的 GKE 集群运行的版本低于 1.33.2-gke.4780000,则在启用 CSI 驱动程序时需要使用 --enable-legacy-lustre-port 标志。启用此标志可解决 GKE 节点上 gke-metadata-server 的端口冲突问题。
    • 支持 GKE 的现有 Managed Lustre 实例:如果您要连接到使用 --gke-support-enabled 标志创建的现有 Managed Lustre 实例,则无论集群版本如何,都必须在启用 CSI 驱动程序时添加 --enable-legacy-lustre-port。如果没有此标志,您的 GKE 集群将无法挂载现有的 Lustre 实例。

    如需详细了解如何通过旧版端口启用 CSI 驱动程序,请参阅 Lustre 通信端口

日志查询

如需检查日志,请在日志浏览器中运行以下查询。

如需返回 Managed Lustre CSI 驱动程序节点服务器日志,请执行以下操作:

resource.type="k8s_container"
resource.labels.pod_name=~"lustre-csi-node*"

排查卷配置问题

如果 PersistentVolumeClaim (PVC) 保持 Pending 状态,并且在 20-30 分钟后仍未创建 PersistentVolume (PV),则可能发生了错误。

  1. 检查 PVC 事件:

    kubectl describe pvc PVC_NAME
    
  2. 如果错误表明存在配置问题或实参无效,请验证您的 StorageClass 参数

  3. 重新创建 PVC。

  4. 如果问题仍然存在,请与 Cloud Customer Care 联系。

排查卷装载问题

在将 Pod 调度到节点后,系统会装载卷。如果此操作失败,请检查 Pod 事件和 kubelet 日志。

kubectl describe pod POD_NAME

CSI 驱动程序启用问题

具体情况:

MountVolume.MountDevice failed for volume "yyy" : kubernetes.io/csi: attacher.MountDevice failed to create newCsiDriverClient: driver name lustre.csi.storage.gke.io not found in the list of registered CSI drivers

MountVolume.SetUp failed for volume "yyy" : kubernetes.io/csi: mounter.SetUpAt failed to get CSI client: driver name lustre.csi.storage.gke.io not found in the list of registered CSI drivers

原因:CSI 驱动程序未启用或尚未运行。

解决方法

  1. 验证 CSI 驱动程序是否已启用
  2. 如果集群最近进行了扩缩或升级,请等待几分钟,直到驱动程序正常运行。
  3. 如果错误仍然存在,请检查 lustre-csi-node 日志中是否包含“不允许的操作”。这表示节点版本过旧,无法支持 Managed Lustre。如需解决此问题,请将节点池升级到 1.33.2-gke.1111000 版或更高版本。
  4. 如果日志显示“LNET_PORT mismatch”,请升级节点池,以确保安装兼容的 Lustre 内核模块。

挂载点已存在

具体情况:

MountVolume.MountDevice failed for volume "yyy" : rpc error: code = AlreadyExists
desc = A mountpoint with the same lustre filesystem name "yyy" already exists on
node "yyy". Please mount different lustre filesystems

原因:不支持在单个节点上装载来自不同 Managed Lustre 实例且具有相同文件系统名称的多个卷。

解决方案:为每个 Managed Lustre 实例使用唯一的文件系统名称。

装载失败:不存在此类文件或目录

具体情况:

MountVolume.MountDevice failed for volume "yyy" : rpc error: code = Internal desc = Could not mount ... failed: No such file or directory

原因:指定的文件系统名称不正确或不存在。

解决方法:验证 StorageClass 或 PV 配置中的 fs_name 是否与 Managed Lustre 实例匹配。

装载失败:输入/输出有误

具体情况:

MountVolume.MountDevice failed for volume "yyy" : rpc error: code = Internal desc = Could not mount ... failed: Input/output error

原因:集群无法连接到 Managed Lustre 实例。

解决方法

  1. 验证 Managed Lustre 实例的 IP 地址。
  2. 确保 GKE 集群和 Managed Lustre 实例位于同一 VPC 网络中或已正确对等互连。

内部错误

症状rpc error: code = Internal desc = ...

解决方法:如果错误仍然存在,请与 Cloud Customer Care 联系。

排查卷卸载问题

具体情况:

UnmountVolume.TearDown failed for volume "yyy" : rpc error: code = Internal desc = ...

解决方法

  1. 强制删除 Pod:

    kubectl delete pod POD_NAME --force
    
  2. 如果问题仍然存在,请与 Cloud Customer Care 联系。

排查卷删除问题

如果在删除 PVC 后,PV 长时间(例如超过一小时)仍处于“已释放”状态,请与 Cloud Customer Care 联系。

排查卷扩展问题

PVC 卡在 ExternalExpanding 中

症状:PVC 状态未更改为 Resizing,并且事件显示 ExternalExpanding

原因allowVolumeExpansion 字段可能缺失或设置为 false

解决方法:确保 StorageClass 具有 allowVolumeExpansion: true

kubectl get storageclass STORAGE_CLASS_NAME -o yaml

扩展失败:参数无效

症状VolumeResizeFailed: rpc error: code = InvalidArgument ...

原因:所请求的大小无效(例如,不是步长的倍数或超出限制)。

解决方法: 查看有效容量范围,并使用有效大小更新 PVC。

扩展失败:内部错误

症状VolumeResizeFailed ... rpc error: code = Internal

解决方法: 重新应用 PVC,重试扩容操作。如果多次失败,请与 Cloud Customer Care 联系。

已超出截止期限

症状VolumeResizeFailed,搭配 DEADLINE_EXCEEDED

原因:操作所用的时间超出预期,但可能仍在进行中。

解决方法: 等待操作完成。调整大小工具会自动重试。如果长时间(例如超过 90 分钟)仍卡在此界面,请与支持团队联系。

已超出配额

症状:由于配额限制,扩展失败。

解决方法:申请增加配额或申请增加较小的容量。