我的pod有一个preStop钩子,它向每个进程发送TSTP信号,并等待它们完成,但最多只有60秒。
假设我们将terminationGracePeriodSeconds
设置为3600秒。在完成preStop钩子之后,它现在是否应该向我的进程发送TERM
信号,并等到terminationGracePeriodSeconds
到期后才最终发送KILL
信号?
因为现在看来,在完成preStop钩子之后,它立即发送一个KILL
信号,我的pod被突然删除,即使还有一个进程在运行。
我的pod有一个preStop钩子,它向每个进程发送TSTP信号,并等待它们完成,但最多只有60秒。
假设我们将terminationGracePeriodSeconds
设置为3600秒。在完成preStop钩子之后,它现在是否应该向我的进程发送TERM
信号,并等到terminationGracePeriodSeconds
到期后才最终发送KILL
信号?
因为现在看来,在完成preStop钩子之后,它立即发送一个KILL
信号,我的pod被突然删除,即使还有一个进程在运行。
1条答案
按热度按时间bpsygsoo1#
不,它不会等
terminationGracePeriodSeconds
。这是
preStop
钩子在完成时发送SIGTERM
的预期行为。如果在
terminationGracePeriodSeconds
倒计时后preStop
钩子没有完成,kubelet会请求额外2秒的时间让它完成,然后发送一个SIGKILL
强制pod关闭。完整的序列是:
1.已请求删除pod
preStop
挂钩启动,terminationGracePeriodSeconds
倒计时开始:preStop
钩子完成,它会发送一个SIGTERM
,停止podpreStop
hook没有在terminationGracePeriodSeconds
倒计时内完成,kubelet会在发送SIGKILL
之前请求额外的2秒**,这将停止pod**。资料来源: