当我使用argo cron delete
删除Argo cron工作流程时,根据我的观察,所有以前的工作流程(已完成以及仍在运行的工作流程)也会被删除。不过,我不太确定,没有找到比https://argoproj.github.io/argo/cli/argo_cron_delete/更详细的文档。
例如,如果我想保留所有历史记录工作流程怎么办?更新cron工作流程的频率,例如每周一而不是每天运行?建议进行这种更新的方法是什么?
答案 0 :(得分:4)
要添加到迈克尔的答案中:
CronWorkflows
是它们产生的所有Workflows
的所有者,因此删除父Workflows
时如何删除各自的CronWorkflow
由Kubernetes' Garbage Collection policies控制。当Workflows
的子CronWorkflow
被删除时,Argo不会删除它,而Kuebrnetes会删除。您可以查看Kubernetes文档以获取有关如何管理此文件的更多选项。
(编辑:添加更多信息)
例如,要删除一个CronWorkflow
,同时保留其子Workflows
,则可以运行:
kubectl delete cwf my-cwf --cascade=false
来源:我开发了CronWorkflow
功能。
答案 1 :(得分:0)
如果要保留一段时间的工作流数据,则应使用Argo的workflow archive工具将其保存到数据库中。
为确认您的问题,我使用他们的“ hello-world” cron工作流程进行了快速测试:
import xml.etree.ElementTree as ET
for fname in os.listdir('C:/Testpath/xml'):
if fname.endswith('.xml'):
with open fname as f:
tr = ET.parse(f)
for e in tr.iter():
if 'Example' in fname:
print(fname)
删除cron工作流确实确实删除了它启动的hello-world工作流。我特别有信心,因为我的Minikube群集上已有数天的工作流程,而这些工作流程却没有被删除。
如果您不想使用工作流程存档,则可以使用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
。我刚刚进行了测试,并且此更新不会删除子工作流程。
如果您使用的是Kustomize或Helm之类的东西,则您的更改可能会删除/重新创建cron工作流程,而不是简单地对其进行修补。您必须检查那些项目的文档。
我同意,文档应该更加清晰。我建议针对他们的argo cron delete
page打开PR。