代码之家  ›  专栏  ›  技术社区  ›  Harsh Manvar

Kubernetes吊舱意外重启

  •  0
  • Harsh Manvar  · 技术社区  · 5 年前

    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

    0 回复  |  直到 5 年前
        1
  •  1
  •   Patrick W    5 年前

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

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

        2
  •  1
  •   coderanger    5 年前

    从技术上讲,137意味着你的进程因为一个SIGKILL而终止。不幸的是,这没有足够的信息知道它来自哪里。上面的auditd或Falco等工具可以通过记录这些类型的系统调用来帮助收集数据,或者至少可以让您更接近。