ACK One Argo 工作流集群:玩转容器对象存储

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储OSS,敏感数据保护2.0 200GB 1年
对象存储 OSS,内容安全 1000 次 1年
简介: ACK One Argo 工作流集群:玩转容器对象存储

【阅读原文】戳: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文件实现高效、安全的精细化管理。

 

0428-2.jpg

 

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工作流

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/overview-12

 

[3] Artifacts

https://www.alibabacloud.com/help/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/configure-artifacts

 


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

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

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

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
1月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
75 9
|
1月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
3月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
308 33
|
3月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
170 19
|
3月前
|
人工智能 分布式计算 调度
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
|
3月前
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
3月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
134 0
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
|
3月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
4月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
1月前
|
关系型数据库 MySQL Docker

推荐镜像

更多