argo 工作流的編寫


需求

有三個任務需要同時運行,3個任務有任意一個運行出錯就終止整個任務運行。3個並行任務運行完成后,順序運行多個任務,最后結束運行。

 

根據需求整體workflow 結構是這樣的

 

 整個結構是dag ,dag 里面的兩個template ,兩個template 都是step類型,前者並行運行,后者順序運行。后面的template 根據dag 的依賴關系依賴於前者,前者只要有一個任務運行出錯那么就會直接推出整個任務。

整個workflow的yaml

apiVersion: argoproj.io/v1alpha1
  2 kind: Workflow
  3 metadata:
  4   generateName: pledge-
  5 spec:
  6   entrypoint: pledge-action
  7   templates:
  8   - name: py-script              #定義一個py的腳本運行的容器模版,其他模版調用的時候輸入要運行的腳本路徑作為它運行的參數就可以運行任務了
  9     inputs:
 10       parameters:
 11       - name: message
 12     container:
 13       image: registry-kzf/pledge:1.0.2
 14       command: [python, "{{inputs.parameters.message}}"]
 15 
 16   - name: build-basic-data         #定義一個包含3個並行任務的step類型的template
 17     steps:
 18     - - name: pledge-price-market
 19         template: py-script
 20         arguments:
 21           parameters: [{name: message, value: "/code/choice_data/update_pledge_price_market.py"}]
 22       - name: pledge-financial
 23         template: py-script
 24         arguments:
 25           parameters: [{name: message, value: "/code/choice_data/update_pledge_financial.py"}]
 26       - name: pledge-stock-basic
 27         template: py-script
 28         arguments:
 29           parameters: [{name: message, value: "/code/choice_data/update_pledge_stock_basic.py"}]
 30 
 31   - name: main-action            #定義一個包含3個順序執行任務的step類型的模版
 32     steps:
 33     - - name: build-pre-details-tables
 34         template: py-script
 35         arguments:
 36           parameters: [{name: message, value: "/code/choice_data/update_pledge_details.py"}]
 37     - - name: build-details-tables
 38         template: py-script
 39         arguments:
 40           parameters: [{name: message, value: "/code/choice_data/input_pledge_trade_details.py"}]
 41     - - name: build-pre-status-tables
 42         template: py-script

101   - name: pledge-action            #定義一個dag類型的模版,把上面的兩個step類型的template包含其中,他們之間是依賴關系。
102     dag:
103       tasks:
104       - name: build-basic-data
105         template: build-basic-data
106       - name: main-action
107         dependencies: [build-basic-data]
108         template: main-action

 

說明

關於STEP

step 類型的模版,如果要運行並行任務,那么多個step之間只有第一個step的name前面是--后面的step的name 是-,也就是 模版 build-basic-data 中定義的3個並行任務 的格式。

如果是順序運行的step,那么他的結構就是模版 main-action格式,每個name前面都是--

 

關於DAG

DAG有一個內置的快速失敗結束特性,一旦檢測到一個DAG節點失敗,它就會停止調度新步驟。然后,在DAG自身失敗之前,它會等待所有DAG節點完成。FailFast標志默認為true,如果設置為false,它將允許DAG運行DAG的所有分支直到完成(成功或失敗),而不考慮DAG中分支的失敗結果。

 

計划任務編寫

有些工作流任務需要每天定時運行,在argo中有類似的資源對象,可以編寫

apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
  name: daily-job
spec:
  # run daily at 11:33 am
  timezone: "Asia/Shanghai"
  schedule: "33 11 * * *"
  workflowSpec:
    entrypoint: whalesay
    templates:
      - name: whalesay
        container:
          image: docker/whalesay:latest
          command: [cowsay]
          args: ["hello world"]

#注意時區默認為倫敦的市區,所以需要額外配置為上海時區

創建

argo cron create  cron.yaml

查看

argo cron list -n argo
NAME         AGE   LAST RUN    NEXT    RUN    SCHEDULE    SUSPENDED
daily-job         8m    7m            23h     33      11 * * *      false
daily-job-pledge   10s    N/A            5h       0       17 * * *      false

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM