Longhorn 实战:K8s 分布式块存储部署与使用
metadata:numberOfReplicas: "3" # 副本数staleReplicaTimeout: "30" # 副本超时(分钟)
·
Longhorn 实战:Kubernetes 分布式块存储部署与使用
一、Longhorn 简介
Longhorn 是轻量级、云原生的分布式块存储系统,专为 Kubernetes 设计:
- 分布式架构:数据自动跨节点复制(默认 3 副本)
- 精简配置:按需分配存储空间
- 快照/备份:支持定时快照与备份到 S3
- 易运维:提供直观的 Web UI 管理界面
二、部署准备
1. 环境要求
- Kubernetes 集群(v1.18+)
- 所有节点开放端口:
9796(数据传输)、9800(API) - 节点需安装:
nfs-utils # CentOS/RHEL open-iscsi # Ubuntu/Debian
2. 安装 Helm
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
三、部署 Longhorn
1. 添加 Helm 仓库
helm repo add longhorn https://charts.longhorn.io
helm repo update
2. 安装 Longhorn
kubectl create namespace longhorn-system
helm install longhorn longhorn/longhorn \
--namespace longhorn-system \
--version 1.5.1
3. 验证安装
kubectl -n longhorn-system get pods
# 预期输出:所有Pod状态为Running
4. 访问 Web UI
kubectl port-forward -n longhorn-system svc/longhorn-frontend 8080:80
浏览器访问:http://localhost:8080
四、创建存储卷
1. 定义 StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: longhorn-sc
provisioner: driver.longhorn.io
allowVolumeExpansion: true
parameters:
numberOfReplicas: "3" # 副本数
staleReplicaTimeout: "30" # 副本超时(分钟)
2. 创建 PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pvc
spec:
storageClassName: longhorn-sc
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
五、应用中使用存储
MySQL 示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:8.0
env:
- name: MYSQL_ROOT_PASSWORD
value: "password"
volumeMounts:
- name: data
mountPath: /var/lib/mysql
volumes:
- name: data
persistentVolumeClaim:
claimName: mysql-pvc
验证数据持久化:
kubectl exec -it mysql-pod -- mysql -uroot -ppassword -e "CREATE DATABASE test;"
# 删除Pod后重新创建,数据库仍存在
六、高级功能
1. 创建快照
apiVersion: longhorn.io/v1beta2
kind: VolumeSnapshot
metadata:
name: mysql-snapshot
spec:
volume: mysql-pvc # PVC名称
snapshotName: hourly-backup
2. 配置 S3 备份
在 Longhorn UI 中:
- 进入 Settings > Backup Target
- 填写 S3 信息:
s3://backup-bucket@us-east-1/ accessKey=AKIAXXX secretKey=YYYY
3. 监控指标
Prometheus 自动抓取指标端点:
http://longhorn-backend:9500/v1/metrics
七、故障排查
常见问题解决:
- 卷卡在 Attaching 状态
kubectl -n longhorn-system logs -l app=longhorn-manager # 检查节点间网络连通性 - 副本同步失败
- 在 UI 中检查副本节点状态
- 验证
open-iscsi服务运行正常
- 存储空间不足
kubectl edit pvc mysql-pvc # 修改storage大小
注意事项:生产环境建议使用专用存储节点,并定期验证备份完整性。
通过以上步骤,您已完成 Longhorn 的部署与应用集成,实现了 Kubernetes 的持久化存储能力。
更多推荐


所有评论(0)