简介:本文详细介绍如何在Kubernetes集群中部署LongHorn分布式块存储系统,涵盖环境准备、安装步骤、配置优化及故障排查,助力开发者构建高可用存储方案。
LongHorn是由Rancher Labs开发的开源分布式块存储系统,专为Kubernetes设计。它通过将存储卷拆分为多个数据块并跨节点复制,提供高可用、弹性的存储解决方案。相比传统存储方案(如NFS、iSCSI),LongHorn具有以下优势:
xfs或ext4文件系统(LongHorn默认使用xfs)。为确保LongHorn组件分散部署,建议为节点添加标签:
kubectl label nodes <node-name> node-role.kubernetes.io/longhorn=true
helm repo add longhorn https://charts.longhorn.iohelm repo update
kubectl create namespace longhorn-system
编辑values.yaml调整参数,例如:
persistence:defaultClassReplicaCount: 3 # 默认副本数recurringJobSelector:enable: true # 启用定时快照nodeDownPodDeletionPolicy: DeleteBothStatefulSetAndDeployment # 节点故障时处理策略
helm install longhorn longhorn/longhorn --namespace longhorn-system -f values.yaml
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/longhorn.yaml
kubectl -n longhorn-system get pods# 预期输出:所有Pod状态为RunningNAME READY STATUScsi-attacher-xxx 1/1 Runningengine-image-ei-xxx 1/1 Runninglonghorn-driver-deployer-xxx 1/1 Running
kubectl -n longhorn-system port-forward svc/longhorn-frontend 8080:80
浏览器访问http://localhost:8080,登录后查看存储仪表盘。
apiVersion: storage.k8s.io/v1kind: StorageClassmetadata:name: longhorn-scprovisioner: driver.longhorn.ioallowVolumeExpansion: trueparameters:numberOfReplicas: "3"staleReplicaTimeout: "2880" # 48小时(单位:分钟)fromBackup: ""
应用后测试PVC创建:
apiVersion: v1kind: PersistentVolumeClaimmetadata:name: test-pvcspec:accessModes:- ReadWriteOncestorageClassName: longhorn-scresources:requests:storage: 10Gi
通过LongHorn UI或CLI手动触发数据重均衡:
kubectl exec -n longhorn-system <engine-pod> -- longhorn engine rebalance --volume <volume-name>
配置S3兼容备份目标(如MinIO):
# 在LongHorn UI的Settings > Backup Target中配置Backup Target URL: s3://backup-bucket@us-east-1/AWS Access Key: <your-key>AWS Secret Key: <your-secret>
replicaDiskSoftAntiAffinity: true避免副本共盘。replicaAutoBalance: least-effort。kubectl get nodes --show-labels。df -h /var/lib/longhorn/。kubectl logs -n longhorn-system <engine-pod>。storageClassName与StorageClass名称一致。kubectl get csidrivers。longhorn_volume_capacity_bytes)。helm upgrade --atomic确保回滚。kubectl drain前需先删除该节点上的LongHorn卷。通过以上步骤,开发者可在K8S环境中快速部署LongHorn分布式块存储,为有状态应用提供可靠的存储基础。实际部署中需结合业务场景调整副本策略和备份周期,确保数据安全与性能平衡。”