当kebernetes在谷歌容器引擎上进行滚动更新时,我正在使用go lang进行优雅的关闭功能。当kubectl滚动更新开始时,有谁知道将哪些过程信号发送到正在运行的pod?
我听过os.Kill,os.Interrupt,syscall.SIGTERM,syscall.SIGKILL,syscall.SIGSTOP要处理的信号,在kubectl滚动更新时没有提出这些信号。
我非常感谢您的回答。
答案 0 :(得分:2)
我有一个解决方案!我使用shell脚本文件作为ENTRYPOINT并在该脚本文件中执行二进制文件。因此,执行的二进制文件的进程ID不是1.(shell脚本进程的ID为1)而docker仅将SIGTERM发送到PID 1(不会传播到它的子进程)。所以,我不得不将我的ENTRYPOINT直接更改为执行二进制文件,现在我的go代码中有SIGTERM。请参阅此link