我想正常关闭Node.js,但是它没有收到来自Kubernetes的preStop信号。
process.on('preStop', handleShutdown);
function handleShutdown() {
console.log("Pod will shut down in 30 seconds");
}
我目前在.yaml中没有preStop生命周期命令,因为我找不到任何方法来通知Node.js工作者
谢谢!
答案 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
本身就足够了。