值为 0 的 Argo Workflows 信号量

Argo Workflows semaphore with value 0

我正在了解 Argo 项目工作流程中的信号量,以避免使用相同资源的并发工作流程。

我的用例是我有几个外部资源,一次只有一个工作流可以使用一个。到目前为止一切顺利,但有时资源需要一些维护,在此期间我不想让 Argo 启动任何工作流程。

我想我有两个选择:

所以我想知道如果我将信号量值设置为 0 它应该如何工作,我认为它不应该启动工作流,因为它说 0。有人有这方面的任何信息吗?

这是我执行的步骤:

  1. 首先,我使用 kubectl -f 应用我的 configmap。
  2. 然后我提交一些工作流程,因为它们都使用相同的信号量,Argo 将启动一个,其余的将按顺序一次执行一个。
  3. 然后我使用 kubectl edit configMap
  4. 更改信号值
  5. 提交 Argo 将执行的新作业。

也许我通过kubectl edit更新configMap时Argo不会重新加载configMap?我想在将来以编程方式更新 configmap,但现在使用 kubectl edit 进行测试。

快速修复:应用 ConfigMap 更改后,循环 workflow-controller pod。这将迫使它重新加载信号量状态。

我无法重现您的确切问题。在使用 kubectl edit 将信号量设置为 0 后,任何新提交的工作流都保持 Pending

确实遇到了一个问题,即使用kubectl edit提高信号量限制不会自动启动任何Pending工作流程。循环工作流控制器 pod 允许工作流再次启动 运行。

除了使用快速修复,我建议提交 issue。同步是一项较新的功能,它可能还不是 100% 可靠。