返回首页

K8s 生产排障基本原则与快速定位流程

📅 创建于 2026-05-08 🔄 更新于 2026-05-19 📝 453 字

K8s 生产排障基本原则与快速定位流程

四大排查原则

1. 分层排查,从下往上

先看 Node 状态,再看 Pod 状态,最后看 应用日志。跳过底层基础设施直接看 Pod 内部容易误判。

2. 先看状态,再看日志

kubectl get pod 的 STATUS 列已能给出初步方向。CrashLoopBackOff 和 ImagePullBackOff 的处理路径完全不同。

3. 不要轻易重启

重启 Pod 会丢失现场,日志和事件信息会部分丢失。必须重启前先保存关键信息。

4. 生产操作必须备份配置

kubectl get deployment <name> -n <namespace> -o yaml > backup_<name>.yaml

快速定位五步法

步骤 命令 目的
1 kubectl get pods -n <ns> 确认 STATUS(CrashLoopBackOff / ImagePullBackOff / Pending / Terminating)
2 kubectl describe pod <name> -n <ns> 查看 Events 和 Conditions,判断方向
3 kubectl logs <name> -n <ns> --previous 查看容器退出日志
4 kubectl top pod / kubectl top node 确认资源使用情况
5 根据 STATUS 走专项排障路径 见各专项页面

分层排查法

  • 集群层: kubectl get nodes, kubectl get events --all-namespaces
  • 网络层: kubectl get svc,endpoints, kubectl get networkpolicy, Pod 内 ping/curl/nslookup
  • 存储层: kubectl get pvc,pv, kubectl get storageclass
  • 应用层: kubectl get pod -o yaml, kubectl logs, kubectl exec

常用调试技巧

# 实时观察
watch kubectl get pods -n <namespace>

# 查看 owner
kubectl get pod <name> -n <ns> -o jsonpath='{.metadata.ownerReferences}'

# 标签筛选
kubectl get pods -n <ns> -l 'app=myapp,tier=frontend'

# 回滚
kubectl rollout history deployment <name> -n <ns>
kubectl rollout undo deployment <name> -n <ns>

快速定位表

现象 第一步排查命令 常见原因
CrashLoopBackOff kubectl logs --previous 应用配置错误、依赖不可达、OOM
ImagePullBackOff kubectl describe pod 事件 镜像不存在、认证失败、网络不通
Pending kubectl describe pod 事件 资源不足、污点不匹配、PVC Pending
Terminating 卡死 kubectl get pod -o yaml finalizers 挂载卡死、Finalizers 引用缺失
NotReady kubectl describe node Conditions 磁盘满、内存满、网络异常
Endpoints 为空 kubectl get svc -o jsonpath Selector 标签不匹配、Pod 未运行
DNS 解析失败 kubectl logs -n kube-system coredns CoreDNS 异常、NetworkPolicy 阻断
PVC Pending kubectl describe pvc 事件 StorageClass 不存在、CSI 异常

服务访问不通排查优先级

专门针对「K8s 服务访问不通(502/504/超时)」场景的排查优先级分层。

第一优先级(5 分钟内定位)

  • Pod 是否 Running、Ready、日志是否正常
  • Service 的 Endpoints 是否有关联的 Pod IP
  • 从 Pod 内直接访问 Service IP(绕过 Ingress 和 NodePort)

第二优先级(5-15 分钟)

  • kube-proxy 的 iptables/ipvs 规则是否正确生成
  • CNI 插件是否正常(flannel.1 / calico* 接口是否存在)
  • Ingress Controller 是否 Running、日志是否有 502/503 错误

第三优先级(15 分钟以上)

  • DNS 解析是否正常(CoreDNS 日志、ndots 配置)
  • NetworkPolicy 是否阻止了合法流量
  • 跨节点网络路由是否正确(VPC/物理网络层)

排查口诀

先 Pod 再 Svc,EP 不为空则网络通;
Ingress 有问题先看日志,DNS 不通查 CoreDNS。

关联页面

页面关联点
k8s-service-access-troubleshooting从 Pod→Service→Ingress 十步排查工作流
service-troubleshootingService 与网络排障(含 kube-proxy/CNI)
pod-troubleshootingPod 排障全场景
node-troubleshootingNode 排障(NotReady 九步排查)
k8s-interview-100-questionsK8s 面试通关指南(100 道核心题全解析)
devops-interview-guideDevOps 技术面试指南(容器/云原生/内核 59 题)
k8s-top10-troubleshooting-checklistK8s 高频问题一站式排查清单(10 大故障场景快速参考)
k8s-coredns-custom-domain-resolutionCoreDNS 自定义域名解析(变更风险评估与回滚)

关联页面

页面关联点
k8s-architecture-core-concepts| K8s 架构与核心概念深度教程(组件原理/资源对象/工作负载) |