1、基于Serverless K8s+Argo Workflow打造现代化离线任务平台庄宇阿里云 容器服务 高级技术专家2023年12月1日目录1.云原生离线任务2.Argo Workflow3.全托管跨地域Argo工作流集群从无状态应用,到企业核心应用,到数据处理/AI/科学计算等离线任务ArgoWorkflow云原生离线任务 -云原生操作系统Kubernetes云原生离线任务 -基于Kubernetes做离线任务编排ArgoWorkflow离线任务编排 和 大规模离线任务运行持续集成仿真计算科学计算数据处理云原生离线任务 -离线任务编排项目比较离线任务编排项目比较Kubernetes nati
2、veUser casesAdvanced orchestration(e.g.DAG)LanguageArgo WorkflowYes通用YesYAML/PythonKube Job/CronJobYes简单JobNoYAMLTektonYes持续集成NoYAMLApache AirflowNo通用YesPythonArgo Workflow CNCF毕业项目定义:完全运行在Kubernetes上的,通用的,离线任务与复杂工作流编排与执行引擎。重要功能:1.完善的UI/CLI2.REST API/SDK3.Steps/DAG4.参数传递(Alibaba Cloud OSS)5.模版与模版组合6
3、.工作流存档7.定时工作流8.重试机制重要场景:1.Batch2.Data processing3.ML4.Simulation5.CI/CD生态:1.广泛被其他开源项目使用:Kubeflow,Metaflow,Hera,Couler2.丰富的SDK:Golang,Python,JavaArgo Workflow 工作流实例:参数传递1.串行Steps。2.参数通过Artifact(OSS)在Step间传递。3.Step通过Pod运行。4.Container可自定义镜像和运行脚本(Shell/Python)。Argo Workflow 工作流实例:DAG1.数据处理:Fan-out/Fan-i
4、n,Map-Reduce。2.动态 或 静态 DAG。3.构建复杂离线任务流程。Argo Workflow 开源挑战:运行成本高,维护成本高1.稳定:如何降低Pod和工作流残留影响新建工作流,什么GC策略和时机对业务是合理的?2.性能:如何处理大规模任务千级并行万级长短任务(10W+核),降低并行导致的调度排队,任务排队?3.安全:如何实现用户认证,鉴权和云账号的单点登录?4.易用:如何设置准确的资源配额(CPU,Memory),如何简化业务团队投递和重试投递?5.弹性:业务高峰,如何快速扩容计算存储资源,并及时回收资源?6.成本:如何评估工作流和业务的处理成本?7.升级:如何持续迭代,解决老
5、问题,避免引入新问题?全托管Argo工作流集群全托管Argo工作流集群架构全托管Argo工作流集群 vs 开源自建1.全托管开源Argo,无缝迁移:自动化测试社区版本,修复稳定性问题,大规模任务下控制面稳定性保障。2.资源预测:免运维,负载感知的资源预测,和自动调整资源规格 3.成本优化:成本优先调度(优先使用Spot实例)和 可靠性优先调度。4.数据加速,IO高带宽:存储支持挂载阿里云OSS,NAS,CPFS等读写数据,客户端多链路加速OSS,NAS访问速度,突破带宽瓶颈,支持存储可观测性。5.镜像加速:自动创建缓存,加速Pod创建,加快工作流执行。6.监控与成本:集成阿里云ARMS,及时获
6、取工作流状态与运行成本估计。7.历史可追溯:集成阿里云SLS,可查询已删除workflow/pod日志。8.事件驱动:集成Git,阿里云OSS,阿里云MNS,钉钉事件订阅与通知。9.Argo UI:集成阿里云用户OAuth SSO登录,集成RBAC权限管理。全托管Argo工作流集群 10分钟开始投递工作流1.创建工作流集群:aliyun adcp CreateHubCluster-Profile XFlow-RegionId cn-region-VpcId vpc-xxx-VSwitches vsw-xxx,vsw