k8s liveness probe失败时发送给容器中进程运行的信号是什么?杀死或学期

What is the signal sent to the process running in the container when k8s liveness probe fails? KILL or TERM

我有一个优雅终止容器的用例,我有一个脚本通过使用命令 "kill PID" 从容器内优雅地终止进程。(这将发送 TERM 信号) 但我也配置了活性探测器。 目前,liveness probe 配置为以 60 秒为间隔进行探测。因此,如果在发送正常终止信号后不久进行活性探测,则当终止仍在进行时,容器的整体健康状况可能会变得严重。 在这种情况下,liveness probe 将失败,容器将立即终止。

所以我想知道 kubelet 是用 TERM 还是 KILL 杀死容器。

感谢您的支持 提前致谢

在 Kubernetes 中,Liveness Probe 检查容器的健康状态。

要回答您关于它是使用 SIGKILL 还是 SIGTERM 的问题,答案是两者都使用但按顺序使用。所以这就是引擎盖下发生的事情。

  1. Liveness 探测检查失败
  2. Kubernetes 停止将流量路由到容器
  3. Kubernetes 重启容器
  4. Kubernetes 再次开始将流量路由到容器

对于容器重启,首先发送 SIGTERM 并等待一个参数化的宽限期,然后 Kubernetes 发送 SIGKILL。

解决您的问题的方法是使用属性:

timeoutSeconds

这指定请求在被视为失败之前需要多长时间才能响应。如果您的应用程序上线所需的时间是可预测的,您可以添加和调整此参数。

此外,您可以在 livenessProbe 之前使用 readinessProbe,并有足够的延迟让容器在重新启动进程后投入使用。查看 https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/ 了解有关使用哪些参数的更多详细信息。