我在Kubernetes中使用容器化的Spring引导应用程序。但是应用程序自动退出并重新启动,退出代码为143,错误信息为&;error &;
我不知道如何找出这个错误的原因。
我的第一个想法是Kubernetes由于资源占用过高而停止了容器,但我看不到相应的kubelet日志。
是否有办法确定SIGTERM
的原因/来源?可能是从spring-boot本身,还是从JVM?
退出代码143
-
表示进程被
external signal
终止。 -
数字143是两个数字的和:128+x,
# where x is the signal number sent to the process that caused it to terminate.
-
在示例中,x = 15,即
SIGTERM
信号的编号,表示进程被强制终止。
希望这对你有帮助。
我刚刚遇到了同样的问题。通过查看Kubernetes节点上的日志(注意,是节点上的日志),我能够追踪到Exit Code 143
的起源。不是豆荚)。(我使用Lens作为获得节点外壳的简单方法,但还有其他方法)
然后,如果你查看/var/log/messages
(我发现在某些设置中可以是/var/log/syslog
)的terminated
,你会看到这样的内容:
Feb 2 11:52:27 np-26992252-3 kubelet[23125]: I0202 11:52:27.541751 23125 kubelet.go:2214] "SyncLoop (probe)" probe="liveness" status="unhealthy" pod="default/app-compute-deployment-56ccffd87f-8s78v"
Feb 2 11:52:27 np-26992252-3 kubelet[23125]: I0202 11:52:27.541920 23125 kubelet.go:2214] "SyncLoop (probe)" probe="readiness" status="" pod="default/app-compute-deployment-56ccffd87f-8s78v"
Feb 2 11:52:27 np-26992252-3 kubelet[23125]: I0202 11:52:27.543274 23125 kuberuntime_manager.go:707] "Message for Container of pod" containerName="app" containerStatusID={Type:containerd ID:c3426d6b07fe3bd60bcbe675bab73b6b4b3619ef4639e1c23bca82692633765e} pod="default/app-comp
ute-deployment-56ccffd87f-8s78v" containerMessage="Container app failed liveness probe, will be restarted"
Feb 2 11:52:27 np-26992252-3 kubelet[23125]: I0202 11:52:27.543374 23125 kuberuntime_container.go:723] "Killing container with a grace period" pod="default/app-compute-deployment-56ccffd87f-8s78v" podUID=89fdc1a2-3a3b-4d57-8a4d-ab115e52dc85 containerName="app" containerID="con
tainerd://c3426d6b07fe3bd60bcbe675bab73b6b4b3619ef4639e1c23bca82692633765e" gracePeriod=30
Feb 2 11:52:27 np-26992252-3 containerd[22741]: time="2023-02-02T11:52:27.543834687Z" level=info msg="StopContainer for "c3426d6b07fe3bd60bcbe675bab73b6b4b3619ef4639e1c23bca82692633765e" with timeout 30 (s)"
Feb 2 11:52:27 np-26992252-3 containerd[22741]: time="2023-02-02T11:52:27.544593294Z" level=info msg="Stop container "c3426d6b07fe3bd60bcbe675bab73b6b4b3619ef4639e1c23bca82692633765e" with signal terminated"
需要注意的位是containerMessage="Container app failed liveness probe, will be restarted"