值为 0 的 Argo Workflows 信号量
Argo Workflows semaphore with value 0
我正在了解 Argo 项目工作流程中的信号量,以避免使用相同资源的并发工作流程。
我的用例是我有几个外部资源,一次只有一个工作流可以使用一个。到目前为止一切顺利,但有时资源需要一些维护,在此期间我不想让 Argo 启动任何工作流程。
我想我有两个选择:
- 我测试了手动将 configMap 中的信号量值设置为值 0,但 Argo 无论如何都启动了一个工作流。
- 我可以启动一个永远运行的工作流,直到它被删除,声明同步锁,但这需要一些额外的开销才能让工作流 运行 不执行任何操作。
所以我想知道如果我将信号量值设置为 0 它应该如何工作,我认为它不应该启动工作流,因为它说 0。有人有这方面的任何信息吗?
这是我执行的步骤:
- 首先,我使用 kubectl -f 应用我的 configmap。
- 然后我提交一些工作流程,因为它们都使用相同的信号量,Argo 将启动一个,其余的将按顺序一次执行一个。
- 然后我使用 kubectl edit configMap
更改信号值
- 提交 Argo 将执行的新作业。
也许我通过kubectl edit更新configMap时Argo不会重新加载configMap?我想在将来以编程方式更新 configmap,但现在使用 kubectl edit 进行测试。
快速修复:应用 ConfigMap 更改后,循环 workflow-controller pod。这将迫使它重新加载信号量状态。
我无法重现您的确切问题。在使用 kubectl edit
将信号量设置为 0
后,任何新提交的工作流都保持 Pending
。
我确实遇到了一个问题,即使用kubectl edit
提高信号量限制不会自动启动任何Pending
工作流程。循环工作流控制器 pod 允许工作流再次启动 运行。
除了使用快速修复,我建议提交 issue。同步是一项较新的功能,它可能还不是 100% 可靠。
我正在了解 Argo 项目工作流程中的信号量,以避免使用相同资源的并发工作流程。
我的用例是我有几个外部资源,一次只有一个工作流可以使用一个。到目前为止一切顺利,但有时资源需要一些维护,在此期间我不想让 Argo 启动任何工作流程。
我想我有两个选择:
- 我测试了手动将 configMap 中的信号量值设置为值 0,但 Argo 无论如何都启动了一个工作流。
- 我可以启动一个永远运行的工作流,直到它被删除,声明同步锁,但这需要一些额外的开销才能让工作流 运行 不执行任何操作。
所以我想知道如果我将信号量值设置为 0 它应该如何工作,我认为它不应该启动工作流,因为它说 0。有人有这方面的任何信息吗?
这是我执行的步骤:
- 首先,我使用 kubectl -f 应用我的 configmap。
- 然后我提交一些工作流程,因为它们都使用相同的信号量,Argo 将启动一个,其余的将按顺序一次执行一个。
- 然后我使用 kubectl edit configMap 更改信号值
- 提交 Argo 将执行的新作业。
也许我通过kubectl edit更新configMap时Argo不会重新加载configMap?我想在将来以编程方式更新 configmap,但现在使用 kubectl edit 进行测试。
快速修复:应用 ConfigMap 更改后,循环 workflow-controller pod。这将迫使它重新加载信号量状态。
我无法重现您的确切问题。在使用 kubectl edit
将信号量设置为 0
后,任何新提交的工作流都保持 Pending
。
我确实遇到了一个问题,即使用kubectl edit
提高信号量限制不会自动启动任何Pending
工作流程。循环工作流控制器 pod 允许工作流再次启动 运行。
除了使用快速修复,我建议提交 issue。同步是一项较新的功能,它可能还不是 100% 可靠。