【阅读原文】戳:ACK One Argo 工作流集群:玩转容器对象存储
名字解释
Argo Workflows:云原生工作流引擎,专为在Kubernetes集群上协调多个任务或步骤的执行而设计。
Artifacts:指在工作流执行过程中产生的、具有持久性的数据对象,通常代表了某个步骤或任务的输出结果。
OSS:阿里云对象存储服务,通常作为存储Artifacts的介质。
背景
[1] Argo Workflows是开源的云原生工作流引擎,CNCF 的毕业项目。Argo Workflows 可以轻松自动化和管理 Kubernetes 上的复杂工作流程。适用于各种场景,包括定时任务、机器学习、ETL和数据分析、模型训练、数据流pipeline、CI/CD等。
在使用Argo Workflows编排任务时,特别是在涉及大数据量的场景如模型训练、数据处理、生物信息学分析等,对Artifacts(通常在阿里云环境中存储于对象存储服务OSS)的高效管理至关重要。然而,采用开源方案的用户可能会遭遇若干挑战,具体包括:
超大文件无法上传:对于超过5Gi的文件,由于客户端上传限制导致上传失败。
缺乏文件清理机制:随着工作流执行的推进,中间产生的临时文件或已完成任务的输出结果若未能得到及时清理,导致OSS存储空间的无谓消耗。
Argo Server磁盘占用过高:在使用Argo Server下载文件时,需要先落盘再传输,高磁盘占用不仅影响服务器性能,还可能导致服务中断或数据丢失。
[2] ACK One Serverless Argo工作流作为一款完全遵循社区规范的全托管式Argo Workflows服务,致力于应对并解决大规模、高安全性的文件管理工作挑战。本文将详细介绍该服务在此方面所做出的一系列重要增强功能,包括超大文件分片上传、Artifacts自动垃圾回收(GC)以及Artifacts流式传输等。这些特性旨在助力用户在阿里云环境下对OSS文件实现高效、安全的精细化管理。
1、支持超大文件分片上传
出于数据持久化、共享、缓解Pod临时存储压力及容灾备份等目的,在使用Argo Workflows编排任务时,需要通过Artifacts将中间产出、运行结果及过程日志等数据上传至对象存储服务中。在模型训练、数据处理、生物学信息分析、音视频处理等场景中,常常需要上传海量大文件。
开源方案不支持超大文件的上传,给用户带来了显著的操作不便与使用体验不佳的问题,ACK One Serverless Argo工作流优化了超大文件上传至OSS(阿里云对象存储服务)逻辑,支持分片、断点续传,这对于提高大文件处理的效率和可靠性至关重要,尤其是在数据密集型任务和分布式计算环境中。这不仅优化了资源使用,还提高了处理大数据集的能力。每个分片支持独立的完整性校验,提高了数据完整性的保证,同时也增强了系统的容错性和数据的安全性。
使用示例:
该功能在Serverless Argo中默认开通,在配置好[3] Artifacts后,提交示例工作流,即可在OSS上获得一个大小为20Gi的文件testfile.txt,说明超大文件完成了上传。
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: artifact- spec: entrypoint: main templates: - name: main metadata: annotations: k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi" # 自定义设置要增加的临时存储空间大小 k8s.aliyun.com/eci-use-specs : "ecs.g7.xlarge" container: image: alpine:latest command: - sh - -c args: - | mkdir -p /out dd if=/dev/random of=/out/testfile.txt bs=20M count=1024 # 生成20Gi的文件 echo "created files!" outputs: # 触发文件上传到OSS artifacts: - name: out path: /out/testfile.txt
2、支持OSS Artifacts GC
Argo Workflows 的 Artifact 垃圾回收(Garbage Collection, GC)机制主要用于在工作流结束后删除不再需要的工作流产生的文件(如中间结果、日志等),可以帮助节省存储空间及存储成本,防止存储资源的无限制消耗。
在开源场景下,无法进行OSS上文件的自动回收,徒增了用户的使用和运维成本。ACK One Serverless Argo工作流优化了OSS上的文件清理方法,通过简单的回收逻辑配置,可以实现:
在工作流完成、或管理员手动在集群中清理工作流相关资源一定时间后,自动回收上传至OSS的文件;
只为成功的工作流任务配置回收,避免清理失败日志、方便追踪;或只为失败的工作流任务配置回收,回收无效的中间产出。
利用OSS提供的生命周期管理策略,可以设置规则根据时间、前缀等参数,自动删除旧的 Artifacts;或将早期的Artifacts归档至冷存储,在保证数据完整的前提下有效降低成本。
使用示例:
配置artifactGC策略即可使用该功能。如下示例所示,该工作流整体的artifactGC策略为删除后回收,其中on-completion文件的回收策略为完成时回收。提交该工作流后,可以在OSS上观察到,在workflow完成时on-completion.txt被回收,删除工作流后on-deletion.txt文件被回收。
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: artifact-gc- spec: entrypoint: main artifactGC: strategy: OnWorkflowDeletion # 全局回收策略,在workflow被删除时回收artifact,可被覆盖 templates: - name: main container: image: argoproj/argosay:v2 command: - sh - -c args: - | echo "hello world" > /tmp/on-completion.txt echo "hello world" > /tmp/on-deletion.txt outputs: # 上传文件到OSS artifacts: - name: on-completion path: /tmp/on-completion.txt artifactGC: strategy: OnWorkflowCompletion # 覆盖全局回收策略,在workflow完成时回收artifact - name: on-deletion path: /tmp/on-deletion.txt
3、 支持Artifacts流式传输
开源方案在使用Argo Server下载文件时,需要先落盘再传输,这会导致较高的磁盘占用率,高磁盘占用不仅影响服务器性能,还可能导致服务中断或数据丢失。
ACKOne Serverless Argo工作流实现了OSS的OpenStream接口,当用户在 Argo Workflows UI 界面点击下载文件时,Argo Server 通过直接将OSS服务端的文件流式传输给用户,而不是将文件完整下载到服务器本地再提供给用户,这种流式传输机制尤其适合需要处理大规模的数据传输和存储的工作流任务:
提升下载性能:流式从OSS服务端传输文件,而不需要等待整个文件先下载到 Argo Server,这意味着下载开始的延迟更小,实现更快的响应时间,体验更加顺畅。
减少资源占用以增强并发能力:流式处理减轻了 Argo Server 的内存和磁盘需求,从而能在相同硬件资源下处理更多的并行文件传输请求,提高了系统的并发处理能力。随着使用者数量增加或文件大小增长,直接通过流式传输可以更好地扩展服务来处理这种增长,不必担心Argo Server 的磁盘空间限制。
提升安全合规性:避免了数据在 Argo Server空间中的临时存储,减小了安全风险和数据泄露的可能性,帮助遵守数据保护和合规性要求。
流式传输在最小化Argo Server单点的压力的同时最大化UI文件下载的性能表现。通过流式传输 Artifact 文件,Argo Server 就能有效地成为一个轻量级的数据流转中心,而非存储和计算的重负载中心。
总结
ACK One Serverless Argo工作流作为全托管的Argo工作流服务,在Artifacts文件管理上相比于开源方案有如下的优势:
OSS文件管理能力 | 开源Argo Workflows | ACK One Serverless Argo工作流 |
文件上传 | 仅支持<5Gi,超大文件暂不支持 | 支持超大文件分片上传 |
文件回收 | 暂不支持 | 支持Artifacts GC |
文件下载 | 需要落盘 | 支持流式传输 |
未来Serverless Argo会将这些增强回馈到社区中,同时也会和社区一同成长,持续吸收并整合社区中的实践与经验,进一步增强Serveless Argo的稳定性,易用性,为用户提供高性能、可扩展的工作流平台。欢迎加入钉钉群号一同交流:35688562。
相关链接:
[1] Argo Workflows
https://github.com/argoproj/argo-workflows
[2] ACK One Serverless Argo工作流
[3] Artifacts
我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。
获取关于我们的更多信息~