我正在学习 Argo 项目工作流程中的信号量,以避免使用相同资源的并发工作流程。
我的用例是我有几个外部资源,一次只能使用一个工作流。到目前为止一切顺利,但有时资源需要一些维护,在此期间我不想 Argo 启动任何工作流。
我想我有两个选择:
- 我测试了手动将 configMap 中的信号量值设置为值 0,但 Argo 还是启动了一个工作流。
- 我可以启动一个永远运行的工作流,直到它被删除,并要求同步锁,但这需要一些额外的开销才能运行不做任何事情的工作流。
所以我想知道如果我将信号量值设置为 0,它应该如何工作,我认为它不应该启动工作流,因为它说 0。任何人有任何关于此的信息?
这是我执行的步骤:
- 首先,我使用 kubectl -f 应用我的 configmap。
- 然后我提交了一些工作流,因为它们都使用相同的信号量,所以 Argo 将启动一个,其余的将一次按顺序执行。
- 然后我用 kubectl edit configMap 更改 semapore 的值
- 提交新作业,然后 Argo 将执行该作业。
当我通过 kubectl edit 更新 configMap 时,也许 Argo 不会重新加载 configMap?我想将来以编程方式更新 configmap,但现在使用 kubectl edit 进行测试。