Kubernetes云原生存储解决方案 - Longhorn安装指南
简介
Longhorn 是一个轻量级、可靠且功能强大的分布式块存储系统,专为 Kubernetes 而设计。它实现了可靠的持久化存储,支持快照、备份和跨集群灾难恢复等企业级功能。
主要特性
- 企业级分布式块存储
- 跨节点数据复制和自动重建
- 无中心化架构
- 非侵入式架构
- 图形化管理界面
- 快照和备份支持
- 跨集群灾备能力
环境要求
在安装 Longhorn 之前,请确保您的环境满足以下要求:
环境检查
在部署 Longhorn 之前,强烈建议运行环境检查脚本来验证您的环境是否满足所有必要条件:
1 | # 下载环境检查脚本 |
这个脚本会检查:
- 操作系统依赖
- 内核模块
- 挂载点
- 系统工具
- 网络配置
- SELinux 状态
- iscsi 服务状态
硬件要求
- CPU: 最低 1 核
- 内存: 最低 1GB
- 磁盘: 每个节点至少 20GB 可用空间
软件要求
- Kubernetes v1.21+
- 所有节点已安装 open-iscsi
- 所有节点已安装 curl、findmnt、grep、awk、blkid、lsblk 等工具
节点要求
1 | # 在所有节点执行以下命令安装必要组件 |
安装方法
方法一:使用 Helm 安装(推荐)
- 添加 Longhorn 的 Helm 仓库:
1 | helm repo add longhorn https://charts.longhorn.io |
- 创建 longhorn-system 命名空间:
1 | kubectl create namespace longhorn-system |
- 安装 Longhorn:
1 | helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace --version 1.8.1 |
默认数据目录是/var/lib/longhorn, 可以通过配置values.yaml按照自己的存储规划要求设置自定义的目录。 如: –set defaultSettings.defaultDataPath=”/data/longhorn”
方法二:使用 kubectl 安装
- 直接应用官方的安装清单:
1 | kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/longhorn.yaml |
方法三:使用 ArgoCD 安装
如果您的集群使用 ArgoCD 进行 GitOps 管理,可以通过以下方式部署 Longhorn:
- 创建 Application 配置文件
longhorn-application.yaml
:
1 | apiVersion: argoproj.io/v1alpha1 |
- 如果需要配置备份到 S3,创建密钥文件
backup-secret.yaml
:
1 | apiVersion: v1 |
- 应用配置:
1 | # 创建 namespace(如果不存在) |
- 验证部署状态:
- 在 ArgoCD UI 中查看应用同步状态
- 等待所有资源创建完成
- 检查 Pod 状态:
1
kubectl get pods -n longhorn-system
验证安装
- 检查所有 Pod 是否正常运行:
1 | kubectl get pods -n longhorn-system |
预期输出应该显示所有 Pod 都处于 Running 状态:
1 | NAME READY STATUS RESTARTS AGE |
- 验证 StorageClass 是否创建:
1 | kubectl get sc |
应该能看到 longhorn StorageClass:
1 | NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE |
访问 Longhorn UI
- 创建 Ingress(可选):
1 | apiVersion: networking.k8s.io/v1 |
- 或者使用端口转发:
1 | kubectl port-forward service/longhorn-frontend 8000:80 -n longhorn-system |
然后访问 http://localhost:8000
使用示例
创建一个使用 Longhorn 存储的示例 Pod:
1 | apiVersion: v1 |
常见问题处理
- Pod 无法调度到节点
- 检查节点是否满足 Longhorn 的系统要求
- 确认 iscsid 服务是否正常运行
- 查看 Longhorn Manager 日志
- 存储卷创建失败
- 检查存储空间是否充足
- 确认网络连接是否正常
- 查看 Longhorn UI 中的事件日志
最佳实践
- 存储配置
- 建议使用 SSD 作为存储介质
- 为不同类型的工作负载创建不同的 StorageClass
- 根据实际需求配置副本数量
- 备份策略
- 定期创建数据快照
- 配置远程备份到对象存储
- 制定灾难恢复计划
存储配置
配置节点默认存储路径
Longhorn 默认使用 /var/lib/longhorn
作为存储路径。您可以通过以下方式修改默认存储路径:
在 Longhorn UI 中修改:
- 访问 Longhorn UI
- 点击 “Setting” -> “General” -> “Default Data Path”
- 修改为您想要的路径,如
/data/longhorn
通过 Helm 安装时指定:
1 | helm install longhorn longhorn/longhorn \ |
配置额外的存储目录
您可以为节点添加多个存储目录或磁盘:
准备存储目录:
1
2
3
4
5
6
7# 在节点上创建目录
mkdir -p /data/longhorn-1
mkdir -p /data/longhorn-2
# 确保目录权限正确
chmod 700 /data/longhorn-*
chown root:root /data/longhorn-*在 Longhorn UI 中添加磁盘:
- 进入 “Node” 页面
- 选择要配置的节点
- 点击 “Edit Node and Disks”
- 在 “Add Disk” 部分:
- 输入磁盘路径(如
/data/longhorn-1
) - 设置磁盘调度选项
- 设置存储预留空间
- 点击 “Save” 保存配置
- 输入磁盘路径(如
使用原始磁盘设备
如果要使用原始磁盘设备作为存储:
准备磁盘:
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 查看可用磁盘
lsblk
# 格式化磁盘(假设使用 /dev/sdb)
mkfs.ext4 /dev/sdb
# 创建挂载点
mkdir -p /data/longhorn-disk
# 挂载磁盘
mount /dev/sdb /data/longhorn-disk
# 添加到 fstab 以确保重启后自动挂载
echo "/dev/sdb /data/longhorn-disk ext4 defaults 0 0" >> /etc/fstab在 Longhorn UI 中添加磁盘:
- 路径填写磁盘的挂载点(如
/data/longhorn-disk
) - 其他步骤同上
- 路径填写磁盘的挂载点(如
存储标签(Storage Tags)
您可以使用存储标签来管理不同性能的存储:
添加标签:
- 在 Longhorn UI 中选择节点和磁盘
- 添加标签,如:
ssd=true
用于 SSD 存储hdd=true
用于 HDD 存储
在创建卷时使用标签:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: longhorn-ssd
provisioner: driver.longhorn.io
parameters:
numberOfReplicas: "3"
diskSelector: "ssd"
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: high-perf-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn-ssd
resources:
requests:
storage: 10Gi
存储最佳实践
容量规划
- 为系统预留足够空间(建议 30% 以上)
- 考虑副本数量对存储空间的影响
- 定期监控存储使用情况
性能优化
- 使用 SSD 作为主存储
- 合理设置副本数量(通常为 3)
- 避免在系统盘上存储数据
可靠性保障
- 使用 RAID 配置提高可靠性
- 配置定期备份
- 启用磁盘健康检查
监控告警
- 配置存储空间告警阈值
- 监控磁盘 I/O 性能
- 设置节点状态监控
参考资料
本文由 AI 辅助生成,如有错误或建议,欢迎指出。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
评论