当我使用argo cron delete
删除Argo-cron工作流时,根据我的观察,所有以前的工作流(已完成的和仍在运行的工作流(也将被删除。不过我不完全确定,我还没有找到比https://argoproj.github.io/argo/cli/argo_cron_delete/.
如果我想在更新cron工作流的频率时保留所有历史工作流,例如每周一而不是每天运行,该怎么办?建议用什么方法进行更新?
添加到Michael的答案中:
CronWorkflows
是它们生成的所有Workflows
的所有者,因此在删除父CronWorkflow
时如何删除它们各自的Workflows
取决于Kubernetes的垃圾回收策略。当CronWorkflow
的子Workflows
被删除时,Argo不会删除,Kuebrnetes会删除。您可以查看Kubernetes文档,了解有关如何管理它的更多选项。
(编辑:添加更多信息(
例如,要删除CronWorkflow
,同时保留其子级Workflows
不变,可以运行:
kubectl delete cwf my-cwf --cascade=false
来源:我开发了CronWorkflow
功能。
如果您想将工作流数据保留一段时间,您应该使用Argo的工作流归档工具将它们持久化到数据库中。
只是为了证实你的问题,我用他们的";你好世界";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工作流确实删除了它启动的helloworld工作流。我特别有信心,因为我还有其他工作流已经在我的Minikube集群上放置了好几天而没有被删除。
如果不想使用工作流存档,可以使用kubectl edit cronworkflow <workflow name>
。我刚刚测试过,更新不会删除子工作流。
如果您使用的是Kustoize或Helm之类的东西,那么您的更改可能会删除/重新创建cron工作流,而不是简单地修补它们。你必须检查那些项目的文档。
我同意,文件应该更清楚。我建议打开他们argo cron delete
页面的PR。