云原生存储高可用容器编排【免费下载链接】longhornCloud-Native distributed storage built on and for Kubernetes项目地址https://gitcode.com/gh_mirrors/lo/longhorn点击查看免费下载Longhorn 是 CNCF 孵化项目Incubating Project旗下的云原生分布式块存储系统完全构建在 Kubernetes 与容器原语之上它把存储控制器和副本都实现为容器由 Kubernetes 自身完成编排。本指南以仓库根目录 README.md 为核心结合 chart/ 下的 Helm Chart、deploy/longhorn.yaml 部署清单与 CHANGELOG/ 发布记录系统讲解 Longhorn 的架构组件、核心能力、安装方式、默认存储类参数与社区参与方式。读完本文你将掌握在一套既有 Kubernetes 集群上快速部署 Longhorn、理解其卷与副本数据模型、并为其配置默认 StorageClass 与访问 UI 的完整实战路径。一、Longhorn 是什么为 Kubernetes 而生的分布式块存储Longhorn 是一个面向 Kubernetes 的分布式块存储系统其定位是cloud-native storage built using Kubernetes and container primitives——即使用 Kubernetes 和容器原语构建的云原生存储。这意味着它并非传统意义上的独立存储阵列而是将每个块设备卷的存储控制器与多个副本都建模为可编排的容器化组件由 Kubernetes 负责调度、生命周期管理与故障恢复。Longhorn 体积轻量lightweight、可靠性高reliable且功能强大powerful可在既有 Kubernetes 集群上通过一条kubectl apply命令或 Helm Chart 完成安装安装完成后它会向集群注入持久卷Persistent Volume支持能力应用即可通过 PVC/StorageClass 消费分布式块存储。从数据面看Longhorn 采用每卷专用控制器 跨节点同步多副本的经典架构系统为每一个块设备卷创建独立的存储控制器并将卷数据同步复制到分布在多个节点上的多个副本中控制器与副本本身同样由 Kubernetes 编排管理。这一设计同时带来了高可用多副本冗余与无中心瓶颈无共享存储元数据服务器的特性。二、核心特性企业级能力的六个支柱README.md 明确列举了 Longhorn 的六项突出能力下面逐一展开并补充仓库中的实现佐证企业级分布式存储无单点故障No Single Point of Failure每个卷由独立控制器与多个跨节点副本构成任意节点或副本故障时可由剩余副本接管控制器由 Kubernetes 调度保障不存在单一元数据或数据瓶颈点。块存储的增量快照Incremental Snapshot of Block Storage基于块级 copy-on-write 机制对卷进行增量快照快照链支持任意时间点回滚相关实现细节可参考 enhancements/20220317-snapshot-prune.md快照裁剪与 enhancements/20220922-snapshot-checksum-and-bit-rot-detection.md快照校验和与位衰减检测两份设计文档。基于高效变更块检测Change Block Detection的备份能力备份目标支持NFSv4 或 S3 兼容对象存储。备份建立在高效的变更块检测之上只传输自上次备份以来发生变化的块从而大幅降低备份时间窗与存储占用。仓库中可佐证的资料包括 enhancements/20200701-backupstore-file-locks.md、enhancements/20230108-improve-backup-and-restore-efficiency-using-multiple-threads-and-compression-methods.md 以及 enhancements/20240926-multiple-backup-targets-support.md多备份目标支持。定时快照与备份Recurring Snapshot and Backup支持按计划如每小时/每天/每周自动执行快照与备份并可通过标签Label驱动关联卷参见 enhancements/20210624-label-driven-recurring-job.md 与 enhancements/20260819-age-based-retention-for-recurring-jobs.md。自动化无中断升级Automated Non-Disruptive Upgrade可以在不影响运行中卷running volumes的前提下升级整个 Longhorn 软件栈。升级路径受控且可校验相关机制可参考 enhancements/20230315-upgrade-path-enforcement.md升级路径强制与 enhancements/20230815-engine-upgrade-enforcement.md引擎升级强制。直观的 GUI 仪表盘Intuitive GUI DashboardLonghorn UI 提供可视化的卷、节点、副本、备份、设置管理界面。下图即本仓库根目录中的 UI 界面截图可用作安装后的访问效果参考三、架构与组件一个主仓库多个专业子仓库Longhorn 是 100% 开源软件项目源代码分布在多个仓库中本仓库longhorn聚合了总览、Chart、部署清单、增强提案enhancements与发布记录。组件分工如下表组件职责说明Longhorn Backing Image Manager磁盘中 backing image 的下载、同步与删除管理卷启动所依赖的底衬镜像Longhorn Instance Manager控制器/副本实例的生命周期管理在节点上托管 engine/replica 进程Longhorn ManagerLonghorn 编排内置 Kubernetes CSI 驱动核心控制器负责 CRD 调谐Longhorn Share ManagerNFS provisioner将卷暴露为 ReadWriteMany支撑 RWX 卷Longhorn UILonghorn 仪表盘图形化管理界面Longhorn CLILonghorn 命令行接口命令行管理工具参见 enhancements/20240423-longhorn-commandline-interface.md同时Longhorn 以库Library形式拆分底层实现库职责Longhorn EngineV1 核心控制器/副本逻辑Longhorn SPDK EngineV2 核心控制器/副本逻辑基于 SPDKiSCSI HelperV1 iSCSI 客户端与服务端库SPDK HelperV2 SPDK 客户端与服务端库Backup Store备份相关库Common Libraries通用库其中 V1/V2 双数据引擎是 Longhorn 近年架构演进的标志V1 基于 iSCSI 与常规 Linux 块设备V2 基于 SPDK/NVMe 并支持 ublk 前端相关设计参见 enhancements/20221213-reimplement-longhorn-engine-with-SPDK.md 与 enhancements/20250313-ublk-frontend-for-v2-engine.md。四、发布版本与支持策略README.md 通过版本表说明了各发布分支的状态遵循以下规则带*的发布分支如1.12*、1.11*处于积极支持期会定期发布后续补丁版本Latest指最新发布分支上的最新版本Stable指稳定且被广泛采用的版本版本 EOL 规则为首个稳定版本发布后一年。各分支当前状态与对应变更记录本仓库 CHANGELOG/ 目录整理如下ReleaseLatest VersionStable Versions仓库内 Release Note1.12*1.12.11.12.1CHANGELOG-1.12.1.md1.11*1.11.31.11.3CHANGELOG-1.11.3.md1.101.10.21.10.2CHANGELOG-1.10.2.md1.91.9.21.9.2CHANGELOG-1.9.2.md1.81.8.21.8.2CHANGELOG-1.8.2.md1.71.7.31.7.3, 1.7.2, 1.7.1CHANGELOG-1.7.3.md1.61.6.41.6.4, 1.6.3, 1.6.2, 1.6.1CHANGELOG-1.6.4.md1.51.5.51.5.5, 1.5.4, 1.5.3CHANGELOG-1.5.5.md1.41.4.41.4.4, 1.4.3, 1.4.2, 1.4.1CHANGELOG-1.4.4.md仓库内收录至 CHANGELOG-1.4.3.md1.31.3.31.3.3, 1.3.2见历史 Release 记录1.21.2.61.2.6, 1.2.5, 1.2.4, 1.2.3, 1.2.2见历史 Release 记录1.11.1.31.1.3, 1.1.2见历史 Release 记录注意本仓库 master 分支对应下一功能版本的开发状态chart/Chart.yaml 中版本号为1.12.0-devappVersion: v1.12.0-dev。正式安装或升级应使用官方正式 Release 版本而非 master-head 镜像。五、快速开始安装要求与三种安装方式5.1 安装要求Requirements安装前需确认 Kubernetes 集群满足官方文档中的安装要求节点数量、CPU/内存、OS、存储工具如 open-iscsi 与 NFS 客户端等。可从 Chart 元数据看到一个关键约束当前 Chart 的kubeVersion: 1.34.0-0即要求 Kubernetes 1.34 及以上版本详见 chart/Chart.yaml。5.2 方式一kubectl 一键安装仓库根目录提供了完整的渲染后部署清单 deploy/longhorn.yaml共 6700 余行它由 Helm 模板预渲染而成包含 Namespace、PriorityClass、NetworkPolicy、RBAC、DaemonSet、Deployment 等全部资源开箱即用kubectl apply -f deploy/longhorn.yaml该清单开头的 Namespace 资源即为longhorn-system随后依次是优先级类longhorn-criticalvalue: 1000000000preemptionPolicy: PreemptLowerPriority用于防止节点压力下 Longhorn Pod 被意外驱逐、各类 NetworkPolicy如backing-image-data-source、backing-image-manager、instance-manager等均以longhorn.io/component标签选择 Pod与后续的 Manager/Driver/UI 工作负载。清单的生成逻辑可复现scripts/generate-longhorn-yaml.sh 通过helm template longhorn chart/ --namespace longhorn-system --create-namespace --no-hooks --kube-version 1.34.0渲染再剥离 Helm 管理注解得到纯净清单。这意味着你在 chart/values.yaml 中的任何自定义都会体现在最终部署中。5.3 方式二Helm 安装对需要参数化定制的生产环境推荐使用 Helm Chartchart/helm repo add longhorn https://charts.longhorn.io helm repo update helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace安装前可修改 chart/values.yaml共 798 行几乎每个参数都带有# --注释说明或通过--set覆盖。常用配置分组包括global镜像仓库全局覆盖imageRegistry、拉取密钥imagePullSecrets、容忍度与节点选择器、时区timezone等networkPolicies网络策略开关默认enabled: false、是否限制内部流量restrictInternalTraffic默认 true、策略类型type可选k3s/rke2/rke1、Kube API Server 源 CIDR、V1 iSCSI 发起方 CIDR、指标抓取源metricsScrapeSources等image各组件镜像的 registry/repository/tagengine、manager、ui、instanceManager、shareManager、backingImageManager、supportBundleKit以及 CSI 插件全家桶 attacher/provisioner/nodeDriverRegistrar/resizer/snapshotter/livenessProbeimage.pullPolicy默认IfNotPresentservice.uiUI Service 类型ClusterIP/NodePort/LoadBalancer/Rancher-Proxy默认 ClusterIP、nodePort默认自动分配 30000-32767、loadBalancerClass、注解与标签persistence默认 StorageClass 行为见下节csikubelet 根目录kubeletRootDir、Pod 反亲和podAntiAffinityPreset、各 CSI sidecar 副本数等。5.4 方式三Rancher App Marketplace面向 Rancher 用户可通过 Rancher 的 App Marketplace 一键部署 Longhorn。仓库中 chart/ 即为标准 Helm Chart可被 Rancher 目录直接消费针对 OpenShift/OKD 环境仓库还提供了openshift.enabled开关与 deploy/longhorn-okd.yaml 专用清单。六、部署清单结构解析从 Chart 到实际资源无论走哪条安装路径最终落在集群里的资源都源自 chart/templates/ 下的模板主要包括模板文件产出资源deployment-global-manager.yamlLonghorn Manager Deployment 及其 Service、PDBdeployment-driver.yamlCSI 驱动longhorn-csi-pluginDaemonSet含 attacher/provisioner/resizer/snapshotter 等 sidecardeployment-ui.yamlLonghorn UI Deploymentdaemonset-sa.yamlLonghorn Manager DaemonSet含 ServiceAccountclusterrole.yaml、clusterrolebinding.yaml、role.yaml、rolebinding.yamlRBAC 权限crds.yamlLonghorn 全部 CRDVolume、Replica、Engine、Backup、Snapshot、Setting 等storageclass.yaml默认 StorageClass 的 ConfigMapnetwork-policies/各类组件 NetworkPolicyingress.yaml、httproute.yamlUI 访问入口Ingress / Gateway APIpreupgrade-job.yaml、postupgrade-job.yaml升级前后检查 Jobpriorityclass.yamllonghorn-criticalPriorityClassservices.yamlManager、UI、admissionWebhook、recoveryBackend 等 Service其中 deployment-driver.yaml 中的 CSI 插件以 DaemonSet 形式在每个节点运行通过spec.nodeName感知宿主机并将kubeletRootDir挂载进容器——这正是 Kubernetes 节点访问卷的通道provisioner 名为driver.longhorn.io。七、默认 StorageClass 与卷参数详解安装后 Longhorn 会创建一个名为longhorn的默认 StorageClass是否创建由persistence.createStorageClass控制默认 true是否标记为集群默认类由persistence.defaultClass控制。其模板位于 chart/templates/storageclass.yaml核心定义如下kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: longhorn annotations: storageclass.kubernetes.io/is-default-class: true provisioner: driver.longhorn.io allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: Immediate parameters: numberOfReplicas: 3 staleReplicaTimeout: 30 fromBackup: dataLocality: disabled dataEngine: v1 unmapMarkSnapChainRemoved: ignored disableRevisionCounter: true backupTargetName: default各参数与 chart/values.yaml 中persistence段的映射关系及取值范围参数对应 values 项默认值说明numberOfReplicaspersistence.defaultClassReplicaCount3卷副本数staleReplicaTimeout固定值30副本失联超时分钟fromBackup固定空从备份创建卷fsType/mkfsParamsdefaultFsType/defaultMkfsParamsext4/ 空文件系统类型与 mkfs 参数dataLocalitydefaultDataLocalitydisabled数据本地性disabled/best-effortdataEnginepersistence.dataEnginev1数据引擎v1/v2migratablepersistence.migratablefalse卷跨节点在线迁移RWXunmapMarkSnapChainRemovedpersistence.unmapMarkSnapChainRemovedignoredtrim 时是否自动删除快照链ignored/enabled/disableddisableRevisionCounterpersistence.disableRevisionCountertrue禁用修订计数器salvage 时依据volume-head-xxx.img的大小与修改时间选择恢复副本diskSelector/nodeSelectordefaultDiskSelector/defaultNodeSelector空仅使用带指定标签的磁盘/节点如nvme,satarecurringJobSelectorpersistence.recurringJobSelector关闭为卷绑定定时任务如[{name:backup, isGroup:true}]backingImage系列persistence.backingImage关闭指定 backing image 名称、数据源类型dataSourceType、参数dataSourceParametersJSON 字符串如{url:https://backing-image-example.s3-region.amazonaws.com/test-backing-image}与期望 SHA-512 校验和expectedChecksumbackupTargetNamepersistence.backupTargetNamedefault默认备份目标nfsOptionspersistence.nfsOptions空RWX 卷的 NFS 挂载选项shareManagerNodeSelector/shareManagerTolerations同名 values 项关闭share manager Pod 的调度约束此外reclaimPolicy默认为DeletePVC 释放即删卷可改为RetainvolumeBindingMode默认为Immediate可设为WaitForFirstConsumer以延迟绑定。allowVolumeExpansion: true使卷支持在线扩容。八、访问 Longhorn UI安装完成后UI 默认以ClusterIP类型的 Service 暴露chart/values.yaml 中service.ui.type: ClusterIP。要对外提供访问可改用 NodePort/LoadBalancer--set service.ui.typeNodePort配置 Ingress参考 chart/templates/ingress.yaml设置ingress.enabled、ingress.host、ingress.path默认空pathType默认ImplementationSpecific、ingress.ingressClassName、ingress.secureBackends以及ingress.tls/ingress.tlsSecret支持extraHosts多域名与多 TLS 证书配置 Gateway APIhttproute.enabled与 chart/templates/httproute.yaml。Manager 的 REST API 与指标TCP/9500默认同样走ClusterIP便于 Prometheus 等监控系统通过metricsScrapeSources网络策略按需放行。九、社区、贡献与支持Longhorn 是开源软件欢迎各类贡献不仅限于代码。参与前请先阅读 CODE_OF_CONDUCT.md 与 CONTRIBUTING.md。讨论与反馈可在项目 Discussions 中发起讨论功能请求与 Bug 报告通过 Issues 提交项目维护团队每周召开社区问题评审会议Support Bundle提交 Bug 时建议附带 support bundleLonghorn 内置的支持包收集机制以加速定位漏洞报告安全漏洞请通过安全邮件渠道上报社区活动每月第三个周四召开月度社区会议UTC 时间 4:00 与 6:00 交替分别面向 AMER/EU 与 APAC 时区并设有开发者与用户邮件列表CNCFLonghorn 是 CNCF 孵化项目Incubating Project。十、许可证Longhorn 采用 Apache License 2.0 开源许可Copyright (c) 2014-2026 The Longhorn Authors许可全文与限制条款见 LICENSE 与 SECURITY.md。结语从架构上看Longhorn 将传统 SAN/NAS 的控制面与数据面全部容器化并交给 Kubernetes 编排从而实现了无单点故障 同步多副本 增量快照 高效备份 无中断升级 可视化 UI的企业级能力组合从工程实践上看无论是kubectl apply -f deploy/longhorn.yaml的开箱即用还是通过 chart/values.yaml 的深度定制或是依据 CHANGELOG/ 规划版本升级Longhorn 都为 Kubernetes 用户提供了一条清晰、可验证的分布式块存储落地路径。建议读者在测试集群上先以默认参数安装熟悉 chart/templates/storageclass.yaml 中的卷参数语义后再结合numberOfReplicas、dataLocality、dataEngine等关键参数为生产卷做针对性调优。赞分享云原生存储高可用容器编排【免费下载链接】longhornCloud-Native distributed storage built on and for Kubernetes项目地址https://gitcode.com/gh_mirrors/lo/longhorn点击查看免费下载相关推荐Longhorn 终极指南基于 Kubernetes 的分布式块存储系统完整解析Longhorn 终极指南基于 Kubernetes 的分布式块存储系统完整解析 Longhorn 是一个专为 Kubernetes 设计的轻量级、可靠且功能云原生存储高可用容器编排Harvester存储系统深度剖析Longhorn分布式存储实战Harvester存储系统深度剖析Longhorn分布式存储实战 Harvester作为开源超融合基础设施HCI软件其核心存储系统基于 Longhorn云原生虚拟化存储后端高可用【亲测免费】 CubeFS基于云原生的分布式文件存储系统CubeFS基于云原生的分布式文件存储系统 CubeFS 是一个开源的云原生分布式文件存储系统由 CSDN 公司开发并托管在 Cloud Native Co存储分布式文件系统对象存储云原生上一篇Lenovo Legion Toolkit拯救者笔记本终极性能优化指南下一篇biliTickerBuy终极指南如何用智能抢票工具轻松搞定B站热门活动创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考