kubernetes 我的Pod收到SIGTERM并作为信号处理程序的一部分正常退出,但无法找到为什么SIGTERM从kubelet发送到我的Pod的根本原因?

j13ufse2  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(2)|浏览(140)

我的Pod由于未知原因自动获得SIGTERM。无法找到SIGTERM从kubelet发送到我的pod的根本原因是需要解决的问题。当我运行kubectl describe podname -n namespace时,在events部分中只有killing event存在。我没有看到任何不健康的状态之前杀死事件。有没有什么方法可以进一步调试pod的事件或任何特定的日志文件,我们可以在其中找到发送SIGTERM的原因?我尝试在事件上执行kubectl describe(killing),但似乎没有这样的命令来进一步挖掘事件。任何其他的方法来调试这个问题是赞赏.提前感谢!kubectl desribe pods snippet

nnvyjq4y

nnvyjq4y1#

请分享您的部署的yaml,以便我们可以尝试复制您的问题。
根据您所附的屏幕截图,看起来您的就绪探测器反复未能完成(它没有运行并失败,它完全未能完成),因此集群将其杀死。
不知道你的docker镜像在做什么,很难从这里调试。
作为调试的第一点,您可以尝试执行kubectl logs -f -n {namespace} {pod-name}来查看pod在做什么,看看它是否出错了。
错误Client.Timeout exceeded while waiting for headers意味着你的容器正在代理某个东西?所以也许你试图代理的上游没有React。

brccelvz

brccelvz2#

pod获得SIGTERM意味着探测失败,k8s调度程序已向pod发出死亡信号,因此您应该检查以下内容

  • 探测器的就绪性和活跃性如何。是否配置了探测器[shell/http],正确反映了探测器的修复状态
  • 是否为准备就绪和活跃性配置了足够/正确的时间?
  • 很多时候,我们忘记计算pod准备就绪所需的时间,而liveliness probe被触发,并将在此处杀死pod initialDelaySeconds for liveliness probe will help

相关问题