常见生产问题与排障
掌握 Pod 排障的标准化流程
了解常见故障状态与对应原因
能独立排查 90% 以上的常见 Pod 异常
核心讲解
(1)Pod 排障标准四步流程
看状态:
kubectl get pods,确认异常状态:Pending / CrashLoopBackOff / ImagePullBackOff / Running看事件:
kubectl describe pod 名称,调度失败、拉取失败、配置错误都会记录在事件中,是排障第一步看日志:
kubectl logs 名字,查看应用输出,程序崩溃、配置错误、依赖缺失都在日志里进容器:
kubectl exec -it 名字 -- bash,进入容器检查配置、端口、进程、依赖查节点:节点资源不足、污点、亲和性、磁盘满等节点级问题
(2)常见异常状态对照表
表格
状态 | 核心原因 |
|---|---|
Pending | 资源不足、调度失败、污点不匹配、PVC 不存在、镜像拉取中 |
ImagePullBackOff | 镜像地址错误、镜像不存在、仓库认证失败、节点网络不通 |
CrashLoopBackOff | 程序崩溃、配置错误、权限不足、资源 OOM、健康检查失败 |
Running 但业务异常 | 端口映射错、服务 selector 不匹配、业务逻辑 bug、健康检查配置错误 |
(3)集群级排障
节点 NotReady:检查 kubelet 状态、网络连通、节点资源、污点状态
服务不通:检查 selector 标签、endpoints 端点、端口名称、kube-proxy 状态
跨域不通:检查网络策略、DNS 解析、Ingress 路由
操作示例
# 1. 查看Pod状态与节点分布
kubectl get pods -o wide
# 2. 查看详细事件(排障第一步)
kubectl describe pod <Pod名称>
# 3. 查看当前日志与崩溃前日志
kubectl logs <Pod名称>
kubectl logs --previous <Pod名称>
# 4. 进入容器内部排查
kubectl exec -it <Pod名称> -- bash
# 5. 查看节点详情与事件
kubectl describe node <节点名>
# 6. 检查服务后端端点
kubectl get endpoints <服务名>
常见误区
出问题先删 Pod 重启:先看事件和日志定位根因,直接重启会丢失现场,问题反复出现
CrashLoopBackOff 就是代码错:也可能是配置挂载错误、权限不足、资源限制、健康检查配置错误
Pending 就是资源不够:绝大多数 Pending 是调度问题,看 describe 事件最准确,不要上来就加机器
重启就能解决问题:重启是治标不治本,必须定位根因,否则问题会复现
课后练习
模拟一个镜像错误的 Pod,用标准排障流程定位问题
模拟启动失败场景,用 describe 和日志定位根因
总结 Pod 排障的标准四步流程
思考:排障时为什么推荐第一步先看 describe 事件?

