news 2026/9/23 21:34:12

K8s 生产排障实战:10 个高频故障与排查命令(建议收藏)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
K8s 生产排障实战:10 个高频故障与排查命令(建议收藏)

摘要

整理 K8s 生产环境十类高频故障:Pending、CrashLoopBackOff、ImagePullBackOff、OOMKilled、Service 不通、Ingress 报错、节点 NotReady、磁盘压力驱逐、滚动发布抖动、DNS 解析失败。每类给出排查命令、常见根因与处理方式,附 kubectl 速查表。

排查前的三个基本功

kubectl get pod-owide# 看状态与所在节点kubectl describe pod<pod># 看 Events(80% 的答案在这)kubectl logs<pod>[-p][-c 容器名]# 看当前/上次日志

记住一个原则:先看 describe 的 Events,再看日志——调度失败、拉镜像失败、探针失败都写在 Events 里。


1. Pod 一直 Pending

排查

kubectl describe pod<pod>|grep-A10Events

常见根因

Events 关键字含义
Insufficient cpu/memory节点资源不足 → 看 requests 是否过大
node(s) had taint节点有污点,Pod 没配 tolerations
didn't match node selector/affinity亲和性/选择器写错
volume node affinity conflictPV 与 Pod 不在同可用区
no nodes available节点 NotReady 或全部被占满

2. CrashLoopBackOff(反复重启)

排查顺序

kubectl logs<pod>-p# 1. 上次容器日志(关键)kubectl describe pod<pod># 2. 看退出码与 OOMKilled

退出码速查

退出码含义
1应用自身报错(配置、依赖、端口占用)
137被 SIGKILL:OOM 或 liveness 探针超时被杀
143收到 SIGTERM 正常退出(常是优雅停机逻辑有问题)

容易忽略的点:livenessProbe配置不当(初始延迟太短、路径写错)会导致应用还没起来就被反复杀死——这类问题日志里看不出报错,只能从 Events 的Killing container发现。


3. ImagePullBackOff / ErrImagePull

kubectl describe pod<pod>|grep-A5Events

常见原因:

  • 镜像名/标签写错(最常见)
  • 私有仓库没配imagePullSecrets
  • 仓库凭证过期
  • 节点到仓库网络不通(内网 registry、镜像加速器失效)

4. Pod 被 OOMKilled

kubectl describe pod<pod>|grep-ioom kubectltoppod<pod># 看实际内存

判断是"泄漏"还是"峰值超限":

  • 持续增长→ 应用内存泄漏(Java 看堆 + 堆外 DirectByteBuffer)
  • 平时正常、高峰被杀limits太小或流量突增

处理:先临时调大limits止血,再定位根因;requests也要设合理,否则调度会超卖。


5. Service 访问不通

三步定位

# 1. Endpoints 是否为空(最常见的坑)kubectl get endpoints<svc># 2. 从 Pod 内部测试kubectlexec-it<pod>--curl<svc-name>:<port># 3. 看 Service 与 Pod 的标签是否匹配kubectl get svc<svc>-oyaml|grepselector kubectl get pod --show-labels

Endpoints 为空= selector 与 Pod 标签不匹配,或 Pod 未 Ready(readiness 没过也不会进 Endpoints)。


6. Ingress 返回 404 / 502

现象排查方向
404host / path 规则不匹配;IngressClass 选错
502后端 Service/Endpoints 有问题(回到第 5 条)
503后端无可用 Pod
kubectl get ingress kubectl describe ingress<name># 看规则与后端kubectl logs-ningress-nginx<ingress-pod># 看网关侧错误

7. 节点 NotReady

kubectl describenode<node>|grep-A10Conditions

常见原因:

  • kubelet 挂了 →systemctl status kubelet
  • 容器运行时异常(containerd/docker)
  • 磁盘压力 / 内存压力 → 节点进入 DiskPressure
  • 网络插件异常(Calico/Flannel Pod 挂了)

注意:节点 NotReady 超过pod-eviction-timeout后,上面的 Pod 会被驱逐,可能引发雪崩。


8. 磁盘压力导致 Pod 被驱逐

kubectl describenode<node>|grep-ipressuredf-h/var/lib/kubelet /var/lib/containerd

K8s 默认驱逐阈值:节点可用磁盘低于 10~15% 就开始驱逐。

元凶通常是:容器日志(/var/log/pods)、镜像层堆积、core dump。

处理:

  • 清理:crictl rmi --prune清理无用镜像
  • 根治:限制容器日志大小(log-opts max-size)、日志采集后轮转
  • 把 kubelet 与镜像目录单独挂盘

9. 滚动发布期间流量抖动

四个关键配置

spec:strategy:rollingUpdate:maxUnavailable:0# 先起新的再停旧的maxSurge:1template:spec:terminationGracePeriodSeconds:30containers:-name:appreadinessProbe:# 真正就绪才接流量httpGet:{path:/healthz,port:8080}initialDelaySeconds:5lifecycle:preStop:exec:{command:["sh","-c","sleep 5"]}# 先摘流量再退出

再加PDB保护最小可用副本数:

apiVersion:policy/v1kind:PodDisruptionBudgetspec:minAvailable:2selector:matchLabels:{app:myapp}

10. Pod 内 DNS 解析失败

kubectlexec-it<pod>--cat/etc/resolv.conf kubectlexec-it<pod>--nslookupkubernetes.default kubectl get pod-nkube-system|grepcoredns kubectl logs-nkube-system<coredns-pod>

常见原因:

  • CoreDNS Pod 异常或副本不足
  • ndots:5导致大量无效查询(短域名拼接)
  • 节点 conntrack 表满(高并发下 DNS 丢包)
  • 网络插件策略拦截

kubectl 速查表

# 状态与事件kubectl get pod-owide kubectl describe pod<pod>kubectl get events --sort-by=.lastTimestamp|tail-20# 日志kubectl logs<pod>-p--tail=200kubectl logs<pod>-c<container>-f# 资源kubectltoppod / kubectltopnode# 网络kubectl get svc,ep,ingress kubectlexec-it<pod>--sh# 节点kubectl describenode<node>kubectl getnode-owide# 排障临时容器(1.23+)kubectl debug-it<pod>--image=busybox--target=<container>

排查心法

  1. 先看 Events 再看日志——调度/镜像/探针问题日志里没有
  2. 对比"变更前后"——刚发过版?先回滚再说
  3. 保留现场——重启前先describelogs -p、必要时kubectl debug
  4. 别只修一台——集群问题往往成片出现,先看是不是节点级/网络级

这些排查链路我整理成了一个小程序

上面这些场景的题目(以及更多)我整理成了一个小程序「系统运维面试题学习随手记刷」,295 道题,按 8 个模块分类:

中间件 · DevOps · SRE · 云原生 · Linux · AIOps · Shell · 综合开放题

  • 题库全部免费,不用登录,每题都有参考答案,就是本文这种"排查步骤 + 回答结构"的形式
  • 简历和 JD 粘进去,会出 20 道针对你经历的押题,并给一份适配度分析
  • 还有录像练习:摄像头答题 → 回放 → 按要点自评,练表达(本地处理,不上传)

微信搜索小程序「系统运维面试题学习随手记刷」


你遇到过最离谱的线上故障是什么?评论区聊聊。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 21:34:07

YOLOv8红细胞检测实战:标签格式转换与数据集划分全流程指南

简介&#xff1a;面向目标检测初学者与医学影像分析者&#xff0c;这份YOLO红细胞检测数据集涵盖1000张真实场景的高质量红细胞图片&#xff0c;采用LabelImg精细标注&#xff0c;并整理为VOC(xml)、COCO(json)、YOLO(txt)三类标准格式&#xff0c;分目录存放&#xff0c;可直接…

作者头像 李华
网站建设 2026/9/23 21:31:12

情感分类系统三路线对比:词典法、SVM与TextCNN实践指南

简介&#xff1a;一套面向自然语言处理零基础初学者的情感分类实战项目&#xff0c;基于情感词典法、传统机器学习和深度学习三条技术路线&#xff0c;实现情感分类系统并对比性能&#xff0c;适合作为数据挖掘、机器学习及深度学习课程大作业或毕业设计参考。压缩包共16个文件…

作者头像 李华
网站建设 2026/9/23 21:30:57

游戏力养育:亲子沟通的黄金桥梁与方法论

1. 为什么游戏是亲子沟通的黄金桥梁第一次翻开《游戏力》这本书时&#xff0c;我正在经历育儿低谷期。三岁的儿子总把"不要"挂在嘴边&#xff0c;刷牙、穿衣、吃饭这些日常小事都能演变成拉锯战。直到尝试用书中的"枕头大战"化解了一次睡前冲突——当我把叠…

作者头像 李华
网站建设 2026/9/23 21:29:23

Nextion串口屏驱动安装与中文固件刷写:MMDVM热点显示恢复实战

简介&#xff1a;业余无线电数字语音通信中&#xff0c;MMDVM热点板配合Nextion串口屏的用途很广&#xff0c;但不少HAM在安装驱动或刷入中文固件时频频失败。这份资料正是针对该痛点的操作指南&#xff0c;适合已能进入Pi-Star配置页面、想为STM32-DVM热点完善屏幕显示的入门进…

作者头像 李华