我在生产环境中运行Python应用程序,但我的pod在生产环境中频繁重启。在暂存环境中不会发生这种情况。
所以我认为可能是CPU和内存限制问题。我也更新了。
进一步的调试我得到了137
退出代码。
要进行更多调试,我进入Kubernetes节点并检查容器。
使用的命令: docker inspect < container id >
输出如下:
{
"Id": "a0f18cd48fb4bba66ef128581992e919c4ddba5e13d8b6a535a9cff6e1494fa6",
"Created": "2019-11-04T12:47:14.929891668Z",
"Path": "/bin/sh",
"Args": [
"-c",
"python3 run.py"
],
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 137,
"Error": "",
"StartedAt": "2019-11-04T12:47:21.108670992Z",
"FinishedAt": "2019-11-05T00:01:30.184225387Z"
},
OOMKilled是错误的,因此我认为这不是问题。
使用GKE主版本: 1.13.10-gke.0
出口代码137是docker出口代码,它告诉我们该容器已被OOM杀手杀死。这并不意味着容器本身已达到内存限制,或者它没有足够的内存来运行。由于操作系统级别的OOM杀手正在杀死应用程序,因此pod和docker不会为容器本身注册OOM,因为它不一定达到内存限制。
上面链接的文档详细介绍了如何调试错误137,尽管您也可以检查节点度量标准以了解内存使用情况,也可以检查节点日志以查看OOM是否曾经在操作系统级别注册。
如果这是常见问题,请确保您的python容器包含限制,并确保集群中的其他容器具有适当的请求和限制设置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句