Kubernetes:在保持pod活着的同时暂停主脚本

时间:2018-04-13 13:18:21

标签: javascript node.js docker kubernetes

我使用Kubernete在永久循环中运行节点脚本。当创建pod时,它会运行" npm start"在循环模式下使用默认参数启动脚本。 它非常适用于此。

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

  

(例如:node dist / index run --parameter = xyz)

为此,我使用kubectl:

  

kubectl exec -it PODNAME NAMESPACE -   / bin中/灰

它允许我使用其他参数运行脚本,如希望 BUT

在我运行其他命令时,我找不到将主进程(' npm start')置于保持状态的方法。

我想在执行那些节点命令时暂停循环(它们不能并行运行)。我试图通过输入" ps -aef"来杀死主要处理过的。但它不起作用。它要么自动重启(restartPolicy:Always),要么让pod出错,我不能输入我的节点命令。

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

1 个答案:

答案 0 :(得分:0)

您可以做的是向主进程发送信号,SIGUSR2就是出于这种目的。你可以catch the signal with an event handler并设置一个变量,然后让你的普通代码在代码中间隔或设定点检查变量,以判断它应该做什么。

在发出暂停的CLI端,您只需使用kill命令将信号发送到进程。

另见:

但是,也许你不应该尝试暂停一个pod,只是优雅地让它关闭,然后在新的pod中获取剩余的工作负载?可能是一种更清洁的方式,但取决于你正在努力实现的目标。