Argo 项目入驻 CNCF,一文解析 Kubernetes 原生工作流

1

作者 | 遥鹭、郡宝

导读:近期,CNCF 技术监督委员会(Technical Oversight Committee,TOC)投票决定接受 Argo 作为孵化级别的托管项目。作为一个新加入的项目,Argo 主要关注于 Kubernetes 原生的工作流,持续部署等方面。

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

2

阿里云容器服务是国内早期使用 argo workflow 的团队之一。在落地生产过程中,解决了大量性能瓶颈,并且开发了较多功能回馈给社区,团队成员也是 Argo 项目 Maintainer 之一。

Argo 项目:面向 K8s 的工作流

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

Argo 最早是通过 workflow 在社区闻名。Argo Workflow 的项目名称就是 Argo, 是 Argo 组织最初的项目。Argo Workflow 专注于 Kubernetes Native Workflow 设计,拥有声明式工作流机制,能够通过 CRD 的模式完全兼容 Kubernetes 集群,每个任务通过 Pod 的形式运行,Workflow 提供 DAG 等依赖拓扑,并且能够通过 Workflow Template CRD 实现多个 Workflow 之间的组合与拼接。

84cebebf712a84b33e0840d03cd88fba54e5f2f1.pnguploading.4e448015.gif转存失败重新上传取消3

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

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

dd436e4573a90dc497a797baac255996783eee0e.pnguploading.4e448015.gif转存失败重新上传取消4

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 的支持与权限收敛。

Argo Workflow 在 DAG 解析过程中,每一步都会根据 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 病毒检测等场景。

5

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 产品等领域.

AGS 试用链接:https://help.aliyun.com/document_detail/156348.html

“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”

原文链接

本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯智慧出行和现代汽车集团创新中心(北京)正式建立创新战略合作伙伴关系

2020年10月16日,腾讯智慧出行与现代汽车集团创新中心(北京)(Hyundai CRADLE Beijing)正式在汽车出行领域建立创新战略合作伙伴关系,双方将充分利用各自在智慧出行和互联网生态的优势资源,共同助力中国优秀初创企业&…

五项措施,让阿里云存储更安全

5大安全产品全面升级,抢先了解:https://developer.aliyun.com/topic/securityapril 预约观看发布会:https://yq.aliyun.com/live/2670 一、存储面临的安全新挑战 1、 安全合规成为必选项 2017 年 6 月 1 日,《中华人民共和国网络…

微信小程序 AppID和AppSecret的获取方式

微信公众平台:https://mp.weixin.qq.com/ 第一次需要注册,有账号直接扫扫码登陆即可

阿里云:助力数字经济新基建,打造物联网安全基石

5大安全产品全面升级,抢先了解:https://developer.aliyun.com/topic/securityapril 预约观看发布会:https://yq.aliyun.com/live/2670 新基建大势之下的物联网 近日,中央政治局常委会会议提出,加快发展5G、数据中心、…

官宣!1024 程序员节日程发布,第一代程序员求伯君将出席大会

‍‍‍‍10月23-25日,“长沙 中国 1024 程序员节”将盛大举行。程序员节活动以开源为主议题,包括 2 场岳麓尖峰对话;2020 开源技术英雄会;10场热门技术分论坛/峰会;创意集市;体验感超强的科技文化嘉年华、…

运行项目到 微信开发者工具和浏览器

文章目录一、运行项目到 微信开发者工具1. 下载安装2. HBuilder X配置3. 设置【微信开发工具路径】4. 运行5. 运行到浏览器一、运行项目到 微信开发者工具 1. 下载安装 下载地址 安装,一路下一步即可 2. HBuilder X配置 uniapp 支持10个平台,我们已…

医生的小助手,医疗AI赋能诊断新冠肺炎新方案!

春节前夕至今的一场肺炎病毒危机席卷了中国乃至整个世界,目前通过肺部CT的检测可迅速判断疑似患者的身体情况,但是由于疑似患者基数较大所以纯粹靠人工阅片,会耗费医生极大的精力。   为此阿里云视觉智能开放平台(vision.aliyun…

饿了么交易系统 5 年演化史

个人简介: 2014年12月加入饿了么,当时参与后台系统的研发(WalisJavis>Walle),主要面向客服和BD。 2015年5月开始接触订单系统的研发,7月负责订单研发组;度过单体应用到服务化这个阶段。 2016年初搭建订单的测试团队&#xff0c…

搞不定这三大难题,根本学不会Python,别不信!

Python作为一种解释型技术脚本语言,越来越被认可为程序员新时代的风口语言。无论是刚入门的程序员,还是年薪百万的BATJ的技术大牛都无可否认:Python的应用能力是成为一名码农大神的必要项。而作为Python初学者来讲,最大的问题就是…

东方希望上云 告诉你数字化门槛儿到底有多高?

云栖号案例库:【点击查看更多上云案例】 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 疫情发生前,依托钉钉平台以及云计算,东方希望集团快速实现了组织…

uniapp 创建与配置 tabbar

1. 创建页面 删除 pages 下的 index 文件夹 在 pages 文件夹处,右键 -> 选择新建页面 确认新建页面的信息 由于咱们删除了默认的index.vue页面,导致编译报错 找到pages.json文件,把鼠标选中部分配置删除即可 2. 配置 pages.json …

Serverless 架构下的服务优雅下线实践

来源 | 阿里云云栖号责编 | 晋兆雨应用发布、服务升级一直是一个让开发和运维同学既兴奋又担心的事情。兴奋的是有新功能上线,自己的产品可以对用户提供更多的能力和价值;担心的是上线的过程会不会出现意外情况影响业务的稳定性。确实,在应用…

Flink State 最佳实践

本文主要分享与交流 Flink 状态使用过程中的一些经验与心得,当然标题取了“最佳实践”之名,希望文章内容能给读者带去一些干货。本文内容首先是回顾 state 相关概念,并认识和区别不同的 state backend;之后将分别对 state 使用访问…

驻云CEO教你0门槛搭建电商网站,精选产品组合限量神券 低价买

云计算试飞员老蒋开播啦!4月27日 上午10点30分锁定云栖号直播,驻云CEO老蒋手把手教你搭建电商网站,0门槛入门;不同场景下精选产品组合,放心低价买。 观看直播: https://yq.aliyun.com/live/2707 大咖方案力…

uniapp 封装网络请求

文章目录一、前端1. 封装网络请求2. 封装模块请求方法二、后端2.1. 返回对象2.2. 热搜接口三、微信模拟请求3.1. Network3.2. Console一、前端 1. 封装网络请求 创建 utils 文件夹创建 request.js ,封装请求对象 // const BASE_URL https://api.imooc-blog.lgds…

求伯君领衔5代技术人对话,00后浪来袭1024程序员节

10 月 23-25 日,由 CSDN 等多家单位精心筹划的“长沙 中国 1024 程序员节”将盛大举行。程序员节活动以开源为主议题,包括:2 场岳麓尖峰对话,2020 开源技术英雄大会,10 场热门技术分论坛/峰会,创意集市&am…

容器环境自建数据库、中间件一键接入阿里云 Prometheus 监控

阿里云Prometheus服务4月9日发布重大升级,支持容器环境下一键接入MySQL、Redis、MangoDB、ElasticSearch等数据库和Kafka、ZooKeeper等中间件的监控,并提供开箱即用的监控大盘,现在接入更有15天免费试用。 15天免费试用地址,点击这…

状态管理 - 全局状态管理工具

文章目录一、单向数据流1. 理念示意图2. 简述二、什么是全局状态管理模式三、重点概念3.1. 什么是全局状态管理模式?3.2.全局状态管理工具?3.3. 什么是 vuex四、在项目中导入 vuex4.1. 状态管理配置4.2. 注册vuex五、测试 vuex 是否导入成功5.1. 创建搜索…

Nacos SDK for Scala 发布

脱胎于历经阿里巴巴10年生产验证的内部产品,支持具有数百万服务的大规模场景,Nacos作为高性能的动态服务发现、配置管理和服务管理平台从2018年开源以来,版本迭代速度很快,已经发布到1.2.1,已支持企业使用Nacos生产高可…

对话阿里云:开源与自研如何共处?

头图 | CSDN 下载自东方 IC来源 | CSDN(ID:CSDNnews)责编 | 晋兆雨从「鲜为人知」的专业名词,到 2006 年的精准定义,再到如今全面上云时代的「百花齐放」,云计算的发展趟过蛮荒之地,已形成极具规…