【问题标题】:Dynamic Deployment of pods as per some conditions || Deploying pod only when the process inside other pod has finished [duplicate]根据某些条件动态部署 pod ||仅当其他 pod 内的进程完成时才部署 pod [重复]
【发布时间】:2021-10-16 10:21:54
【问题描述】:

在实现更好的 kubernetes 资源部署方面需要一些帮助。

本质上,我们试图在单个 values.yaml 文件中提及每个资源。 安装图表时。所有资源都是并行创建的。其中我有 2 个组件。 假设组件 1 和组件 2。

对于component1,它的主要功能是在服务器机器上安装一些dars。这需要 45 分钟到一个小时。

对于组件2,它依赖于组件1将安装到服务器上的一些dars。

问题是,当您部署 helm chart 并同时创建每个 pod 时。 即使 component2 的 pod 的状态将运行。当您检查容器日志时,它会告诉您进程启动失败。由于缺少一些类(组件1已安装)

我正在寻找一种方法,通过该方法我可以引入一些延迟直到组件 1 完成,或者继续销毁和重新创建组件 2 的资源直到组件 1 完成。

延迟取决于是否所有 dars 都安装到服务器机器中。

为了重新启动 component2 的所有资源,我正在考虑创建第三个 pod 或维护 pod。它将继续查找 components1 和 2 ,并且它将继续为 component2 重新创建资源,直到 component1 完成。

Readiness 和 liveliness 探针在这里不起作用,因为即使服务启动失败。 Pod 状态将运行。

任何有关如何实现此功能的提示或建议都会有很大帮助。或者如果有更好的方法来处理这个问题。

【问题讨论】:

  • 如果第一个 pod 还没有完成,第二个 pod 就会崩溃,那么你已经设置好了,你不需要做任何事情。 Kubernetes 会延迟自动重启;在准备就绪之前,它将处于 CrashLoopBackOff 状态。 (但如果第一个 pod 正在编译和安装软件,那么在您的 CI 系统中执行此操作并为第二个 pod 部署一个完整的映像会是更好的设置。)

标签: kubernetes kubernetes-helm


【解决方案1】:

您可以尝试根据您的用例添加标志 --wait 或 --wait-for-job,因为 Helm 将等到部署中的最小预期 Pod 数量启动后,才会将发布标记为成功。 Helm 将等待--timeout 设置的时间。请参考链接--wait flag detailed description https://helm.sh/docs/helm/helm_upgrade/#options

helm upgrade --install --wait --timeout 20 demo demo

【讨论】:

  • 是的,我试过这个。这将不起作用,因为等待的条件基于 pod 或容器。但是对于我们的案例,即使 pod 已启动,这些 pod 内的进程仍在进行中。如果我能以某种方式将设置更改为等到您收到消息..日志中的“任务已完成”,那应该可以做点什么。
猜你喜欢
  • 2020-07-27
  • 2021-02-03
  • 2020-06-02
  • 2020-07-20
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
  • 2019-06-28
  • 2020-06-02
相关资源
最近更新 更多