《應用現代化重塑軟件產業分論壇--基于Serverless K8s Argo打造現代化離線任務平臺.pdf》由會員分享,可在線閱讀,更多相關《應用現代化重塑軟件產業分論壇--基于Serverless K8s Argo打造現代化離線任務平臺.pdf(15頁珍藏版)》請在三個皮匠報告上搜索。
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-xxx-Name workflow1-ApiServerPublicEip t
7、rue-ScheduleMode cost-optimized/stock-optimized-PriceLimit 0.22.獲取集群Kubeconfig:aliyun adcp DescribeHubClusterKubeconfig-ClusterId|jq-r.Kubeconfig|tee ackone-workflow-kubeconfigexport KUBECONFIG=ackone-workflow-kubeconfig3.argo sumit workflow.yaml /提交工作流4.argo get steps-jr6tw metrics/獲取工作流狀態,成本估計Name
8、:steps-jr6twNamespace:defaultServiceAccount:defaultStatus:SucceededCreated:Tue Apr 16 16:52:36+0800(21 hours ago)Started:Tue Apr 16 16:52:36+0800(21 hours ago)Finished:Tue Apr 16 19:39:18+0800(18 hours ago)Duration:2 hours 46 minutesTotal CPU:0.00275 (core*hour)Total Memory:0.04528 (GB*hour)Total Cost Estimation:1.50(RMB)STEP PODNAME DURATION MESSAGE CPU(core*hour)MEMORY(GB*hour)MaxCpu(core)MaxMemory(GB)steps-jr6tw -hello1 steps-jr6tw-2987978173 2h 0.00275 0.04528 0.000005 0.00028Demo1.大規模 Map Reduce 2.OSS upload file trigger workflow分布式Argo工作流交流群