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 最推荐的方式,支持参数化配置和版本回滚。以下为标准化安装步骤:
- 添加 Longhorn Helm 仓库:
helm repo add longhorn https://charts.longhorn.io
helm repo update
- 创建命名空间:
kubectl create namespace longhorn-system
- 使用自定义 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
- 验证安装状态:
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 集成步骤
- 登录 Rancher UI,进入目标集群。
- 点击左侧 Apps → Charts,搜索
longhorn。 - 选择 Longhorn 图表,点击 Install。
- 在 Customize Helm options 中填入与 Helm 安装相同的 values 参数。
- 设置 Namespace 为
longhorn-system,点击 Install。
💡 集成优势: Rancher 集成后,Longhorn 的 UI 会嵌入 Rancher 的仪表盘,无需单独暴露 NodePort 或 Ingress。同时,Rancher 的 RBAC 策略会自动同步到 Longhorn,实现统一权限管理。
2.3.2 集成架构示意
下图展示了 Rancher 与 Longhorn 的集成关系:
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 页面布局:
🔍 快速排查技巧: 如果 UI 无法访问,首先检查
longhorn-ui Service 的 NodePort 是否被防火墙拦截,或 Ingress 配置是否正确。使用 kubectl -n longhorn-system get svc longhorn-ui 查看暴露端口。