Kubernetes pod 意外重启
Kubernetes pod unwanted restart
我是 运行 生产环境中的 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 都意味着您的进程因 SIGKILL 而终止。不幸的是,这没有足够的信息来知道它来自哪里。除此之外,像 auditd 或 Falco 这样的工具可以通过记录这些类型的系统调用来帮助收集数据,或者至少让你更接近。
退出代码 137 是 docker exit code,它告诉我们容器已被 OOM 杀手杀死。这并不意味着容器本身达到了内存限制或者它没有足够的内存来 运行。由于 OS 级别的 OOM 杀手正在杀死应用程序,因此 pod 和 docker 不会为容器本身注册 OOM,因为它不一定达到内存限制。
上面的链接文档详细介绍了如何调试错误 137,但您也可以检查节点指标的内存使用情况或检查节点日志以查看 OOM 是否曾在 OS 注册过等级.
如果这是一个常见问题,请确保您的 python 容器包含限制,并确保集群中的其他容器设置了适当的请求和限制。
我是 运行 生产环境中的 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 都意味着您的进程因 SIGKILL 而终止。不幸的是,这没有足够的信息来知道它来自哪里。除此之外,像 auditd 或 Falco 这样的工具可以通过记录这些类型的系统调用来帮助收集数据,或者至少让你更接近。
退出代码 137 是 docker exit code,它告诉我们容器已被 OOM 杀手杀死。这并不意味着容器本身达到了内存限制或者它没有足够的内存来 运行。由于 OS 级别的 OOM 杀手正在杀死应用程序,因此 pod 和 docker 不会为容器本身注册 OOM,因为它不一定达到内存限制。
上面的链接文档详细介绍了如何调试错误 137,但您也可以检查节点指标的内存使用情况或检查节点日志以查看 OOM 是否曾在 OS 注册过等级.
如果这是一个常见问题,请确保您的 python 容器包含限制,并确保集群中的其他容器设置了适当的请求和限制。