3

看起来当我使用 删除 Argo cron 工作流程时argo cron delete,根据我的观察,所有以前的工作流程(已完成以及仍在运行的工作流程)也将被删除。不过我并不完全确定,我还没有找到比https://argoproj.github.io/argo/cli/argo_cron_delete/更详细的文档。

如果我想在更新 cron 工作流程的频率时保留所有历史工作流程,例如每周一而不是每天运行,该怎么办?进行此类更新的推荐方法是什么?

4

2 回答 2

6

添加到迈克尔的答案:

CronWorkflows是它们产生的所有对象的所有者,因此在删除父对象时Workflows如何删除它们各自的对象由Kubernetes 的垃圾收集策略控制。当a被删除时, Argo 不会删除 a 的孩子,Kuebrnetes 会这样做。您可以查看 Kubernetes 文档以获取有关如何管理它的更多选项。WorkflowsCronWorkflowWorkflowsCronWorkflow

(编辑:添加更多信息)

例如,要删除一段CronWorkflow时间而使其子Workflows项保持不变,您可以运行:

kubectl delete cwf my-cwf --cascade=false

资料来源:我开发了这个CronWorkflow功能。

于 2020-10-29T19:30:18.060 回答
0

如果您想将工作流数据保留一段时间,您应该使用 Argo 的工作流归档工具将它们保存到数据库中。

为了确认您的问题,我使用他们的“hello-world”cron 工作流程进行了快速测试:

apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
  name: hello-world
spec:
  schedule: "* * * * *"
  timezone: "America/Los_Angeles"   # Default to local machine timezone
  startingDeadlineSeconds: 0
  concurrencyPolicy: "Replace"      # Default to "Allow"
  successfulJobsHistoryLimit: 4     # Default 3
  failedJobsHistoryLimit: 4         # Default 1
  suspend: false                    # Set to "true" to suspend scheduling
  workflowSpec:
    entrypoint: whalesay
    templates:
      - name: whalesay
        container:
          image: docker/whalesay:latest

删除 cron 工作流确实会删除由它启动的 hello-world 工作流。我特别有信心,因为我的 Minikube 集群上已经有其他工作流好几天没有被删除。

如果您不想使用工作流存档,可以使用kubectl edit cronworkflow <workflow name>. 我刚刚测试过,更新不会删除子工作流。

如果您使用的是 Kustomize 或 Helm,您的更改可能会删除/重新创建 cron 工作流程,而不是简单地修补它们。您必须检查这些项目的文档。

我同意,文档应该更清楚。我建议针对他们的argo cron delete页面打开 PR 。

于 2020-10-29T18:52:56.993 回答