
云原生CLI【免费下载链接】openebsA popular widely deployed Open Source Container Native Storage platform for Stateful Persistent Applications on Kubernetes.项目地址https://gitcode.com/gh_mirrors/op/openebs点击查看免费下载OpenEBS 是一个面向 Kubernetes 的开源容器原生存储Container Native Storage平台为有状态应用提供持久化存储支持动态供给、在线扩容、瘦供给、快照与恢复等能力。本文以 OpenEBS 仓库根目录 README.md 为核心骨架结合 统一 Helm Chart、设计文档 与各引擎实现系统讲解其两种存储路线、五大存储引擎、部署配置与底层原理读完可掌握在 Kubernetes 上选型、安装与调优 OpenEBS 的完整方法。OpenEBS 是什么OpenEBS 是一个开源容器原生存储解决方案通过容器化的存储控制器为 Kubernetes 工作负载动态供给存储资源具备高度的灵活性与云原生特性。它支持多种存储引擎LocalPV本地 PV直接使用节点存储Replicated PV复制 PV提供高级数据复制与韧性。OpenEBS 与 Kubernetes 无缝集成提供存储策略、在线扩容resize、瘦供给thin-provisioning、快照snapshots与恢复restore等能力是有状态应用Stateful Applications的理想选择。关键设计理念详见 designs/README.md微服务架构与它所服务的应用一样OpenEBS 由微服务组成并借助 Kubernetes 自身来编排和管理这些组件纯用户态实现完全构建在用户空间可跨 OS/平台高度移植意图驱动继承 Kubernetes 的声明式原则使用简单。两大存储路线Local Storage 与 Replicated StorageOpenEBS 为 Kubernetes 工作负载提供两种主要存储方式本地存储Local Storage与复制存储Replicated Storage。下表是二者完整的对比概览特性本地存储Local Storage复制存储Replicated Storage数据可用性仅限卷所在节点可用不适用于高可用场景在多个节点间同步复制数据确保高可用性与持久性适用场景适用于自行管理复制与可用性的应用如 MongoDB、Cassandra 等分布式数据库适用于需要存储级复制和高可用的有状态工作负载如 Percona/单机数据库、GitLab性能接近磁盘原生性能开销极小面向高性能设计利用 NVMe-oF 语义实现低延迟访问局限不具备高可用性节点故障会导致数据不可用需要充足的资源CPU、内存、NVMe才能获得最佳性能快照与克隆由 LVM、ZFS 等高级文件系统支撑时支持支持提供企业级存储能力备份与恢复通过 Velero Restic 支持本地卷备份恢复通过 Velero 支持保障数据保护与恢复选型总结当应用能够自行管理复制与高可用时本地存储是好的选择当需要存储级复制、更高的数据持久性与基于网络的存储访问时应选择复制存储。五大存储引擎一览OpenEBS 伞形组织Umbrella下包含以下主要存储引擎子项目子项目Local PV HostpathLocal PV ZFSLocal PV LVMLocal PV Rawfile实验性Mayastor类型单节点Single-node单节点单节点单节点多节点Multi-node用途替代 Kubernetes 树内 CSI HostpathZFS 管理后端存储的存储引擎LVM2 管理后端存储的存储引擎实验性使用 extent 文件作为块存储通用复制企业级存储面向人群开发者或 DevOpsZFS 用户与生产部署LVM2 用户与生产部署开发者企业与生产部署特性Kubernetes Hostpath 的全部能力外加动态供给、零配置、无 CSI 驱动供给 ZFS datasets、供给 ZFS 卷、动态供给、ZFS 韧性、ZFS RAID 保护、CSI 驱动供给 LVM2 卷、动态供给、LVM2 RAID 保护、CSI 驱动将本地文件作为文件系统供给为持久卷、CSI 驱动复制存储 NVMe/RDMA、快照、克隆、高可用、CSI 驱动状态稳定可部署于生产环境稳定可部署于生产环境稳定可部署于生产环境Beta评估与集成中稳定可部署于生产环境引擎差异的底层视角从源码与设计文档可以进一步理解这些引擎的差异Local PV Hostpath是动态本地 hostpath 卷供给器其 StorageClass 的spec.provisioner设置为openebs.io/local通过metadata.annotations的cas.openebs.io/config键进行存储配置支持BasePathhostpath 目录路径与NodeAffinityLabel节点亲和标签等参数详见 Hostpath LocalPV 设计文档Local PV ZFS支持poolname/poolpattern参数其中poolpattern是一个正则表达式在CreateVolume时按模式动态选择 ZFS 池是对固定poolname的补充镜像了 lvm-localpv 中volgroup/vgpattern的设计详见 ZFS poolpattern 设计文档Local PV LVM支持在用户指定的 VolumeGroup 中供给瘦供给thin provision卷详见 LVM 瘦供给设计文档Replicated PV Mayastor提供跨节点的同步复制、NVMe/RDMA 高性能访问与快照克隆能力其数据面与控制面代码分别维护在独立仓库。为什么选择 OpenEBSOpenEBS 在 Kubernetes 环境中管理存储具备以下显著优势云原生架构作为云原生解决方案设计与 Kubernetes 无缝集成大部分存储引擎符合 CSI 规范覆盖广泛工作负载同时为需要复制与不需要复制的工作负载提供解决方案避免云锁定通过抽象存储管理OpenEBS 促进数据在本地或云端各种 Kubernetes 环境间迁移降低对单一云厂商的依赖成本效率凭借瘦供给等特性实现存储资源的动态分配通过避免过度供给并支持在线扩容来降低存储成本高可用与更小爆炸半径通过跨节点同步复制数据提升应用韧性节点故障时仅影响该节点上的数据最大限度降低对整体系统的影响。架构概览三大平面OpenEBS 的架构是容器原生的、水平可扩展的由可归入三个主要区域平面的微服务集合构成数据引擎数据平面Data Plane负责与底层存储设备主机文件系统、机械盘、SSD、NVMe 设备交互的容器。数据引擎为卷提供高可用、快照、克隆等能力并根据工作负载需求选择不同引擎如 CoW 类 cStor、Jiva 或 LocalPV。高可用通过将卷访问抽象到 target 容器实现——target 向多个 replica 容器同步复制数据replica 将数据写入底层存储设备节点故障时应用与 target 被重新调度到新节点target 连接其余可用 replica 继续服务 IO存储管理控制平面Control Plane负责 KubernetesVolume/CSI 接口与数据引擎创建的卷之间的对接提供卷信息 API供 Kubernetes Provisioner卷/快照/备份管理、Prometheus指标采集以及 CLI/UI存储状态洞察使用存储设备管理平面Storage Device Management Plane作为控制平面的一部分以 Kubernetes 原生方式管理节点上的存储设备机械盘、SSD、NVMe 等可视为设备清单管理工具通过设备声明类似 PV/PVC 概念追踪设备使用情况可通过 kubectl 与自定义资源完成设备列表、拓扑识别等操作。快速上手通过统一 Helm Chart 安装OpenEBS 可在 Kubernetes 1.23 集群上快速部署。其统一 Helm Chart是一个聚合型 Chart把各引擎 Chart 作为依赖dependencies打包在一起见 charts/Chart.yaml。Chart 依赖结构如下仓库Repository名称Name版本Versionopenebs-crds4.7.0-develophttps://grafana.github.io/helm-chartsalloy1.0.1https://grafana.github.io/helm-chartsloki6.29.0https://openebs.github.io/dynamic-localpv-provisionerlocalpv-provisioner4.7.0-develophttps://openebs.github.io/lvm-localpvlvm-localpv1.11.0-develophttps://openebs.github.io/mayastor-extensionsmayastor0.0.0https://openebs.github.io/rawfile-localpvrawfile-localpv0.15.1https://openebs.github.io/zfs-localpvzfs-localpv2.12.0-develop默认安装将包含以下引擎树形结构见 charts/README.mdopenebs ├── (默认) Local PV HostPath ├── (默认) Local PV LVM ├── (默认) Local PV ZFS ├── (默认) Local PV Rawfile └── (默认) Replicated PV Mayastor前提条件安装前请确认各引擎的系统前提以官方文档为准Hostpath 需要节点本地目录LVM 引擎需要节点安装 LVM2ZFS 引擎需要节点安装 ZFSMayastor 需要具备 NVMe 等高性能设备与充足 CPU/内存资源。添加 Helm 仓库并安装helm repo add openebs https://openebs.github.io/openebs helm repo update使用默认值安装将安装 LocalPV Hostpath、LocalPV LVM、LocalPV ZFS 与 Mayastor 组件到 openebs 命名空间helm install openebs --namespace openebs openebs/openebs --create-namespace若希望安装时排除 Replicated PV Mayastor例如纯本地存储场景helm install openebs --namespace openebs openebs/openebs --set engines.replicated.mayastor.enabledfalse --create-namespace卸载时先删除所有存储卷与存储池再执行helm delete RELEASE NAME -n RELEASE NAMESPACE仓库还提供了脚本化安装入口 scripts/helm/install.sh支持--upgrade、--wait、--timeout、--no-loki、--mayastor、--lvm、--zfs、--hostpath始终启用等选项便于 CI/CD 流水线调用。Chart 配置参数详解引擎级开关与日志组件配置集中在 charts/values.yaml关键参数如下配置键说明默认值engines.local.hostpath.enabled启用/禁用动态 LocalPV Provisionertrueengines.local.lvm.enabled启用/禁用 LocalPV LVM 存储引擎trueengines.local.zfs.enabled启用/禁用 LocalPV ZFS 存储引擎trueengines.local.rawfile.enabled启用/禁用 LocalPV Rawfile 存储引擎未稳定默认关闭falseengines.replicated.mayastor.enabled启用/禁用 Replicated PV Mayastor 存储引擎trueopenebs-crds.csi.volumeSnapshots.enabled启用/禁用 Volume Snapshot CRD 的安装truepreUpgradeHook.enabled启用/禁用 OpenEBS 升级前 HooktruepreUpgradeHook.image.registry/repo/tagHook 任务容器镜像配置docker.io/openebs/kubectl:1.25.15global.imageRegistry全局容器镜像仓库覆盖global.imagePullSecrets全局镜像拉取密钥与局部密钥合并而非覆盖[]global.imagePullPolicy全局镜像拉取策略覆盖loki.enabled启用/禁用 Loki 日志组件truealloy.enabled启用/禁用 Alloy 日志采集组件true关于升级前 Hookcharts/templates/pre-upgrade-hook.yaml 定义了仅在升级helm upgrade且检测到 v3 旧版本时运行的 Job它为 VolumeSnapshot 相关 CRD 打上helm.sh/resource-policykeep注解防止快照 CRD 在升级中被误删并删除旧的openebs-localpv-provisionerDeployment。这与 openebs-upgrade 的 Rust 实现共同构成 v3 → v4 的平滑升级路径。Loki 存储选项随 Chart 自带默认情况下 OpenEBS Chart 以高可用模式部署 Loki多副本 MinIO 分布式对象存储。Loki 存储有几种可选方案详见 charts/loki-storage.md单副本部署文件系统卷适合小规模/测试环境配置storage.type: filesystem、replication_factor: 1、minio.enabled: false高可用部署对象存储生产环境多副本必须使用对象存储这是默认模式MinIO 作为默认对象存储Loki 处于 HA 模式时推荐 MinIO 也运行在 HA 模式迁移提醒从文件系统卷迁移到对象存储并不容易如果未来计划扩容从一开始就应选用对象存储外部 S3 兼容存储可通过loki.loki.storage.type: s3并配置bucketNames.chunks、s3端点与凭证等字段接入 AWS S3、GCS 等任意 S3 兼容服务。Chart 会为 Loki 与 MinIO 自动创建基于 LocalPV Hostpath 的 StorageClassopenebs-loki-localpv、openebs-minio-localpv其provisioner: openebs.io/local、reclaimPolicy: Delete、volumeBindingMode: WaitForFirstConsumer模板见 charts/templates/loki-storage/storage/localpv-storageclass.yaml。深入引擎Hostpath 动态供给的工作流以 Local PV Hostpath 为例详见 设计文档动态供给器解决的问题是有状态应用需要 PersistentVolume但基础设施本地 hostpath 目录已存在却无法直接转化为 PV。传统做法需要管理员逐台登录节点建目录、手工编写 PV/PVC YAML不可扩展。OpenEBS 通过openebs.io/local供给器实现了全动态流程。典型的 Hostpath StorageClass 配置spec.provisioner: openebs.io/localvolumeBindingMode: WaitForFirstConsumerreclaimPolicy: DeleteapiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: openebs-hostpath annotations: openebs.io/cas-type: local cas.openebs.io/config: | - name: StorageType value: hostpath - name: BasePath value: /var/openebs/local/ provisioner: openebs.io/local volumeBindingMode: WaitForFirstConsumer reclaimPolicy: Delete供给流程Provisioning接收 PersistentVolumeClaim 的供给任务校验 StorageClass 与 PVC 上的配置项合并 StorageClass 与 PVC 的配置生成 PersistentVolume 名称创建 init Pod——在指定/默认 hostpath 目录下按 PV 名称创建目录init Pod 退出创建 PersistentVolume 对象——设置名称、目录路径、节点选择器标签键可选。释放流程Deprovisioning接收 PV 删除任务 → 创建 cleanup Pod 删除 hostpath 目录及其内容 → 删除 PV 对象。触发条件是 PV 带有pv.kubernetes.io/provisioned-by: openebs.io/local标签。完整的端到端操作序列为部署供给器helm install openebs openebs/openebs -n openebs→ 创建 StorageClass → 创建 PVC → 创建使用该 PVC 的应用 Pod删除时依次删除应用 Pod、删除 PVC供给器自动完成目录清理与 PV 回收。扩展生态kubectl 插件与运维工具Kubectl 插件plugin/README.md为使用统一 Chart 部署 OpenEBS 的用户提供统一管理界面覆盖 Mayastor、LocalPV-LVM、LocalPV-ZFS、LocalPV-Hostpath 全部引擎。二进制命名为kubectl-openebs因此命令为kubectl openebs通用命令结构为kubectl openebs engine operation resource默认输出表格格式支持-o json/-o yaml不再硬编码 mayastor 命名空间默认使用 kubeconfig 当前上下文命名空间升级工具openebs-upgrade/src/lib.rsRust 实现的 v3 → v4 升级组件配合 Chart 中的升级前 Hook 与 升级编排器 自动完成引擎 Chart 的替换与数据面升级设计与规划仓库 designs/ 收录了各引擎的 OEP 设计文档涵盖 ZFS 池模式、LVM 瘦供给、Mayastor 加密、池扩展、卷组快照等主题是深入理解引擎行为的最佳资料发布与贡献流程参见 RELEASE.md 与 contribute/process/release-management.md。总结OpenEBS 以本地存储 复制存储双路线覆盖 Kubernetes 有状态应用的全部持久化需求需要自管复制的分布式工作负载可选择近乎零开销的 LocalPVHostpath/LVM/ZFS/Rawfile需要存储级高可用与高性能的工作负载可选择 Replicated PV Mayastor。通过一个统一 Helm Chart 即可按需启用任意引擎组合结合 CSI 标准、快照/克隆、在线扩容与 Velero 备份恢复形成完整的云原生存储生命周期管理方案。OpenEBS 是 CNCF Sandbox 项目遵循 Apache 2.0 许可见 LICENSE可部署于任何 Kubernetes 1.23 集群——无论是云端、本地虚拟或裸金属还是开发环境。赞分享云原生CLI【免费下载链接】openebsA popular widely deployed Open Source Container Native Storage platform for Stateful Persistent Applications on Kubernetes.项目地址https://gitcode.com/gh_mirrors/op/openebs点击查看免费下载相关推荐OpenEBS Mayastor云原生存储终极指南构建高性能Kubernetes存储平台OpenEBS Mayastor云原生存储终极指南构建高性能Kubernetes存储平台 还在为Kubernetes集群的存储性能瓶颈而烦恼吗 Open存储云原生vibe-coding-prompt-template安全最佳实践保护你的AI生成代码vibe coding prompt template安全最佳实践保护你的AI生成代码 在使用vibe coding prompt template进行AI代Vibe Coding提示工程人工智能AI 技能开发工具Bitfocus Companion安装教程10分钟快速搭建专业控制系统Bitfocus Companion安装教程10分钟快速搭建专业控制系统 Bitfocus Companion是一款强大的开源工具能够将Elgato Str上一篇推荐一款强大的Python APNS库 - PyAPNs下一篇CANN/Ascend C全局缓冲区设置创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考