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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 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,搭建一个在线教育视频课程分享网站。
相关文章
|
7天前
|
监控 Cloud Native 持续交付
实现容器集群轻松部署:Docker Swarm 集群管理解析
实现容器集群轻松部署:Docker Swarm 集群管理解析
|
24天前
|
存储 运维 分布式计算
分布式云容器平台ACK One概述
分布式云容器平台ACK One概述
36 2
|
26天前
|
存储 弹性计算 Kubernetes
【阿里云云原生专栏】深入解析阿里云Kubernetes服务ACK:企业级容器编排实战
【5月更文挑战第20天】阿里云ACK是高性能的Kubernetes服务,基于开源Kubernetes并融合VPC、SLB等云资源。它提供强大的集群管理、无缝兼容Kubernetes API、弹性伸缩、安全隔离及监控日志功能。用户可通过控制台或kubectl轻松创建和部署应用,如Nginx。此外,ACK支持自动扩缩容、服务发现、负载均衡和持久化存储。多重安全保障和集成监控使其成为企业云原生环境的理想选择。
188 3
|
26天前
|
运维 Kubernetes Cloud Native
为什么需要容器集群
小陈打算将使用Docker构建的WordPress网站部署到生产环境,但他意识到单个容器可能无法应对潜在的故障、升级需求和高用户访问量。大刘建议小陈采用容器集群,这样能保证服务的持续性和弹性。容器集群通过自动化管理工具,如Kubernetes,简化了多容器的部署和协调,解决了扩展性、服务连续性和监控等问题。随着容器技术的发展,Kubernetes已成为主流的容器编排工具。
|
13天前
|
Kubernetes 微服务 容器
Aspire项目发布到远程k8s集群
Aspire项目发布到远程k8s集群
48 2
Aspire项目发布到远程k8s集群
|
17天前
|
存储 运维 监控
Kubernetes 集群监控与日志管理实践
【5月更文挑战第28天】在微服务架构日益普及的当下,容器编排工具如 Kubernetes 已成为运维工作的核心。有效的集群监控和日志管理是确保系统稳定性和服务可靠性的关键。本文将深入探讨 Kubernetes 集群的监控策略,以及如何利用现有的工具进行日志收集、存储和分析,以实现对集群健康状况的实时掌握和问题快速定位。
|
2天前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
12 3
|
4天前
|
Kubernetes 数据处理 调度
天呐!部署 Kubernetes 模式的 Havenask 集群太震撼了!
【6月更文挑战第11天】Kubernetes 与 Havenask 集群结合,打造高效智能的数据处理解决方案。Kubernetes 如指挥家精准调度资源,Havenask 快速响应查询,简化复杂任务,优化资源管理。通过搭建 Kubernetes 环境并配置 Havenask,实现高可扩展性和容错性,保障服务连续性。开发者因此能专注业务逻辑,享受自动化基础设施管理带来的便利。这项创新技术组合引领未来,开启数据处理新篇章。拥抱技术新时代!
|
4天前
|
Kubernetes 前端开发 Serverless
Serverless 应用引擎产品使用合集之如何调用Kubernetes集群内服务
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
14天前
|
运维 Kubernetes 调度
【kubernetes】关于k8s集群的污点、容忍、驱逐以及k8s集群故障排查思路
【kubernetes】关于k8s集群的污点、容忍、驱逐以及k8s集群故障排查思路