我使用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出错,我不能输入我的节点命令。
关于如何实现这一目标的任何想法?
答案 0 :(得分:0)
您可以做的是向主进程发送信号,SIGUSR2就是出于这种目的。你可以catch the signal with an event handler并设置一个变量,然后让你的普通代码在代码中间隔或设定点检查变量,以判断它应该做什么。
在发出暂停的CLI端,您只需使用kill
命令将信号发送到进程。
另见:
但是,也许你不应该尝试暂停一个pod,只是优雅地让它关闭,然后在新的pod中获取剩余的工作负载?可能是一种更清洁的方式,但取决于你正在努力实现的目标。