Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 库伯内特斯吊舱_Docker_Kubernetes_Dockerfile_Google Kubernetes Engine_Kubernetes Pod - Fatal编程技术网

Docker 库伯内特斯吊舱

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":

我正在生产环境中运行Python应用程序,但我的pod经常在生产环境中重新启动。在登台环境中,它不会发生

所以我认为这可能是CPU和内存限制的问题。我也更新了

进一步调试我得到了
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。