javascript - 库伯内特斯 : Pause main script while keeping pod alive

标签 javascript node.js docker kubernetes

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

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

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

为此,我使用 kubectl :

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

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

我没有找到一种方法可以在运行其他命令时暂停主进程(“npm start”)。

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

知道如何实现这一目标吗?

最佳答案

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

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

另请参阅:

但是,也许您不应该尝试暂停 Pod,只需优雅地让它关闭,然后在新的 Pod 中恢复剩余的工作负载?可能是一种更干净的方法,但这当然取决于您想要实现的目标。

关于javascript - 库伯内特斯 : Pause main script while keeping pod alive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49818005/

相关文章:

javascript - 对象数组的 Angular JSON 过滤器

JAVASCRIPT 如何使两个或多个值的 if 值相等?

javascript - 求同类旋转器所有值的总和

javascript - 尝试通过 AJAX 从多个窗口传递多个变量

django - 通过 shell 记录时未设置 Docker 环境变量

node.js - 用于通过 Amazon 配置 CodeShip 的路径变量是什么?

javascript - 所有文本框中的协调输入

javascript - Websocket NodeJS lite(无回退)

bash - 启动容器进程导致 "exec:\"bash\": executable file not found in $PATH": unknown

ruby - $ GEM_HOME和$ GEM_PATH在旅客中设置错误