Docker 库伯内特斯吊舱
我正在生产环境中运行Python应用程序,但我的pod经常在生产环境中重新启动。在登台环境中,它不会发生 所以我认为这可能是CPU和内存限制的问题。我也更新了 进一步调试我得到了Docker 库伯内特斯吊舱,docker,kubernetes,dockerfile,google-kubernetes-engine,kubernetes-pod,Docker,Kubernetes,Dockerfile,Google Kubernetes Engine,Kubernetes Pod,我正在生产环境中运行Python应用程序,但我的pod经常在生产环境中重新启动。在登台环境中,它不会发生 所以我认为这可能是CPU和内存限制的问题。我也更新了 进一步调试我得到了137退出代码 对于更多的调试,我进入Kubernetes节点并检查容器 使用的命令:docker inspect 以下是输出: { "Id": "a0f18cd48fb4bba66ef128581992e919c4ddba5e13d8b6a535a9cff6e1494fa6", "Created":
137
退出代码
对于更多的调试,我进入Kubernetes节点并检查容器
使用的命令:docker inspect
以下是输出:
{
"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
从技术上讲,所有这些都意味着您的进程因SIGKILL而终止。不幸的是,这没有足够的信息来知道它来自哪里。像auditd或Falco这样的工具可以通过记录这些类型的系统调用来帮助收集数据,或者至少可以让您更接近 退出代码137是一个提示,告诉我们容器被OOM杀手杀死。这并不意味着容器本身达到了内存限制或没有足够的内存运行。由于OS级OOM杀手正在杀死应用程序,pod和docker不会为容器本身注册OOM,因为它不一定达到内存限制
上面链接的文档详细介绍了如何调试错误137,不过您也可以检查节点的内存使用情况,或者检查节点日志,查看是否在操作系统级别注册过OOM
如果这是一个常见问题,请确保您的python容器包含限制,并确保集群中的其他容器设置了适当的请求和限制。感谢您编写答案。如果可以添加,我将尝试审计。这是可能的吗?容器日志有什么说明吗<代码>kubectl描述pod?您通常不应该在Kubernetes中手动运行
docker
命令(通常很少有理由运行docker inspect
),但同样的信息也存在于kubectl get pod-o yaml
输出中。Hello@DavidMaze感谢您编写了答案。kubectl日志中没有任何内容,只是应用程序日志。我试图找出容器重启后的问题或原因,因此使用了docker inspect
。感谢您写下答案,我将查看文档。这可能吗?这是不正确的。这并不意味着OOMKiller本身,只是SIGKILL。