Kubernetes Pod意外重启

我正在生产环境中运行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

hgs_0713 回答:Kubernetes Pod意外重启

从技术上讲,这137项均意味着您的进程由于SIGKILL而被终止。不幸的是,这没有足够的信息来知道它的来源。最重要的是,诸如audited或Falco之类的工具可以通过记录这类系统调用来帮助收集数据,或者至少使您与之接近。

,

退出代码137是docker exit code,它告诉我们该容器已被OOM杀手杀死。这并不意味着容器本身已达到内存限制或没有足够的内存来运行。由于操作系统级别的OOM杀手正在杀死应用程序,因此pod和docker不会为容器本身注册OOM,因为它不一定达到内存限制。

以上链接的文档详细介绍了如何调试错误137,尽管您还可以检查节点指标的内存使用情况或检查节点日志以查看OOM是否曾经在操作系统级别注册。

如果这是常见问题,请确保您的python容器包含限制,并确保集群中的其他容器都设置了适当的请求和限制。

本文链接:https://www.f2er.com/3162304.html

大家都在问