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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
函数计算FC,每月15万CU 3个月
简介: 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,搭建一个在线教育视频课程分享网站。
相关文章
|
10天前
|
人工智能 弹性计算 运维
ACK Edge与IDC:高效容器网络通信新突破
本文介绍如何基于ACK Edge以及高效的容器网络插件管理IDC进行容器化。
|
13天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
142 77
|
11天前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
11天前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
11天前
|
弹性计算 调度 数据中心
阿里云 ACK One 注册集群云上弹性:扩展业务新利器
随着企业数字化转型深入,传统IDC数据中心因物理容量限制,难以实现动态扩容,缺乏弹性能力。阿里云ACK One注册集群凭借其高度灵活性和丰富资源选择,成为解决此问题的最佳方案。通过与阿里云资源的整合,ACK One不仅实现了计算资源的按需扩展,提高了资源利用率,还通过按需付费模式降低了成本,使企业能够更高效地应对业务增长和高峰需求。
|
11天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
23天前
|
运维 Kubernetes Docker
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
43 1
|
23天前
|
Kubernetes Cloud Native 持续交付
容器化、Kubernetes与微服务架构的融合
容器化、Kubernetes与微服务架构的融合
40 1
|
25天前
|
Kubernetes Cloud Native API
深入理解Kubernetes——容器编排的王者之道
深入理解Kubernetes——容器编排的王者之道
38 1
|
27天前
|
Kubernetes Cloud Native 云计算
云原生入门:Kubernetes 和容器化基础
在这篇文章中,我们将一起揭开云原生技术的神秘面纱。通过简单易懂的语言,我们将探索如何利用Kubernetes和容器化技术简化应用的部署和管理。无论你是初学者还是有一定经验的开发者,本文都将为你提供一条清晰的道路,帮助你理解和运用这些强大的工具。让我们从基础开始,逐步深入了解,最终能够自信地使用这些技术来优化我们的工作流程。
下一篇
DataWorks