我正在k8s上运行一个节点应用程序k8s。
每隔5分钟左右,容器就会与"CrashLoopBackOff“相撞,然后重新启动--我不知道为什么。
容器日志没有显示错误,并且在某个时候流只是以以下内容结束:
Stream closed EOF for sol/etl-sol-onchain-tx-parse-6b7d8f4c94-tf8tc (parse)pod事件也没有显示任何有用的信息,如下所示:
│ State: Running
│ Started: Sun, 08 May 2022 10:06:36 -0400
│ Last State: Terminated
│ Reason: Completed
│ Exit Code: 0
│ Started: Sun, 08 May 2022 09:58:42 -0400
│ Finished: Sun, 08 May 2022 10:03:43 -0400
│ Ready: True
│ Restart Count: 6它怎么可能用退出代码0表示“已完成”呢?容器是一个永无止境的过程,它永远不应该完成。
CPU/mem请求最多使用25-50%。
还可能是什么原因造成的?容器应该使用4-7线程(不确定是否为绿色)--也许这就是问题所在?在M5上运行它。很大(2个vCPU,8gb内存)。
发布于 2022-05-08 19:35:18
我不认为你所说的是正确的:
容器是一个永无止境的过程,它永远不应该完成。
在我看来,这不是与kubernetes有关,而是与您在容器中的应用程序有关。尝试直接执行您的容器--一个您的主机(例如在docker中)并检查其行为。
发布于 2022-05-09 06:52:03
错误代码0意味着应用程序成功终止--尽管这可能会根据应用程序的不同而产生误导性。例如,如果您的代码要求在错误时使用代码0退出,则会发生这种情况。
不管容器如何终止--成功还是失败,Kubernetes部署都将重新启动容器。
容器不是一个永无止境的过程.它可以(而且确实)在需要时终止。例如,当您运行cronjobs或jobs时
回到你的问题上。我们不知道您的应用程序在做什么,只是它是一个节点应用程序。它是在处理某个东西,然后在它完成其队列时终止吗?
通过在本地运行容器,尝试再现这个问题,方法如下:
docker run -it path/to/image
(如果需要挂载卷,请这样做)
如果容器运行、处理和终止,请执行以下操作:
echo $?
这将返回最后一个命令的错误代码,如果返回0,您已经复制了Kubernetes看到的内容。
如果是这样的话,您可以通过以下两种方法来纠正这种情况:
https://stackoverflow.com/questions/72161863
复制相似问题