☰
Longhorn v1.7.2 版本解析:加密卷内核模块校验、数据引擎可配置化与稳定性修复清单
2026/9/27 21:17:33 网站建设 项目流程
  • 云原生
  • 存储
  • 高可用
  • 容器编排

【免费下载链接】longhorn

Cloud-Native distributed storage built on and for Kubernetes

项目地址:https://gitcode.com/gh_mirrors/lo/longhorn
点击查看免费下载

Longhorn v1.7.2 是 1.7.x 系列的第二个补丁版本,聚焦于系统质量、韧性、稳定性与安全性提升,同时沿袭了 1.7.0 引入的 Longhorn CLI(longhornctl)迁移路线,正式废弃了与环境检查相关的旧脚本。本文基于该版本发布说明,结合仓库内 Helm Chart 配置、StorageClass 模板、PV 加密增强设计文档等源码级证据,逐项拆解本次发布的前置条件、升级约束、废弃项、改进项与关键 Bug 修复,帮助你评估是否升级以及升级后的行为变化。

版本定位与集群前置要求

Longhorn v1.7.2 没有引入新的架构级特性,而是以"改进 + 缺陷修复 + 安全补丁"为主,覆盖控制面(Longhorn Manager)、数据面(Engine/Instance Manager)、CSI 组件、UI 与备份存储等多个模块。

安装与升级都有一条硬性前提:

集群必须运行 Kubernetes v1.21 或更高版本,否则不能安装或升级到 v1.7.2。

升级路径同样受版本约束:Longhorn 只允许从受支持的版本升级,v1.7.2 支持从 Longhorn v1.6.x 或 v1.7.x(低于 v1.7.0)升级,具体升级路径与操作流程以官方 Upgrade 文档为准。

安装方式概览

v1.7.2 支持主流的三种安装方式:

  • Rancher:通过 Rancher 应用市场安装;
  • Kubectl:直接应用 deploy/longhorn.yaml 清单;
  • Helm:使用 chart/ 目录下的 Helm Chart,官方同时维护了 chart/README.md 参数文档与 chart/values.yaml 默认值。

无论哪种方式,安装前都应确认集群满足 Kubernetes v1.21+ 的最低版本要求,并提前做好依赖(如open-iscsi、NFS 客户端、cryptsetup等)的部署准备。

升级路径与约束

升级到 v1.7.2 前需注意:

  • 目标集群 Kubernetes 版本必须 ≥ v1.21;
  • 只能从受支持版本升级(v1.6.x 或 v1.7.x < v1.7.0);
  • 升级前建议先查阅官方 Upgrade 指南中的升级路径与注意事项,尤其是本版本的废弃项与不兼容变更(见下文)。

升级过程中若涉及加密卷、strict-local 数据本地性卷或 RWX 卷,可重点对照本版本对应的 Bug 修复项(见"关键 Bug 修复解读"小节),这些修复都随 v1.7.2 一并生效。

Deprecation 与不兼容变更:环境检查脚本让位于 longhornctl

v1.7.2 沿用了 v1.7.0 起的废弃路线:

环境检查脚本(environment check script)的功能与 Longhorn CLI 重叠,该脚本在 v1.7.0 已被标记废弃,计划在 v1.8.0 中移除。

也就是说,使用 v1.7.2 时,环境检查能力应迁移到longhornctl(Longhorn 命令行工具)。从增强设计文档 enhancements/20240423-longhorn-commandline-interface.md 可以看到longhornctl的命令体系设计:

  • 远程命令(在控制面执行):如longhornctl install preflight、longhornctl check preflight,会创建longhorn-preflight-installer/longhorn-preflight-checkerDaemonSet 在各节点上执行预检;
  • 本地命令(在节点内执行):如longhornctl-local install preflight,作为 init-container 运行。

本版本中有一条与之直接相关的修复:

  • longhornctl install preflight --operating-system=cos在 COS_CONTAINERD 环境下执行失败——修复了 Google COS(Container-Optimized OS)容器运行时场景下预检命令的兼容性问题。

计划升级到 v1.8.0 及以后版本的用户,应尽早将环境检查流程从脚本迁移到longhornctl,避免后续版本移除脚本后检查能力缺失。

本版本改进项解读

1. Helm 安装时可为默认 StorageClass 指定数据引擎版本

v1.7.2 允许在 Helm 安装阶段直接为默认 Longhorn StorageClass 指定数据引擎版本(v1 或 v2)。对应 Helm Chart 的persistence配置中新增了dataEngine参数,默认值为v1:

# chart/values.yaml persistence: # -- Setting that allows you to specify the data engine version for the default Longhorn StorageClass. (Options: "v1", "v2") dataEngine: v1

该值会写入默认 StorageClass 的参数中。查看 chart/templates/storageclass.yaml 的模板实现:

{{- if .Values.persistence.disableRevisionCounter }} disableRevisionCounter: "{{ .Values.persistence.disableRevisionCounter }}" dataEngine: "{{ .Values.persistence.dataEngine }}" {{- end }}

注意模板中的嵌套条件:dataEngine参数只有在persistence.disableRevisionCounter开启时才会被渲染进 StorageClass 参数。实际部署时可结合自身是否使用 v2 数据引擎(SPDK 方案)决定取值,例如需要 SPDK v2 引擎的集群可设置为v2。

该默认 StorageClass 模板还完整包含numberOfReplicas、staleReplicaTimeout、dataLocality、allowVolumeExpansion: true、reclaimPolicy、volumeBindingMode、fsType、mkfsParams、backingImage、recurringJobSelector、diskSelector、nodeSelector等常用参数,均可通过 chart/values.yaml 的persistence字段在安装时定制。

2. 移除 OpenShift 镜像镜像(mirrored openshift image)

v1.7.2 移除了 Longhorn 仓库中镜像的 OpenShift OAuth Proxy 镜像(此前为适配 OpenShift 环境,Longhorn 将quay.io/openshift/origin-oauth-proxy镜像同步镜像到自己仓库)。

移除后,UI 的 OpenShift 部署将直接使用上游镜像。仓库中的对应配置仍保留在上游镜像指定方式:chart/templates/deployment-ui.yaml 中通过image.openshift.oauthProxy.registry / repository / tag渲染 OAuth Proxy 容器镜像,且registry允许显式指定为quay.io/openshift/origin-oauth-proxy(默认回退到docker.io)。相关参数说明见 chart/README.md:

  • image.openshift.oauthProxy.registry:OAuth Proxy 镜像的 Registry,OpenShift 用户可指定上游镜像地址;
  • image.openshift.oauthProxy.repository:OAuth Proxy 镜像仓库;
  • image.openshift.oauthProxy.tag:OCP/OKD 版本 4.1 及以上(含 4.18)。

这一改动对普通 Kubernetes 用户无感知,仅影响 OpenShift 部署场景下的镜像来源。

3. 修复节点状态事件矛盾

v1.7.2 修复了节点状态事件相互矛盾(contradicting node status events)的问题,避免用户在事件与节点状态间看到冲突信息。这属于控制面事件一致性的完善,能减少节点异常排查时的误判。

4. 主机dm_crypt内核模块检查

v1.7.2 增加了对宿主机dm_crypt内核模块的检查能力。这一改进的背景来自 PV 加密方案:Longhorn 加密卷依赖宿主机内核的 device-mapper crypto target 与用户态cryptsetup。增强设计文档 enhancements/20221024-pv-encryption.md 明确写明:

Host requiresdm_cryptkernel module as well ascryptsetupinstalled.

加密卷的加密设备配置通过宿主机的cryptsetup完成,加密能力则利用宿主dm_crypt内核模块(该文档第 148-149 行分别列出 "utilize hostdm_cryptkernel module for device encryption" 与 "utilize host installedcryptsetupfor configuration of the crypto device")。因此,在安装或使用加密卷功能前检查dm_crypt模块是否存在,可以把"加密卷在运行期才失败"提前暴露到环境检查阶段。

关键 Bug 修复解读

v1.7.2 共修复 15 项缺陷(含 BACKPORT 与普通 Bug),下面按主题域分组解读。

系统还原与部署流程

  • System Restore 卡在 Pending,原因是 Tolerations 未应用:Longhorn 系统还原(System Restore)流程创建的 Pod 未继承相应的容忍配置,导致在存在污点的节点上无法被调度而长期 Pending。修复后系统还原资源(其 CRD 定义见 chart/templates/crds.yaml 附近的SystemRestore)可以正确携带 Tolerations 完成调度与还原。
  • Instance manager 在 manager 崩溃后缺少必需的 selector labels:Manager 进程异常重启后,实例管理器(instance-manager)对象的标签缺失,可能导致选择器无法匹配、副本与引擎无法正确归属,修复后保证崩溃恢复场景下标签一致性。

加密卷

  • k3s-agent 重启一段时间后,Longhorn 未能正确关闭与重新打开加密卷:修复了加密卷在 agent 服务重启场景下的设备关闭/重开流程,避免卷状态异常。这与上文dm_crypt检查同属加密卷链路,涉及宿主机 device-mapper 设备的生命周期管理。
  • Longhorn 持续重置用户的 storageClass:修复了控制器反复把用户自定义的 StorageClass 改回默认值的问题,避免用户对 StorageClass 的个性化配置被覆盖。

备份存储

  • NFS 服务断开再重连后,备份目标中的所有备份丢失:修复了 NFS backupstore 断连重连场景下备份元数据(Backup Volume 的备份列表)异常清空的问题,保障备份目标在瞬断恢复后的数据可见性。
  • 单副本卷在节点重启后备份卡在 17% 进度:修复了单副本卷备份进度停滞的偶发问题,避免节点重启后备份长时间悬挂。

调度与数据本地性

  • Engine 升级到 1.7.1 在 strict-local 数据本地性卷上失败:修复了 strict-local(严格本地)数据本地性卷的引擎升级阻塞问题。这类卷要求副本与引擎严格同节点,升级流程中需特殊处理调度约束。
  • Longhorn 误判节点不可调度(unschedulable):修复了节点可调度状态误判,避免副本被错误迁移或卷无法调度到可用节点。
  • 节点排空(drain)时,已删除节点上的已停止副本被计入健康副本:修复排空节点场景下副本健康计数逻辑,保证排空判定准确。

RWX 卷

  • 移除 RWX 工作负载不必要的重启:v1.7.2 移除了 RWX(ReadWriteMany,基于 NFS share manager)卷在相关操作中多余的工作负载重启动作,减少对业务 Pod 的扰动。
  • 创建时即进入故障态的 RWX 卷:修复了 RWX 卷在创建阶段即被标记为 faulted 的异常,保证创建流程正常。
  • 修复test_rwx_delete_share_manager_pod测试用例:配合上述 RWX 行为调整,同步修正了删除 share manager Pod 的集成测试用例。

CSI 与存储类

  • 创建超规格(oversize)卷后 PV 注解未更新:修复了卷大小超过规格时 PV 注解不同步的问题,保证 PV 注解与卷实际状态一致。
  • Disks 弹窗布局损坏:修复了 UI 中 Disks 模态框的布局问题(v1.7.x 分支 BACKPORT),提升磁盘管理界面的可用性。

测试相关

  • 单副本节点宕机测试用例失败(含两个用例):修复了 "Single Replica Node Down" 系列 robot 测试用例,其中一个用例涉及 RWO 卷在副本节点上、删除策略为 do-nothing 时,未能等待卷卡在 attaching 状态的问题——这属于测试脚本对卷状态机等待逻辑的修正。

安全修复(Misc)

v1.7.2 包含两项安全相关任务:

  • 修复 support bundle 中的 CVE 问题:升级 support bundle 组件依赖,消除已知漏洞;
  • 更新 CSI 组件以修复 CVE 问题:对 CSI 相关 sidecar/组件进行版本更新,修复已知安全漏洞。

对于生产环境,这两项属于建议尽快升级的理由。

小结与升级建议

综合来看,Longhorn v1.7.2 是一个偏稳健性的补丁版本:

  • 安全角度:包含 support bundle 与 CSI 组件的 CVE 修复,建议安全敏感环境尽快升级;
  • 稳定性角度:修复了加密卷生命周期、NFS 备份丢失、strict-local 升级失败、RWX 卷故障态、节点可调度误判等多类影响面较广的问题;
  • 运维角度:新增dataEngine安装期配置能力,并将环境检查正式迁移到longhornctl,为 v1.8.0 移除旧脚本做好准备。

升级前请确认集群 Kubernetes ≥ v1.21,并核实当前版本处于受支持的升级路径(v1.6.x 或 v1.7.x < v1.7.0)内;涉及加密卷、strict-local、RWX 卷的集群,建议先在测试环境验证本版本对应修复的实际表现。相关配置细节可进一步查阅 chart/values.yaml、chart/templates/storageclass.yaml 以及 enhancements/20240423-longhorn-commandline-interface.md 等仓库文档。

  • 云原生
  • 存储
  • 高可用
  • 容器编排

【免费下载链接】longhorn

Cloud-Native distributed storage built on and for Kubernetes

项目地址:https://gitcode.com/gh_mirrors/lo/longhorn
点击查看免费下载

相关推荐

上一篇:突破单节点瓶颈:Grasscutter多服务器监控系统终极指南
下一篇:如何快速掌握TensorRT_Pro高级特性:动态批处理、多GPU并行与内存优化完整指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询