KubeCon China 2025 速递:成本 vs 性能,如何为 K8s 工作流选型最佳存储方案?

简介: 本文基于KubeCon China 2025的精彩议题分享,探讨在成本约束下为K8s工作流选择最佳存储方案。

【阅读原文】戳:KubeCon China 2025 速递:成本 vs 性能,如何为 K8s 工作流选型最佳存储方案?

引言:工作流中的数据

 

在 Kubernetes 环境下,工作流场景对数据访问性能的敏感度远超传统应用。从实时特征提取到大规模批处理,存储系统的性能直接决定了工作流的执行效率与稳定性。

 

以大规模 Argo Workflows 场景为例,弹性扩缩容与动态调度特性对存储系统的弹性扩展能力、并发性能提出了更高要求。如何在成本约束下构建兼顾低延迟、高吞吐与强一致性的存储方案,已成为 K8s 工作流优化的重要命题。

 

在阿里云使用分布式工作流 Argo 集群,请参考使用文档分布式工作流 Argo 集群 [1]

 

image.png

 

本文以自动驾驶场景抽象出的流水线为例,介绍该流水线中不同数据的特性与存储选型。

 

流水线分为数据清洗、算法处理和结果分析三个步骤,每个步骤均由若干并发 Pod 组成。数据清洗阶段从地图与实时路况数据集中提取相关数据,将其作为算法处理步骤的输入,并基于其输出生成最终分析结果。

 

因集群内 Pod 间无法直接传递数据,整个数据流转过程需依赖共享存储实现持久化。例如清洗数据先上传至对象存储,再由算法处理步骤读取。

 

 

Artifacts vs Volumes

 

Argo Workflow 中存储读写主要通过两种方式实现:

 

  • Artifact 机制。本质是对 MinIO 或云厂商对象存储 SDK 的封装。操作相对简便,仅需在 Pipeline 定义 YAML 文件中声明步骤的 Input/Output 路径即可完成数据下载与上传。该方案适用于并发量与数据量可控、无需考虑共享复用的场景,具体实现细节可参考 Argo 官方文档。
  • Kubernetes 原生 Volume(存储卷)机制。通过将存储介质挂载至 Pod 以实现数据交互。针对工作流场景中 Pod 生命周期短、高并发等特性,通常采用共享存储方案。

 

底层存储架构的差异性直接影响存储卷的读写性能表现,基于存储卷机制的设计与优化方案为本文接下来的探讨方向。

 

 

存算一体 vs 存算分离

 

image.png

 

在 Argo 工作流场景中,存储架构选型需结合数据特性与读写模式进行针对性设计。

 

首先考虑整体架构。笼统来说,根据存储介质与计算资源的物理关系,可以划分为:

 

  • 存算一体:在容器化环境中,"一体"不再局限于单一物理节点,而是指业务 Pod 可以通过容器网络访问集群内共享的本地存储资源(如节点池化系统盘)。
  • 存算分离:以对象存储(如 OSS)为代表的云存储。数据与计算解耦,便于弹性扩展。

 

选择存储架构时的核心考虑因素:

 

  • 可扩展性和灵活性:
    本地存储:容量受限于节点数量与机型配置,需提前规划存储资源分配。云存储:容量弹性、按需付费,适合数据量波动大或峰值明显的业务(如日志分析、临时文件存储)。
  • 性能与延迟:
    本地存储:相对低延迟、高吞吐,但受限于单节点 IO 瓶颈(如 HDD/SSD 性能差异)。
    云存储:可通过缓存或预加载优化性能。AI 时代各云厂商也提供了高性能的云存储解决方案,如 CPFS。
  • 成本与运维开销:
    本地存储:可复用节点空闲资源,但需承担系统运维(安全加固、容灾副本、生命周期管理)成本。
    云存储:隐性成本包括数据传输费、冷热分层策略设计,需结合业务 SLA 综合评估。

对于 Argo 工作流场景,还需要额外关注存储系统最大并发读写能力,避免因  IO 上限导致任务阻塞。一般云存储都会声明读写 IO 上限;而本地存储系统,需要投入生产前压测验证。

 

此外,对于一些临时的中间数据,需设计按需隔离机制(如命名空间隔离),并结合生命周期策略(TTL)或自动化清理脚本降低存储冗余

 

本文将进一步探讨在主流的存算分离架构下,不同存储介质在工作流中的选型实践。(KubeCon 分享中也简单讨论了存算一体架构下的重要组成部分——分布式文件系统,可以点击文末阅读原文查看。

 

 

文件存储 vs 对象存储

 

image.png

 

云存储可分为块存储、文件存储(下称 NAS)和对象存储(下称 OSS)三类。表格已汇总三类云存储的基本特性与对比,各云厂商均提供更细分的子产品与规格型号。

 

在阿里云 ACK 场景中,您可参考概述文档存储概述 [2] 了解容器存储类型与能力。

 

需要注意的是,表格中的性能对比并非绝对:某些块存储产品也支持并发访问;低性能云硬盘的延迟可能高于阿里云 CPFS 等高性能 NAS 类产品。总体而言,基于数据容量和共享需求,在Argo Workflows 等强 Job 型工作流场景中,NAS 与 OSS 的使用率更高。

 

  • NAS:支持完整 POSIX 语义,无需对象到文件系统的转换开销,在海量小文件处理、元数据密集型场景中具备显著优势,尤其适用于高性能计算(HPC)等强 IO 需求场景。其在容器场景使用门槛较低,通过 NFS 内核挂载即可直接访问数据。

 

若需在 ACK 中部署 NAS 存储,可参考 NAS 存储卷概述[3]CPFS 存储卷概述 [4]。其中,后者(CPFS)则适用于对吞吐量有极致要求的高性能计算场景。

 

  • OSS:虽常被开发运维人员视为“成本优势显著但性能相对受限”的方案,但其无限容量、低费用及 HTTP 协议的开放性,使其在大数据、AI 训练等场景中不可或缺。例如自动驾驶实况数据通常依赖边缘设备通过 HTTP 接口上传至对象存储。此类特性决定了其仍是大数据业务的核心选择。

 

若需在 ACK 中部署 OSS 存储,可参考 OSS 存储卷概述 [5]

 

针对低成本的 OSS 方案,本文后续将聚焦两个关键问题:

 

  • 适用边界分析:哪些业务场景应谨慎使用 OSS?
  • 性能优化路径:如何通过技术手段提升 OSS 在容器化环境中的读写效率?

 

 

OSS:从性能瓶颈到优化方案

 

性能瓶颈根因

 

image.png

 

对象存储的性能问题,本质上源于其架构与访问方式的固有特性。

 

首先,对象存储的平铺结构与 POSIX 文件系统的树形结构存在天然冲突。当我们需要通过 POSIX 协议访问对象存储时,必须依赖 FUSE 客户端作为双向转译器,将系统调用转换为 HTTP 请求,并处理响应数据

 

这一过程在 Kubernetes 中具体表现如上图所示,大致可以抽象为:Pod 创建时触发挂载流程,CSI 驱动运行 FUSE 客户端,在 Kubelet 的挂载路径下生成挂载点,并同步到 Pod 的 Mount Namespace。挂载成功后,业务才能通过 FUSE 客户端与对象存储服务端交互。

 

如果对 K8s 场景 OSS 数据挂载的原理和优化感兴趣,可关注KubeCon 2025 EU DoK 议题《Pains and Gains: Lessons from Orchestrating Volumes for Remote Storage in Cloud-Native AI Scenarios》

 

议题视频链接:

https://www.youtube.com/watch?v=T_Lx2ZFhfJQ

 

然而,FUSE 协议本身会引入链路开销。更关键的是,对象存储的特性进一步加剧了性能瓶颈,比如:

 

  • 对象仅支持覆盖上传,FUSE 客户端支持随机写操作需落盘并加锁,性能受限于磁盘 IO。
  • 对象的元信息有限(如缺少文件权限、所有者等属性)。当业务进行业务的目录遍历、属性查询等操作时,FUSE 客户端需通过大量 HTTP 请求补充或遍历对象的扩展信息。虽然部分客户端支持元信息缓存优化,但实时同步场景(如自动驾驶的实时路况数据)无法依赖缓存,导致性能进一步下降。

 

因此,对于需要强一致性、高并发、随机写入或依赖文件元信息的的场景,建议优先考虑 NAS 方案。

 

 

常见性能优化方案

 

image.png

 

在 Kubernetes 工作流场景中,对象存储的性能瓶颈常通过以下方式缓解。加速效果受业务特性(如数据规模、读写模式、一致性要求)影响较大,图中列出了不同方案的优劣势对比。

 

  • 修改服务端存储布局:通过挂载点(存储卷)或 SDK 将数据以特定格式存储于 OSS 云端。可以在保证高 POSIX 兼容的情况下提升性能。缺点是数据仅能通过特定工具读写,通用性差,难以与其他系统兼容。
  • 使用轻量客户端:“轻量”指舍弃元信息处理、随机写等复杂操作,专注于顺序写与只读场景的性能优化,专注于只读顺序写能力的提升。侵入性较低,无需修改数据格式,适合 AI 训推等以顺序读为主的 Pipeline。缺点是需要业务严格满足 POSIX 兼容矩阵。

 

ACK 集群 CSI 存储插件默认提供基于 ossfs 2.0 轻量客户端的存储卷类型,使用方式、性能压测等具体数据可参考文档 ossfs  2.0 存储卷概述 [6]

 

  • 集群侧分布式缓存:将集群节点的内存/磁盘资源池化,缓存热点数据或临时中间结果,以空间换时间。在大并发场景中,缓存可避免直接访问对象存储,规避 API 调用上限(如 OSS 在小地域可能有 5-20 Gbps 限流)。因此,在工作流场景中,判断是否启用缓存的关键指标之一是是否已触达 OSS 的服务端限流。缺点是需要引入缓存组件,性能收益依赖缓存命中率。
  • 服务端加速(托管侧缓存):由云厂商提供全局加速服务(如 OSS 加速器),用户无需部署额外组件,但成本可能随加速流量上升,需结合业务 SLA 与预算评估。

 

 

扩展:突破 FUSE 性能瓶颈的新尝试

 

image.png

 

针对容器环境访问 OSS 的性能问题,我们正在探索一种基于虚拟块存储的优化方案。该方案的核心思路是:

 

  • 初次挂载时构建元信息索引:通过预解析对象存储的元数据,在本地生成结构化的索引表,减少后续访问时的 HTTP 请求次数。
  • 内核层优化:利用 UBLK(用户态块设备驱动架构) 和内核态文件系统(如 erofs)直接响应系统调用,绕过传统 FUSE 的用户态-内核态切换开销。

 

这一方案的优势在于:

 

  • 显著降低FUSE开销:通过内核层直接处理系统调用,减少上下文切换和协议转换的延迟。
  • 适用于海量小文件场景:对海量只读小文件(如AI训练数据集)和频繁读取少量数据的场景(如日志分析)优化效果尤为明显。
  • 稳定性提升:相比FUSE客户端,内核态实现更稳定,不易因高并发或异常请求导致挂载失败。

 

在 ACK 集群可以通过 strmvol 存储卷体验该方案,方案简介与使用方式、性能压测等具体数据可参考文档 strmvol 存储卷概述 [7]

 

如果对该方案的具体原理与实现感兴趣,可关注KubeCon 2025 EU 议题《Streamlined Efficiency: Unshackling Kubernetes Image Volumes for Rapid AI Model and Dataset Loading》,该议题分享了使用该原理实现镜像下载加速。

 

议题视频链接:

https://www.youtube.com/watch?v=nHGzMmstR0E&t=13s

 

 

总结

 

Artifacts vs Volumes?

 

并发量、数据量可控,数据不需要实时共享的场景使用 Artifacts 更简单。否则应考虑 Volumes 及其选型与调优。

 

存算一体 vs 存算分离?

 

存算一体适合非数据型企业通过 MinIO/Ceph 等开源方案实现低成本基础读写,或大型 AI 公司通过 3FS 等开源方案利用 RDMA 等硬件及 GPU 闲置存储资源(需具备二次开发能力)。其余企业仍以存算分离为主。

 

在 ACK 集群使用 eRDMA 与弹性临时盘 EED 部署 3FS 存储集群,可参考文档基于 ACK 集群部署 3FS [8]

 

NAS vs OSS?

 

NAS/CPFS 有性能优势,适合 HPC 场景,对于需要强一致性、高并发、随机写入或依赖文件元信息的的场景,建议优先考虑 NAS 方案。若考虑成本、容量与 http 访问简易性,选择 OSS 时可针对数据特性与访问模型进行调优。

 

OSS 优化方案

 

通用的 OSS 访问性能优化方案包括修改服务端存储布局、使用轻量客户端、集群侧分布式缓存及服务端加速等。

 

image.png

 

在自动驾驶流水线中,静态地图数据适合用带缓存的客户端存储卷(如 JindoFuse),实时路况数据则可用轻量客户端(如 ossfs 2.0)。中间及最终数据上传下载可结合 Argo 原生 Artifacts 或轻量客户端存储卷,按并发量选择。

 

对于 OSS 的性能优化,实践经验是:单一存储卷难以满足全流程性能需求。建议按数据的特性和业务的访问模型拆分多个存储卷(如隔离随机写与只读场景)。因此在优化 OSS 存储访问时,还需要权衡运维难度与性能限制。以本流水线为例,若维护成本高,可优先全用轻量客户端;若使用 Fluid 等缓存平台,可选择同时支持无缓存模式的客户端。

 

相关链接:

 

[1] 分布式工作流 Argo 集群

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/kubernetes-clusters-for-distributed-argo-workflows/

 

[2] 存储概述

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/csi-overview-1/

 

[3] NAS 存储卷概述

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/nas-volume-overview-1/

 

[4] CPFS 存储卷概述

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/cpfs-volume-overview/

 

[5] OSS 存储卷概述

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/oss-volume-overview-1/

 

[6] ossfs  2.0 存储卷概述

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/ossfs-2-0/

 

[7] strmvol 存储卷概述

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/strmvol/

 

[8] 基于 ACK 集群部署 3FS

https://help.aliyun.com/zh/ecs/use-cases/deploy-3fs-on-an-ecs-instance-based-on-an-ack-cluster

 

扩展阅读:

 

1.《大数据量场景下的 Kubernetes 任务编排如何攻克存储难关?》

 

2.《AI 场景深度优化!K8s 集群 OSSFS 2.0 存储卷全面升级,高效访问 OSS 数据》

 

3.《StrmVol存储卷:如何解锁K8s对象存储海量小文件访问性能新高度?》


 


我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。

欢迎关注 “阿里云基础设施”同名微信微博知乎

获取关于我们的更多信息~

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
29天前
|
SQL 人工智能 Java
阿里云百炼开源面向 Java 开发者的 NL2SQL 智能体框架
Spring-ai-alibaba-nl2sql 是析言 GBI 产品在数据问答领域的一次重要开源尝试,专注于 NL2SQL 场景下的核心能力开放。
439 48
|
13天前
|
边缘计算 Kubernetes Cloud Native
OpenYurt 成为 CNCF 孵化项⽬:加速扩展云原⽣的边界
经 CNCF 技术监督委员会投票一致同意,OpenYurt 正式成为 CNCF 孵化项目
|
9天前
|
人工智能 弹性计算 运维
通勤路上修故障?钉钉机器人+ OOS AI 助手实现 7×24 小时运维自由
通过钉钉机器人配置阿里云 OOS AI 助手,您可以直接在钉钉群内发送文字指令,实现免登录、跨设备、秒级响应的阿里云运维操作。
|
3天前
|
存储 运维 容灾
ESSD 同城冗余云盘商业化,定义企业级存储同城容灾新范式
阿里云宣布企业级块存储 ESSD 同城冗余云盘正式商业化,该云盘是国内云厂商中首个实现同城冗余架构的云盘产品。
|
15天前
|
人工智能 自然语言处理 搜索推荐
AI 搜索 MCP 最佳实践
本文介绍了如何通过 MCP 协议,快速调用阿里云 OpenSearch 、ElasticSearch 等工具,帮助企业快速集成工具链、降低开发复杂度、提升业务效率。
134 29
AI 搜索 MCP 最佳实践
|
10天前
|
自然语言处理 前端开发 安全
ES6 箭头函数:告别 `this` 的困扰
ES6 箭头函数:告别 `this` 的困扰
|
7天前
|
人工智能 运维 自然语言处理
如何在 Elasticsearch 中构建你的智能 AI 助手?
本文将带你探索一种全新的思路:如何基于 Elasticsearch 快速构建一个具备自然语言理解能力、异常检测和安全威胁识别能力的智能运维 AI 助手 。文章会围绕实际部署流程、关键技术点和典型应用场景展开,帮助你把 Elasticsearch 从“日志仓库”升级为“智能决策中枢”。
136 30
|
10天前
|
自然语言处理 JavaScript 前端开发
ES6 箭头函数:简洁与陷阱
ES6 箭头函数:简洁与陷阱
|
17天前
|
Web App开发 监控 前端开发
丝般顺滑:Web动画性能优化小技巧
丝般顺滑:Web动画性能优化小技巧
142 85