看起来当我使用 删除 Argo cron 工作流程时argo cron delete
,根据我的观察,所有以前的工作流程(已完成以及仍在运行的工作流程)也将被删除。不过我并不完全确定,我还没有找到比https://argoproj.github.io/argo/cli/argo_cron_delete/更详细的文档。
如果我想在更新 cron 工作流程的频率时保留所有历史工作流程,例如每周一而不是每天运行,该怎么办?进行此类更新的推荐方法是什么?
看起来当我使用 删除 Argo cron 工作流程时argo cron delete
,根据我的观察,所有以前的工作流程(已完成以及仍在运行的工作流程)也将被删除。不过我并不完全确定,我还没有找到比https://argoproj.github.io/argo/cli/argo_cron_delete/更详细的文档。
如果我想在更新 cron 工作流程的频率时保留所有历史工作流程,例如每周一而不是每天运行,该怎么办?进行此类更新的推荐方法是什么?
添加到迈克尔的答案:
CronWorkflows
是它们产生的所有对象的所有者,因此在删除父对象时Workflows
如何删除它们各自的对象由Kubernetes 的垃圾收集策略控制。当a被删除时, Argo 不会删除 a 的孩子,Kuebrnetes 会这样做。您可以查看 Kubernetes 文档以获取有关如何管理它的更多选项。Workflows
CronWorkflow
Workflows
CronWorkflow
(编辑:添加更多信息)
例如,要删除一段CronWorkflow
时间而使其子Workflows
项保持不变,您可以运行:
kubectl delete cwf my-cwf --cascade=false
资料来源:我开发了这个CronWorkflow
功能。
如果您想将工作流数据保留一段时间,您应该使用 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 。