排查客户端连接问题

从客户端机器或 GKE 集群装载或连接到 Managed Lustre 文件系统时,如果遇到问题,请按照以下步骤诊断问题。

验证 Managed Lustre 实例是否可访问

验证是否可以从客户端环境访问 Managed Lustre 实例。

如需直接使用 lctl ping 测试可达性,您需要通过 SSH 访问客户端机器或 GKE Standard 节点:

sudo lctl ping IP_ADDRESS@tcp

如需获取 IP_ADDRESS 的值,请参阅获取实例。

成功的 ping 会返回类似于以下内容的响应:

12345-0@lo
12345-10.115.0.3@tcp

如果 ping 失败,则会返回以下内容:

failed to ping 10.115.0.3@tcp: Input/output error

GKE Autopilot 会阻止节点 SSH 访问,从而阻止直接使用 lctl ping。

如果 ping 失败,或者您从 Autopilot 集群诊断连接,请执行以下操作:

  • 确保您的 Managed Lustre 实例和客户端机器或 GKE 集群位于同一 VPC 网络中。

    对于 Compute Engine 客户端机器,请比较以下命令的输出:

    gcloud compute instances describe VM_NAME \
      --zone=VM_ZONE \
      --format='get(networkInterfaces[0].network)'
    
    gcloud lustre instances describe INSTANCE_NAME \
      --location=ZONE --format='get(network)'
    

    对于 GKE 集群,请比较以下命令的输出:

    gcloud container clusters describe CLUSTER_NAME \
      --location=LOCATION \
      --format='get(networkConfig.network)'
    
    gcloud lustre instances describe INSTANCE_NAME \
      --location=ZONE --format='get(network)'
    

    gcloud compute instances describe 和 gcloud container clusters describe 命令的输出带有 https://www.googleapis.com/compute/v1/ 前缀;该字符串后面的所有内容都必须与 gcloud lustre instances describe 命令的输出匹配。

  • 查看 VPC 网络防火墙规则和路由配置,确保它们允许客户端子网与 Managed Lustre 实例之间传输流量。

检查旧实例的 LNet 接受端口

虽然 --gke-support-enabled 标志已弃用,并且在创建新的 Managed Lustre 实例时不再需要,但您可能仍有使用此标志创建的旧实例。

如果您连接到已启用 GKE 支持的旧版实例,请将 LNet 或 CSI 驱动程序配置为使用端口 6988:

如需确定现有实例是否配置了此旧版标志,请运行以下命令:

gcloud lustre instances describe INSTANCE_NAME \
  --location=LOCATION | grep gkeSupportEnabled

如果该命令返回 gkeSupportEnabled: true,则您必须在客户端机器上配置 LNet,或在 GKE 集群上启用旧版端口标志。

Ubuntu 内核版本与 Lustre 客户端不匹配

对于运行 Ubuntu 的 Compute Engine 实例,Ubuntu 内核版本必须与 Lustre 客户端软件包的特定版本匹配。如果 Lustre 客户端工具出现故障,请检查您的 Compute Engine 实例是否已自动升级到较新的内核。

如需查看内核版本,请运行以下命令:

uname -r

响应如下所示:

6.8.0-1029-gcp

如需检查 Lustre 客户端软件包版本,请执行以下操作:

dpkg -l | grep -i lustre

响应如下所示:

ii  lustre-client-modules-6.8.0-1029-gcp 2.14.0-ddn198-1  amd64  Lustre Linux kernel module (kernel 6.8.0-1029-gcp)
ii  lustre-client-utils                  2.14.0-ddn198-1  amd64  Userspace utilities for the Lustre filesystem (client)

如果两个命令列出的内核版本不一致,您必须重新安装 Lustre 客户端软件包。

检查 dmesg 是否存在 Lustre 错误

许多 Lustre 警告和错误都会记录到 Linux 内核环形缓冲区。dmesg 命令会输出内核环形缓冲区。

如需搜索 Lustre 专属消息,请将 grep 与 dmesg 结合使用:

dmesg | grep -i lustre

或者,如需查找可能相关的更常见错误,请运行以下命令:

dmesg | grep -i error

在多 NIC 客户端机器上装载 Lustre 失败

如果客户端机器有多个网络接口控制器,并且 Managed Lustre 实例位于连接到辅助 NIC(例如 eth1)的 VPC 网络上,则装载该实例可能会失败。如需解决此问题,请按照使用辅助 NIC 装载中的说明操作。

无法从 172.17.0.0/16 子网范围进行连接

IP 地址在 172.17.0.0/16 子网范围内的 Compute Engine 客户端机器和 GKE 集群无法装载 Managed Lustre 实例。对于 GKE,请确保节点子网、Pod 地址范围和 Service 地址范围不与 172.17.0.0/16 重叠。

无法从对等互连项目访问 Managed Lustre

如果您的客户端机器或 GKE 集群位于对等互连的 VPC 网络中,并且无法连接到 Managed Lustre 实例,请验证以下内容:

  • 仅 VPC 对等互连不会将流量路由到 Managed Lustre 使用的专用服务访问通道连接。如需跨对等互连 VPC 网络进行连接,请通过 Network Connectivity Center 连接这两个网络。

  • 确保主机 VPC 网络和对等互连 VPC 网络中的防火墙规则都允许客户端子网与实例的已分配 IP 地址范围之间通过端口 988 和 6988 传输 TCP 流量。

如需查看分步设置说明和 gcloud 命令,请参阅配置 VPC 网络。

在启用了安全启动的安全强化型虚拟机上装载失败

Managed Lustre 无法装载到启用了安全启动的客户端机器(例如安全强化型虚拟机)上。尝试在安全启动环境中加载 Lustre 内核模块失败,并显示以下错误:ERROR: could not insert 'lustre': Required key not available.

支持请求中应包含的信息

如果您无法解决装载失败问题,请先收集诊断信息,然后再创建支持请求。使用 sosreport 生成诊断日志需要通过 SSH 访问客户端机器或节点。

Compute Engine 和 GKE Standard 节点

对于启用了 SSH 访问权限的 Compute Engine 客户端机器和 GKE Standard 节点,请使用 sosreport 实用程序收集诊断日志。sosreport 实用程序会收集系统日志和配置信息,并生成压缩归档文件。

安装 sosreport

如需验证是否已安装 sosreport 软件包并包含 Lustre 支持,请通过 SSH 连接到客户端机器并运行以下命令:

sudo sos report --list-plugins | grep lustre

如果找不到该命令,或者该命令未返回任何输出,请为您的操作系统安装或更新 sosreport:

Rocky Linux 和 RHEL

使用 dnf 软件包管理器安装 sos 软件包:

sudo dnf install -y sos

Ubuntu

Ubuntu 客户端机器需要 snap 中 latest/edge 渠道的 sosreport 才能收集 Lustre 诊断信息。使用 apt 安装的软件包不包含 Lustre 插件。

如果之前使用 apt 安装了 sosreport 的早期版本,请先移除该软件包:

sudo apt remove -y sosreport

使用 snap 安装 sosreport:

sudo snap install sosreport --classic --channel=latest/edge

Container-Optimized OS

在 toolbox 中使用 apt 软件包管理器安装 sosreport 软件包:

sudo toolbox
sudo apt install sosreport -y

生成报告

如需生成 sosreport,请运行以下命令:

sudo sos report --all-logs --batch --tmp-dir=/var

将 sosreport 归档文件附加到您的支持请求中。

如需详细了解 sosreport 实用程序,请参阅使用 sosreport 收集调试信息。

GKE Autopilot 集群

GKE Autopilot 会阻止对节点的 SSH 访问,并限制特权调试容器。您无法在 Autopilot 节点上或从工作负载容器内运行 sosreport。

如果您在 Autopilot 集群上遇到装载失败,请与 Cloud Customer Care 联系以获取帮助。

如需详细了解如何诊断 GKE 卷错误,请参阅排查 Managed Lustre CSI 驱动程序问题。