如何用kubectl查看已退出特定Pod的详情及exitCode 143相关日志
排查已终止Pod详情与exitCode 143问题
获取已停止Pod的详情
默认kubectl get pods仅展示处于Running状态的Pod,要查看所有状态的Pod(包括已终止的),可以用以下命令:
- 查看所有命名空间下的所有Pod:
kubectl get pods --all-namespaces - 指定命名空间查看所有Pod:
kubectl get pods -n <你的命名空间> --include-terminated(部分新版本K8s可直接用kubectl get pods -n <你的命名空间>配合状态筛选) - 查看特定已终止Pod的完整详情(包含终止原因、事件记录等关键信息):
kubectl describe pod <目标Pod名称> -n <你的命名空间>,输出里的Events和Termination Message字段会明确Pod终止的触发因素。
获取已停止Pod的日志
如果直接执行kubectl logs <目标Pod名称>无结果,试试这些方法:
- 指定容器(若Pod包含多个容器):
kubectl logs <目标Pod名称> -c <容器名称> -n <你的命名空间> - 拉取上一次运行实例的日志(针对已终止的容器):
kubectl logs <目标Pod名称> --previous -n <你的命名空间>,这个参数会调取Pod终止前的日志内容 - 若Pod已被K8s自动清理,可登录Pod所在节点,查看本地日志目录:
/var/log/pods/<命名空间>_<Pod名称>_<PodID>/<容器名称>/,不过需要节点的操作权限。
exitCode 143的额外排查手段
exitCode 143对应进程收到SIGTERM信号后的正常退出,除了日志,还可以通过以下命令定位触发源:
- 查看Pod相关的集群事件:
kubectl events -n <你的命名空间> --field-selector involvedObject.name=<目标Pod名称>,能看到是否是Deployment滚动更新、HPA缩容、节点驱逐等操作触发了Pod终止 - 检查控制器配置(如Deployment/StatefulSet):
kubectl get deployments/<关联Deployment名称> -n <你的命名空间> -o yaml,查看更新策略、资源限制是否合理,是否存在频繁重启或缩容配置 - 检查节点状态:
kubectl describe node <Pod所在节点名称>,确认节点是否存在内存/CPU资源不足、磁盘压力等导致Pod被驱逐的情况
内容的提问来源于stack exchange,提问作者Sabo Boz
相关产品推荐
相关产品推荐

