【问题标题】:Kubernetes : Pause main script while keeping pod aliveKubernetes:暂停主脚本,同时保持 pod 活着
【发布时间】:2018-09-23 20:57:13
【问题描述】:

我正在使用 Kubernetes 在永久循环中运行节点脚本。创建 pod 后,它会运行“npm start”,以循环模式使用默认参数启动脚本。 它非常适合。

我有时还需要在 pod 中运行一些节点命令。

(例如:节点分布/索引运行 --parameter=xyz)

为此,我使用 kubectl :

kubectl exec -it PODNAME NAMESPACE -- /bin/ash

它允许我根据需要使用其他参数运行脚本但是

在我运行其他命令时,我找不到暂停主进程 ('npm start') 的方法。

我希望在执行这些节点命令时暂停循环(它们不能并行运行)。我试图杀死通过键入“ps -aef”显示的主要处理,但它不起作用。它要么自动重启(restartPolicy:Always),要么让 Pod 出错,我无法输入节点命令。

关于如何实现这一点的任何想法?

【问题讨论】:

    标签: javascript node.js docker kubernetes


    【解决方案1】:

    你可以做的是向主进程发送一个信号,SIGUSR2 就是为了这种目的。您可以catch the signal with an event handler 并设置一个变量,然后让您的正常代码每隔一段时间或在代码中的设定点检查该变量,以判断它是否应该做一些事情。

    在发出暂停的 CLI 端,您可以简单地使用 kill 命令将信号发送到进程。

    另见:

    但是,也许您不应该尝试暂停一个 pod,而只是优雅地让它关闭,然后在新的 pod 中继续处理剩余的工作负载?可能是一种更清洁的方法,但当然取决于您要实现的目标。

    【讨论】:

      猜你喜欢
      • 2020-09-20
      • 1970-01-01
      • 2019-07-16
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 2018-02-16
      相关资源
      最近更新 更多