【发布时间】:2019-12-13 10:56:30
【问题描述】:
在我们的部署过程中有一个场景,其中一个活动只需要执行一次,然后实际的应用程序容器就可以运行并准备就绪。此活动不能作为初始化容器放置,因为初始化容器将与应用程序容器的每个副本一起执行,但在这种情况下,此活动只需执行一次。
为了实现这一点,我创建了一个 kubernetes 作业,它执行该活动并完成。
有没有办法在我的应用程序容器部署定义中检查此特定作业已完成? kubernetes 中是否有任何预定义的键来存储这些元数据信息并可以用来识别作业状态?
此作业正在使用 configMap,并且此作业中使用的容器在 Directory Server 中加载配置文件(由 configMap 提供)。如果 configMap 发生变化,有没有办法自动触发作业?我可以使用 kubectl 删除作业并重新创建,但我正在寻找自动触发器。 如果不在 Kubernetes 中,OpenShift 或 HELM 中是否有任何可能的方法来执行此操作?
【问题讨论】:
-
需要准确一次完成的活动非常容易出错,尤其是在事情因各种原因自行重新启动的协调环境中。我建议修改活动,以便再次运行它什么都不做(如果你不能轻松地使重新运行变得微不足道,请将其包装在检查它是否已经完成)然后 init 容器应该足够好。
标签: kubernetes openshift-origin configmap kubernetes-jobs