当前位置:

首页 > 系统应用 > Argo基于Kubernetes原生工作流加入CNCF孵化器

Argo基于Kubernetes原生工作流加入CNCF孵化器

Argo(https://argoproj.github.io/projects/argo) 项目是一组 Kubernetes 原生工具集合,用于运行和管理 Kubernetes 上的作业和应用程序。Argo 提供了一种在 Kubernetes 上创建工作和应用程序的三种计算模式 – 服

Argo(https://argoproj.github.io/projects/argo) 项目是一组 Kubernetes 原生工具集合,用于运行和管理 Kubernetes 上的作业和应用程序。Argo 提供了一种在 Kubernetes 上创建工作和应用程序的三种计算模式 – 服务模式、工作流模式和基于事件的模式 – 的简单组合方式。所有的 Argo 工具都实现为控制器和自定义资源。

  • 更多参考:
    • Argo快速安装与使用

Argo 项目:面向 K8s 的工作流

DAG (Directed acyclic graph,有向无环图) 是一个典型计算机图论问题,可以用来模拟有相互依赖关系的数据处理任务,比如音视频转码,机器学习数据流,大数据分析等。

Argo最初是凭借workflow在社区崭露头角的。其Workflow项目的名称正是Argo,这可是Argo组织最早的项目哦。Argo Workflow专注于Kubernetes Native Workflow的设计,具备声明式工作流机制,能以CRD模式与Kubernetes集群完美兼容。每个任务都以Pod的形式运行,Workflow提供了DAG等依赖拓扑,还能通过Workflow Template CRD实现多个Workflow之间的组合与拼接。

上图就是一个典型的 DAG 结构,Argo Workflow 可以根据用户提交的编排模板,很容易的构建出一个有相互依赖关系的工作流。Argo Workflow 就可以处理这些依赖关系,并且按照用户设定的顺序依次运行。

Argo CD 是另一个最近比较知名的项目。Argo CD 主要面向 Gitops 流程,解决了通过 Git 一键部署到 Kubernetes 的需求,并且能够根据版本标识快速跟踪,回滚。Argo CD 还提供了多集群部署功能,能够打通多个集群之间同一应用部署问题。

Argo Event 提供基于事件依赖关系的声明式管理,以及基于各种事件源的 Kubernetes 资源触发器。Argo Events 的常见用法是触发 Argo 工作流并为使用 Argo CD 部署的长期服务生成事件。

Argo Rollout 是为了解决多种部署形式而诞生的项目。Argo Rollout 能实现多种灰度发布方式,同时结合 Ingress, Service Mesh 等方式完成流量管理与灰度测试。

Argo 各个子项目既可以单独使用,也可以结合使用。一般而言,结合使用多个子项目能够发挥 Argo 更大的能力,并且实现更多的功能。

使用 Argo 中遇到的问题与解决方法

阿里云最早落地的是 Argo Workflow,在使用 Argo Workflow 时第一个问题就是权限管理。Argo Workflow 每一个具体的任务都是通过 Pod 来执行,同时有一个 sidecar 容器来监听主任务的进行。这里的 sidecar 监听方式是通过 mount docker.sock 来实现,这就绕过了 Kubernetes APIServer RBAC 机制,无法实现对于用户权限的精确控制。我们与社区一起合作开发,实现了 Argo Kubernetes APIServer Native Executor 功能,sidecar 能够通过 service account 监听 APIServer 来获取到主容器的动态与信息,实现了 Kubernetes RBAC 的支持与权限收敛。

在DAG解析过程中,Argo Workflow会依据Workflow label对所有Pod状态进行扫描,以此来决定下一步的动作。不过,每次扫描都是串行执行的。当集群中的Workflow数量较多时,扫描速度就会变得缓慢,导致工作流的任务长时间处于等待状态。基于此,我们开发了并行扫描功能,将所有扫描动作通过goroutine实现并行化,从而大幅提升了工作流的执行效率。原本需要运行20小时的任务,如今仅需4小时就能完成。该功能已回馈给社区,并在Argo Workflow v2.4版本中发布。

在实际生产中,Argo Workflow 执行的步数越多,占用的空间越多。所有的执行步骤均记录在 CRD Status 字段里面。当任务数量超过 1000 步的时候,就会出现单个对象过大,无法存储进入 ETCD,或者会因为流量过大,拖垮 APIServer。我们与社区合作开发了状态压缩技术,能够将 Status 进行字符串压缩。压缩后的 Status 字段大小仅为原来大小的 20 分之一,实现了 5000 步以上的大型工作流运行。

Argo 在基因数据处理场景的落地实践

AGS(阿里云基因计算服务)主要应用于基因组测序二级分析,通过 AGS 加速 API 只需要 15 分钟即可完成一个 30X WGS 的基因比对、排序、去重、变异检测全流程,相比经典流程可加速 120 倍,比目前全球最快的 FPGA/GPU 方案仍能提速 2-4 倍。

通过分析个体基因序列的突变机制,可为遗传病检测、肿瘤筛查等提供有力支撑,未来将在临床医学和基因诊断方面发挥巨大作用。人类全基因组有约 30 亿个碱基对,一个 30X 的 WGS 测序数据量大约在 100GB。AGS 在计算速度、精准度、成本、易用性、与上游测序仪的整合度上具有极大优势,同时适用于 DNA 的 SNP/INDEL 以及 CNV 结构变异检测,以及 DNA/RNA 病毒检测等场景。

AGS 工作流是基于 argo 实现的,为 Kubernetes 提供容器化的本地工作流程。工作流程中的每个步骤都定义为容器。

工作流引擎是作为 Kubernetes CRD(自定义资源定义)实现的。因此,可以使用 kubectl 管理工作流,并与其他 Kubernetes 服务本地集成,例如 Volumes、Secrets 和 RBAC。工作流控制器提供完整的工作流程功能,包括参数替换,存储,循环和递归工作流程。

阿里云在基因计算场景下使用 Argo Workflow 在 Kubernetes 集群上运行数据处理分析业务,能够支持超过 5000 步以上的大型工作流,且能够比传统数据处理方式加速百倍。通过定制化的 Workflow 引擎,极大的便捷了基因数据处理的效率。

作者简介:

陈显鹭,阿里云技术专家,深耕 Docker&Kubernetes 多年 是 Docker 多个项目的 Contributor, Kubernetes Group Member,《自己动手写 Docker》作者。专注于容器技术的编排与基础环境研究。爱好折腾源代码 热爱开源文化并积极参与社区开源项目的研发

郡宝,Kubernetes 项目贡献者,Kubernetes 和 Kubernetes-sigs 社区成员。在容器、K8S 领域有多年的实践经验,目前就职于阿里巴巴云计算容器服务团队,主要研究方向有容器存储、容器编排 、 AGS 产品等领域。

本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
系统应用 cf
相关文章 更多
除了界面,Windows11和Win10还有哪些实质差异
除了界面,Windows11和Win10还有哪些实质差异

除了开始菜单的变化,Windows 11在TPM 2.0安全要求、窗口贴靠布局、驱动兼容性以及系统更新策略上与Windows 10有显著不同。本文详解两者实质差异,助你判断是否值得升级。

win10专业版和家庭版关闭更新方法差别在哪
win10专业版和家庭版关闭更新方法差别在哪

详解Windows 10家庭版和专业版在关闭或暂停自动更新时的操作区别。涵盖通用的暂停更新、活动时间设置,以及专业版独有的组策略管理入口,帮助不同版本用户合理控制更新节奏,避免系统安全风险。

win10暂停更新最长可以设置多少天怎么操作
win10暂停更新最长可以设置多少天怎么操作

想知道Win10暂停更新最长能设多久?官方支持最长暂停35天。本文图文演示如何在设置中开启暂停、确认生效日期,以及到期后如何恢复更新或调整活动时间以避免打扰。

win10怎么屏蔽win10系统更新的弹窗提醒
win10怎么屏蔽win10系统更新的弹窗提醒

本教程介绍如何在Windows 10中通过暂停更新、设置活动时间及安排重启时间来减少更新弹窗提醒。包含通知隐藏技巧及更新失败排查步骤,帮助你在保持系统安全的同时减少工作打扰。

win10更新后台占用CPU过高怎么关闭自动更新
win10更新后台占用CPU过高怎么关闭自动更新

Windows 10 更新时 CPU 占用过高怎么办?本教程演示如何通过任务管理器确认更新进程,使用“暂停更新”功能临时停止后台活动,并设置“活动时间”防止自动重启干扰工作。提供安全的故障排查步骤,避免直接禁用系统服务带来的风险。

win10正在玩游戏弹出更新重启怎么禁止
win10正在玩游戏弹出更新重启怎么禁止

Win10玩游戏时突然弹出更新重启提示?不要强制关机。本文教你如何通过设置“活动时间”避免自动重启,利用“安排重启”规划空闲时间,以及合理使用“暂停更新”功能。区分不同状态下的应对策略,既保护游戏进度又维持系统安全。

win10自动更新抢占网络带宽该怎么处理
win10自动更新抢占网络带宽该怎么处理

Win10自动更新抢占带宽导致游戏卡顿或网页打不开?本教程教你通过任务管理器确认更新进程,利用暂停更新、按流量计费连接和传递优化带宽限制,精准控制Windows Update下载速度,解决网络拥堵问题。

win10家庭版有没有简单办法阻止强制更新
win10家庭版有没有简单办法阻止强制更新

Win10家庭版用户常受强制更新困扰。本文详解如何利用系统自带的暂停更新、活动时间和安排重启功能,在不破坏系统稳定性的前提下减少更新打扰,并分析注册表修改的风险及系统支持现状。

win10升级新版本后取消开机密码失效怎么修复
win10升级新版本后取消开机密码失效怎么修复

Windows 10更新后开机突然要求输入密码?本文解析自动登录失效的真实原因,提供通过netplwiz重新保存凭据、关闭Windows Hello干扰及排查账户策略的完整步骤,助你恢复免密进入桌面。

win10更新没下载完反复重试该怎么停止任务
win10更新没下载完反复重试该怎么停止任务

Windows 10更新下载失败反复重试怎么办?不要直接停用服务。本文教你通过设置页面暂停更新、启用按流量计费连接以及调整活动时间,安全地暂时停止下载任务并避免意外重启。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)
Windows

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。