阿里云Argo X K8s玩转工作流引擎,实现大规模并行计算

本文涉及的产品
轻量应用服务器 2vCPU 1GiB,适用于搭建电商独立站
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
无影云电脑企业版,8核16GB 120小时 1个月
简介: 本文基于2024云栖大会田双坤的演讲,介绍了Kubernetes作为云原生操作系统的角色及其在各类任务中的应用,重点探讨了Argo Workflows在Kubernetes上编排并行任务的能力。面对自建Argo Workflows的挑战,如稳定性、成本和安全性等问题,阿里巴巴云推出了全托管的Serverless Argo工作流,提供全托管、免运维、可观测和易集成的特点,显著提升了任务编排的效率和稳定性。适用于数据处理、科学计算、自动驾驶仿真等多个领域。

本文整理自2024云栖大会田双坤演讲




云原生操作系统

Kubernetes与Argo Workflows



Kubernetes已经成为事实的云原生操作系统,成为业务上云、容器化的标准。


从过去无状态应用、企业核心应用,到现在AI时代的数据处理、AI训练、科学仿真等,越来越多的离线任务跑在K8s上。


如何管理好这些离线任务是新的课题,对于离线任务来说往往不是单个存在,之间往往有着许多的依赖关系,比如上图是一个典型的汽车仿真场景,其中包括了数据收集、数据清洗、算法设计、模拟仿真等。


那么如何把这些流程串联起来,提高整体的任务管理和执行效率呢?

图片.png

答案是Argo Workflows,Argo  workflow是一款专为Kubernetes上编排并行Job设计的一款工作流引擎,能够通过简单的Step或者复杂的DAG将任务编排起来。主要的使用场景有数据处理、科学/自动驾驶仿真、机器学习pipeline、基础设施自动化以及CI/CD等。


Argo workflow拥有良好的UI控制台、提交任务后能够在UI上观测到Workflow的运行状况。

图片.png

Argo拥有非常活跃的社区、在过去一年中,超过900名贡献者活跃在Argo社区,在整个CNCF项目中排名第三,阿里云也作为核心贡献者来参与了很多的贡献。它在Git上有超过14k的star、在CNCF处于毕业状态,在全球有超过200+的大型公司来使用。


可以看到这个项目已经非常稳定、成熟,可以说引领了云原生离线任务编排,成为了在Kubernetes编排任务的标准。


无论您是企业的开发人员、运维人员、数据科学家。您都可以使用Argo workflow编排,来提高生产效率。

图片.png

这是Argo workflows在kubernetes上的一个架构。其核心组件controller、UI等部署在K8s集群中。


用户可以通过UI、Python SDK、Cli等向集群中提交任务。工作流引擎会根据任务的逻辑来动态创建Pod完成任务。


有些用户使用开源自建的方式构建自己的工作流引擎,那随着业务增、复杂性提升,研发流程自动化水平的进一步提升,编排的任务越来越多,在使用过程中,也难免会遇到一些问题,尤其是大规模、深水区使用的情况。我们收集了一些用户的反馈,总结出来有以下挑战。


开源自建Argo Workflows挑战


图片.png

第一个就是稳定性:


runC的方式让多个任务集中在一个机器上,导致资源争抢、出现节点OOM、频繁宕机。大规模工作流调度导致集群控制面异常,集群不可用。工作流Result资源泄露、controlller异常重启。


第二是成本和规模:


开源Argo workflow对超大工作流支持不完善。如何支持科学计算等复杂的场景。大规模任务运行速度如何保障。业务潮汐效应明显,固定资源池成本高,如何分摊成本。


第三是安全运维:


如何实现用户认证、鉴权和单点登录。解决CVE安全问题。如何持续升级迭代。减少自建场景下大量的日常问题排查、运维工作。


这些问题困扰着用户,往往一个问题需要排查很久,这对人力成本是得不偿失的。为了解决用户遇到的这些问题,聚焦精力在业务创新上,我们结合在过去工作流场景的沉淀,支持自动驾驶、科学计算等场景的客户的经验。推出了全托管的Serverless Argo工作流。



全托管Serverless Argo工作流


图片.png

它主要有以下几个特点:


全托管:托管了Argo workflows的核心组件。让用户无需运维控制面。


免运维:使用Serverless Pod运行任务,按需付费,无需运维节点。


可观测:集成了Prommethous、Sls等可观测产品,方便观察工作流的运行情况。


易集成:可以便捷的和git、fc、eventbridge等产品进行集成、提高业务的自动化能。


这些特点可以让用户得到好的使用体验,方便快捷的上手使用工作流。除此之外,对于系统的核心引擎也针对开源做了针对性增强。来提升整体的性能和稳定性。


图片.png

主要有以下几个方面:


1)支持超大工作流,单个工作流可达2w,支持数千Pod同时快速启动,以及超大工作流的快速retry,保障Workflow执行成功率。


2)超长命令行参数支持,方便科研人员。自动地磁扩缩容。大文件分片上传、垃圾回收,提升整体易用性。


3)修复开源版本多个稳定性问题,避免控制面Crash,OOM等,增强引擎稳定性。


4)任务运行过程并行优化,并行更新Pod,解析Artifacts等。管控面参数全面调优,有效提升性能。


通过这些在核心引擎上的提高。有效地保障了集群的稳定和性能。

图片.png

总结一下全托管工作流的优势:


简单易用的工作流引擎:五分钟即可开启并提交工作流,并且完全兼容开源,方便将原生工作流迁移过来。


稳定高性能:经过控制面调优,修复社区版本稳定性问题,整体提升工作流引擎稳定性可靠性,比如深势科技使用全托管的工作流、大规模编排科学计算任务、使用数万核的算力运行任务,系统稳定性大幅提高。


专业支持,兼顾效率与成本:我们沉淀出众多领域的最佳实践,可以帮助您构建高效工作流。拥有专业的团队支持,有社区的Maintainer帮助处理工作流引擎优化问题,只需专注于业务创新。通过Serverless方式运行任务,按需使用,无需预留资源,支持高并发,有效节省成本。


下面我再分享一些领域的经典实践。


图片.png

Serverless Argo应用广泛,在各个领域都有最佳实践,包括不限于:汽车行业大规模的自动驾驶仿真、科学计算行业的复杂的工作流模拟、金融行业的自动化分析预测、数字媒体行业的视频数据处理等。


并行数据处理


图片.png

下面我们演示一个并行数据处理的demo,主要流程是合并oss上的500多个文件,每个文件有一个字符,他的整个主流程是串行的,但是每一个主流程中间会启动多个pod进行并行加速数据处理,比如这里第一步启动256个pod来加速512个文件的处理,第二步启动128个pod加速处理上一步的输出结果。依次类推,最终做一个Merge操作。


可以看到使用Serverless Argo编排任务非常流畅、简洁、并且支持规模化并行。如果大家感兴趣,欢迎来进行试用。


https://www.alibabacloud.com/help/zh/ack/overview-12

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
21天前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
178 2
|
8月前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
236 10
|
8月前
|
Kubernetes 监控 Serverless
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。
|
8月前
|
边缘计算 调度 对象存储
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
介绍如何使用ACK Edge与虚拟节点满足DeepSeek部署的弹性需求。
|
7月前
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
239 0
课时5:阿里云容器服务:最原生的集成Docker和云服务
|
8月前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
231 2
|
7月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
211 0
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
|
8月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
8月前
|
弹性计算 监控 持续交付
面对热点事件,阿里云如何通过云上弹性与容器服务帮助客户应对流量洪峰
面对热点事件,阿里云如何通过云上弹性与容器服务帮助客户应对流量洪峰
176 0
|
8月前
|
边缘计算 调度 对象存储
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
134 0

推荐镜像

更多