用户指南

最佳实践

API 文档

容器进程主动退出

最近更新时间:2020-04-16 10:15:50

本文档介绍可能导致容器进程主动退出的几种场景,以及如何通过排查步骤定位异常原因。请按照以下步骤依次进行排查,定位问题后恢复正确配置即可。

现象描述

容器进程主动退出(不是被外界中断停止)时,退出状态码通常在0 - 128之间。根据规定,正常退出时状态码为0,状态码为1 - 127则说明为程序发生异常导致其主动退出。例如,当检测到程序启动参数和条件不满足要求,或者程序运行过程中发生 panic 但没有捕获处理就会导致程序主动退出。
可首先参考 通过 Exit Code 定位 Pod 异常退出原因 查看对应容器进程的退出状态码,缩小异常问题范围。

可能原因

  • DNS 无法解析
  • 程序配置有误

排查方法

检查 DNS 是否无法解析

若程序依赖集群 DNS 服务,则解析失败将导致程序报错并主动退出。例如,程序启动时需要连接数据库,且数据库使用 service 名称或外部域名都需要 DNS 解析,若解析失败将引发程序报错并主动退出,导致容器进程主动退出。解析失败的可能原因如下:

  • 集群网络存在异常,Pod 无法连接集群 DNS 服务。
  • 集群 DNS 服务故障,无法响应解析请求。
  • Service 或域名地址配置有误,致使其无法解析。

检查程序配置

程序配置有错误也可能引起容器进程主动退出,可能原因如下:

  • 配置文件格式错误,程序启动时解析配置失败从而报错退出。
  • 配置内容不符合规范。例如,配置中某个必选字段未填写,导致配置校验不通过,程序报错主动退出。
目录