Node.js pod没有从Kubernetes获得preStop生命周期信号

时间:2019-01-09 21:19:24

标签: node.js kubernetes hook lifecycle

我想正常关闭Node.js,但是它没有收到来自Kubernetes的preStop信号。

process.on('preStop', handleShutdown);

function handleShutdown() {
  console.log("Pod will shut down in 30 seconds");
}

我目前在.yaml中没有preStop生命周期命令,因为我找不到任何方法来通知Node.js工作者

谢谢!

1 个答案:

答案 0 :(得分:0)

preStop 命令将杀死容器。基本上,它将终止您的应用程序进程。不幸的是,如果您仅设置“ preStop”,则它将无法正常工作。这是一个示例POD,我使用minikube进行了测试。

apiVersion: v1
kind: Pod
metadata:
  name: lifecycle-demo
spec:
  containers:
  - name: lifecycle-demo-container
    image: nginx
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
      preStop:
        exec:
          command: ["/bin/sh", "-c", "/bin/sleep 120"]
  terminationGracePeriodSeconds: 6000

我要告诉他在杀死它之前先保持120秒。如果这种情况不发生,它将在6000秒后被猛烈杀死。

对于您来说,terminationGracePeriodSeconds本身就足够了。