0

我们在部署过程中有一个场景,在实际应用程序容器运行并准备好之前,一个活动只需要执行一次。此活动不能作为初始化容器放置,因为初始化容器将与应用程序容器的每个副本一起执行,但在这种情况下,此活动只需执行一次。

为了实现这一点,我创建了一个 kubernetes 作业来执行该活动并完成。

  1. 有没有办法在我的应用程序容器部署定义中检查这个特定的作业已经完成?Kubernetes 中是否有任何预定义的键来存储这些元数据信息并可以用来识别作业状态?

  2. 此 Job 正在使用 configMap,并且此 Job 中使用的容器会在 Directory Server 中加载配置文件(由 configMap 提供)。如果 configMap 发生变化,有没有办法自动触发作业?我可以使用 kubectl 删除作业并重新创建,但我正在寻找自动触发器。如果不在 Kubernetes 中,OpenShift 或 HELM 中是否有任何可能的方法来执行此操作?

4

2 回答 2

1

Helm 为这种事情提供了部署后的钩子,尽管使用它们可能有点粗糙。我们为此使用了一个自定义操作符,因此我们可以在我们的部署中拥有一个明确的状态机(init -> migrate -> deploy -> test -> ready)。但要写的工作量很大。

于 2019-12-13T11:01:03.973 回答
0

当卷中已经使用的 ConfigMap 被更新时,预计的键最终也会被更新。请参阅官方 kubernetes 文档上的Mounted ConfigMap 。

对于某种自动触发,您可以尝试使用 基于时间的CronJob选项,如果您知道您的数据每两个小时或每个午夜都会更改一次。

于 2020-01-07T11:25:54.373 回答