zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Building fresh packages卡很久
    后端阿里代码扫描
    npm 使用淘宝镜像
    git镜像
    mysql安装8.0.18
    idea2019.2.2版本破解
    JDK下载很慢
    解决GitHub下载速度慢下载失败的问题
    Hashtable多线程遍历问题
    2-18 求组合数 注:代码有问题找不出哪儿错了
  • 原文地址:https://www.cnblogs.com/fanggege/p/14189240.html
Copyright © 2011-2022 走看看