2. Longhorn 安装与部署:环境要求与集成实践

在生产环境中部署 Longhorn 之前,必须严格核对底层环境是否满足官方要求。本章将围绕 Kubernetes 版本兼容性、节点资源规划、Helm 安装流程、Rancher 集成以及 UI 界面初识展开,帮助 SRE 和存储架构师建立标准化的部署基线。

2.1 环境要求

2.1.1 Kubernetes 版本兼容性

Longhorn 对 Kubernetes 版本有明确的依赖关系。下表列出了当前主流 Longhorn 版本与 Kubernetes 版本的对应关系:

Longhorn 版本 最低 Kubernetes 版本 推荐 Kubernetes 版本 备注
v1.6.x v1.21 v1.24 ~ v1.28 支持 CSI 1.5,默认使用 SPDK
v1.5.x v1.21 v1.23 ~ v1.27 稳定版本,广泛使用
v1.4.x v1.18 v1.21 ~ v1.25 已进入维护期
⚠️ 版本兼容性警告: 切勿在 Kubernetes v1.28+ 上部署 Longhorn v1.4.x 及以下版本,CSI 接口变更会导致卷挂载失败。升级前务必查阅官方 Release Notes 中的 API 变更列表。

2.1.2 节点资源要求

每个 Kubernetes 节点(包括控制平面节点,如果允许调度)必须满足以下最低资源要求:

  • CPU: 2 核(推荐 4 核),Longhorn 引擎和 replica 进程会占用额外 CPU 周期。
  • 内存: 4 GB(推荐 8 GB),其中 Longhorn manager 约占用 512 MB,每个卷的 engine 进程约占用 256 MB。
  • 磁盘: 至少 40 GB 可用空间(推荐 SSD/NVMe),用于存放 replica 数据和元数据。
  • 文件系统: 仅支持 ext4 或 xfs,不支持 btrfs、zfs 或网络文件系统。
  • 网络: 节点间延迟 < 2ms(推荐),带宽 > 1 Gbps。
💡 架构建议: 如果使用 Rancher 集成部署,建议为 Longhorn 预留独立的污点节点池(例如 node-role.kubernetes.io/longhorn=true:NoSchedule),避免业务 Pod 与存储组件争抢 I/O 资源。

2.2 Helm 安装 Longhorn

Helm 是部署 Longhorn 最推荐的方式,支持参数化配置和版本回滚。以下为标准化安装步骤:

  1. 添加 Longhorn Helm 仓库:
helm repo add longhorn https://charts.longhorn.io
helm repo update
  1. 创建命名空间:
kubectl create namespace longhorn-system
  1. 使用自定义 values 文件安装:
cat <<EOF > longhorn-values.yaml
defaultSettings:
  defaultReplicaCount: 3
  defaultDataPath: /var/lib/longhorn
  replicaSoftAntiAffinity: true
  storageMinimalAvailablePercentage: 10
  guaranteedEngineManagerCPU: 0.25
  guaranteedReplicaManagerCPU: 0.25
persistence:
  defaultClass: true
  defaultClassReplicaCount: 3
  reclaimPolicy: Delete
csi:
  attacherReplicaCount: 2
  provisionerReplicaCount: 2
  resizerReplicaCount: 2
  snapshotterReplicaCount: 2
EOF

helm install longhorn longhorn/longhorn \
  --namespace longhorn-system \
  --values longhorn-values.yaml
  1. 验证安装状态:
kubectl -n longhorn-system get pods
# 预期输出:所有 Pod 处于 Running 状态
# longhorn-manager-xxxxx    1/1   Running
# longhorn-engine-xxxxx     1/1   Running
# longhorn-ui-xxxxx         1/1   Running
# longhorn-csi-plugin-xxxxx 2/2   Running
🔧 关键参数说明:
  • defaultReplicaCount: 3 — 生产环境建议至少 3 副本,容忍单节点故障。
  • guaranteedEngineManagerCPU: 0.25 — 为 engine 进程预留 250m CPU,防止 I/O 抖动。
  • storageMinimalAvailablePercentage: 10 — 当磁盘可用空间低于 10% 时,Longhorn 自动停止在该节点上调度新 replica。

2.3 Rancher 集成

如果集群由 Rancher 管理,可以通过 Rancher 应用商店一键部署 Longhorn,同时获得统一的监控和升级界面。

2.3.1 集成步骤

  1. 登录 Rancher UI,进入目标集群。
  2. 点击左侧 Apps → Charts,搜索 longhorn。
  3. 选择 Longhorn 图表,点击 Install。
  4. 在 Customize Helm options 中填入与 Helm 安装相同的 values 参数。
  5. 设置 Namespace 为 longhorn-system,点击 Install。
💡 集成优势: Rancher 集成后,Longhorn 的 UI 会嵌入 Rancher 的仪表盘,无需单独暴露 NodePort 或 Ingress。同时,Rancher 的 RBAC 策略会自动同步到 Longhorn,实现统一权限管理。

2.3.2 集成架构示意

下图展示了 Rancher 与 Longhorn 的集成关系:

Rancher 集成 Longhorn 架构 Rancher Server 统一管理界面 Kubernetes 集群 API Server / Scheduler Longhorn Manager / Engine / UI 集成流程说明 1. Rancher 通过 Helm Chart 将 Longhorn 部署到目标集群 2. Longhorn UI 嵌入 Rancher 仪表盘,无需额外暴露端口 3. Rancher RBAC 策略同步至 Longhorn,实现统一权限 4. 升级时通过 Rancher 应用商店统一管理版本

2.4 UI 界面初识

Longhorn 提供了一个基于 Web 的管理界面,默认通过 NodePort 或 Ingress 暴露。首次访问时,你将看到以下核心区域:

  • Dashboard(仪表盘): 显示集群存储容量、已用空间、卷数量、节点健康状态等全局指标。
  • Volume(卷管理): 列出所有 PVC 对应的 Longhorn 卷,支持创建、扩容、克隆、快照、备份等操作。
  • Node(节点管理): 展示每个节点的磁盘使用情况、调度状态、引擎和 replica 分布。
  • Setting(设置): 全局参数配置,如默认副本数、数据路径、备份目标、污点容忍等。
  • Backup(备份): 管理 NFS 或 S3 备份目标,查看备份历史。
📊 关键指标解读:
  • Storage Reserved: 已分配给卷的存储总量,不等于实际使用量。
  • Storage Used: 卷实际写入的数据量。
  • Replica Count: 每个卷的副本数,健康状态应显示 3/3。
  • Node Status: 绿色表示正常,黄色表示磁盘空间不足,红色表示节点不可用。

下图展示了 Longhorn UI 的 Dashboard 页面布局:

Longhorn UI Dashboard 布局 Longhorn Dashboard Volume Node Setting Backup 总容量 2.4 TiB 已使用 1.1 TiB 卷数量 24 节点健康 5/5 节点状态 node-1 ✅ 可用: 320 GiB node-2 ✅ 可用: 280 GiB node-3 ⚠️ 可用: 45 GiB (不足) node-4 ✅ 可用: 350 GiB 最近卷活动 pvc-data-01 3/3 健康 pvc-data-02 3/3 健康 pvc-data-03 2/3 降级 pvc-data-04 3/3 健康
🔍 快速排查技巧: 如果 UI 无法访问,首先检查 longhorn-ui Service 的 NodePort 是否被防火墙拦截,或 Ingress 配置是否正确。使用 kubectl -n longhorn-system get svc longhorn-ui 查看暴露端口。