4. Longhorn UI 与 CLI:Dashboard 功能概览、kubectl 插件安装、longhornctl 命令行工具使用

在生产环境中,SRE 工程师需要同时掌握图形化界面与命令行工具,才能高效地管理 Longhorn 存储集群。本章将系统讲解 Longhorn Dashboard 的核心功能模块、kubectl 插件的安装与验证,以及 longhornctl 命令行工具的常用操作,帮助你在版本漂移校准和备份恢复场景中快速定位问题并执行操作。

4.1 Longhorn Dashboard 功能概览

Longhorn Dashboard 是部署在 Kubernetes 集群内的 Web 管理界面,默认通过 longhorn-ui Service 暴露。它提供了集群存储资源的全局视图,是日常巡检和故障排查的第一入口。

访问方式: 默认 Service 类型为 ClusterIP,可通过 kubectl port-forward -n longhorn-system svc/longhorn-ui 8080:80 映射到本地,浏览器访问 http://localhost:8080。

Dashboard 主要分为以下功能区域:

功能模块 核心内容 版本漂移场景用途
Dashboard 总览 集群健康状态、节点数量、卷总数、已用/总容量 快速判断集群整体版本一致性(如节点版本差异告警)
Volume 列表 每个卷的状态、大小、健康度、副本数、挂载节点 识别因版本漂移导致的卷挂载失败或副本重建异常
Node 列表 节点磁盘使用率、引擎/副本实例运行状态、Longhorn 版本 对比各节点 Longhorn 版本,发现版本不一致节点
Backup 管理 备份目标配置、备份列表、恢复操作入口 执行跨版本备份恢复,验证备份数据完整性
Setting 配置 全局参数(副本数、备份策略、存储网络等) 校准因版本升级导致的默认参数变更
Event 日志 集群事件流,包含错误、警告、操作记录 追溯版本漂移期间产生的异常事件
关键操作路径: 在版本漂移校准场景中,建议首先进入 Node 列表 检查各节点 Longhorn 版本号,然后进入 Volume 列表 筛选出状态异常的卷,最后通过 Backup 管理 执行备份恢复或回滚操作。
Longhorn Dashboard 功能架构 用户访问 (UI/CLI) 总览 健康/容量 Volume 状态/副本 Node 版本/磁盘 Backup 备份/恢复 Setting 全局参数 Event 日志/事件 Kubernetes API + Longhorn Manager (CRD 驱动) 版本漂移校准场景:Node 版本对比 → Volume 异常筛选 → Backup 恢复 通过 Dashboard 可视化完成全链路诊断

4.2 kubectl 插件安装与使用

Longhorn 官方提供了 kubectl-longhorn 插件,用于通过命令行直接管理 Longhorn 资源,无需频繁切换 Web 界面。该插件在版本漂移校准和批量操作场景中尤为高效。

4.2.1 插件安装

推荐使用 krew 插件管理器进行安装,确保版本与集群匹配:

# 安装 krew(如未安装)
(
  set -x; cd "$(mktemp -d)" &&
  OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
  ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/arm64/arm64/')" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/krew-${OS}_${ARCH}.tar.gz" &&
  tar zxvf "krew-${OS}_${ARCH}.tar.gz" &&
  ./krew-"${OS}_${ARCH}" install krew
)

# 添加 krew 到 PATH
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"

# 安装 longhorn 插件
kubectl krew install longhorn

# 验证安装
kubectl longhorn --version
版本兼容性注意: 确保 kubectl-longhorn 插件版本与 Longhorn 控制面版本一致。版本漂移场景中,如果插件版本高于集群版本,可能导致 API 字段解析失败。建议使用 kubectl longhorn version 对比集群版本。

4.2.2 常用命令速查

命令 功能 版本漂移场景示例
kubectl longhorn volume list 列出所有卷及其状态 筛选出 Degraded 或 Faulted 状态的卷
kubectl longhorn node list 列出节点及 Longhorn 版本 检查各节点 Engine Image 版本是否一致
kubectl longhorn backup list 列出所有备份 确认备份创建时间是否在版本升级前
kubectl longhorn backup restore 从备份恢复卷 跨版本恢复时指定 --backup-volume 参数
kubectl longhorn engine upgrade 升级卷引擎镜像 校准版本漂移后卷的引擎版本

4.2.3 插件输出示例

执行 kubectl longhorn node list 可快速发现版本不一致节点:

NAME           STATUS   READY   ALLOW_SCHEDULING   ENGINE_IMAGE_VERSION   NODE_ID
node-01        Healthy  True    True               v1.6.2                 k8s-node-01
node-02        Healthy  True    True               v1.6.2                 k8s-node-02
node-03        Healthy  True    True               v1.5.3                 k8s-node-03  ← 版本漂移
node-04        Healthy  True    True               v1.6.2                 k8s-node-04
校准动作: 发现 node-03 引擎版本为 v1.5.3,与集群其他节点 v1.6.2 不一致。此时应执行 kubectl longhorn engine upgrade --node node-03 --image longhornio/longhorn-engine:v1.6.2 进行版本对齐。

4.3 longhornctl 命令行工具使用

longhornctl 是 Longhorn 提供的独立 CLI 工具,用于在节点本地执行诊断、安装前检查、版本迁移等操作。与 kubectl 插件不同,longhornctl 直接与 Longhorn 后端服务交互,适合在 SSH 到节点后执行底层操作。

4.3.1 安装 longhornctl

支持二进制下载和容器化运行两种方式:

# 方式一:二进制安装(Linux amd64)
curl -sSfL https://github.com/longhorn/cli/releases/latest/download/longhornctl-linux-amd64 -o longhornctl
chmod +x longhornctl
sudo mv longhornctl /usr/local/bin/

# 方式二:容器运行(无需安装)
docker run --rm -v /var/lib/longhorn:/var/lib/longhorn longhornio/longhornctl:latest version

# 验证安装
longhornctl version

4.3.2 核心命令分类

命令类别 命令 说明
诊断 longhornctl check 执行集群健康检查,包括磁盘、网络、版本一致性
安装前检查 longhornctl install preflight 检查节点是否满足 Longhorn 安装前提条件
版本迁移 longhornctl migrate 在版本升级或降级时迁移数据格式
备份恢复 longhornctl backup restore 从备份存储中恢复卷数据到本地
信息查看 longhornctl info 查看节点 Longhorn 组件版本和配置

4.3.3 版本漂移场景实战:使用 longhornctl 进行版本检查

当集群出现版本漂移时,longhornctl check 可以快速定位不一致的组件:

# 在疑似版本漂移的节点上执行
longhornctl check --kubeconfig /etc/kubernetes/admin.conf

# 输出示例
[PASS]  Kernel module: iscsi_tcp
[PASS]  Kernel module: nbd
[PASS]  Multipath: disabled
[FAIL]  Engine image version mismatch: expected v1.6.2, found v1.5.3
[FAIL]  Longhorn manager version mismatch: expected v1.6.2, found v1.5.3
[PASS]  Disk space: /var/lib/longhorn (85% used, threshold 90%)
最佳实践: 在版本升级前,使用 longhornctl install preflight 检查所有节点;升级后使用 longhornctl check 验证版本一致性。若发现漂移,使用 longhornctl migrate 进行数据格式对齐。
Longhorn CLI 工具工作流程对比 kubectl-longhorn 插件 用户执行 kubectl longhorn 命令 kubectl 插件 → Kubernetes API Longhorn Manager (CRD 处理) 返回结构化 JSON/YAML 输出 longhornctl 独立工具 用户 SSH 到节点执行 longhornctl 直接调用 Longhorn 后端服务 本地文件系统 / 磁盘操作 输出诊断报告 / 迁移结果 VS

4.4 工具选择建议

根据不同的运维场景,选择合适的工具可以提升效率:

  • 日常巡检与批量操作: 优先使用 kubectl-longhorn 插件,通过 Kubernetes API 获取结构化数据,便于脚本化处理。
  • 节点级诊断与版本迁移: 使用 longhornctl 直接在节点上执行,避免网络延迟和 API 版本兼容问题。
  • 可视化分析与新手入门: 使用 Longhorn Dashboard,通过图形界面快速理解集群状态。
  • 版本漂移校准: 组合使用:Dashboard 发现异常 → kubectl-longhorn 确认版本差异 → longhornctl 执行本地迁移和修复。
安全提示: longhornctl 直接操作节点文件系统,执行 migrate 或 backup restore 前务必确认当前节点角色和数据路径,避免误操作导致数据丢失。建议在操作前使用 longhornctl check 进行预检。