当前位置: 首页 > news >正文

Pod 生命周期常见异常排查清单

异常 1:Pod 状态 Pending(调度失败 / 容器未启动)

核心特征

Pod 长时间处于 Pending 状态,kubectl describe pod 显示 Events 有明确错误提示。

根因分类与排查步骤

根因 排查命令 解决步骤
1. 节点资源不足(CPU / 内存 / 磁盘) 1. 查看节点资源使用情况kubectl top nodes
2. 查看 Pod 请求资源kubectl get pod <pod-name> -o yaml grep -A 10 resources
3. 检查节点剩余资源
kubectl describe node <node-name> grep -A 20 Allocated
1. 扩容节点(增加 CPU / 内存)
2. 降低 Pod 的 resources.requests 配置
3. 驱逐节点上低优先级 Pod(配置 priorityClassName
2. 节点污点(Taint)与 Pod 容忍度(Toleration)不匹配 1. 查看节点污点kubectl describe node <node-name> grep Taint
2. 查看 Pod 容忍度
kubectl get pod <pod-name> -o yaml grep -A 10 tolerations
1. 为 Pod 添加对应 tolerations 配置
2. 移除节点不必要的污点(kubectl taint nodes <node-name> <key>-
3. 镜像拉取失败(ErrImagePull/ImagePullBackOff) 1. 查看镜像拉取事件kubectl describe pod <pod-name> grep Events -A 20
2. 验证镜像是否存在
docker pull [image-name:tag](image-name:tag)(节点执行)
3. 检查私有镜像密钥
kubectl get secret <secret-name> -o yaml
1. 确认镜像名称 / 标签正确,镜像仓库可访问
2. 为 Pod 添加私有镜像拉取密钥(imagePullSecrets)3. 配置节点镜像加速器(如 Docker/containerd 镜像源)
4. 网络 / 存储资源不足(如 IP 池耗尽、PVC 未绑定) 1. 检查 CNI 网络 IP 池kubectl get cm -n kube-system <cni-config> -o yaml(如 Calico/Flannel)
2. 检查 PVC 状态kubectl get pvc <pvc-name>
1. 扩容 CNI 网络 IP 池(修改 CNI 配置)
2. 确保 PVC 对应的 PV 已创建或 StorageClass 可用

异常 2:Pod 状态 CrashLoopBackOff(容器启动后立即崩溃)

核心特征

容器反复启动→崩溃→重启,kubectl describe pod 显示 Back-off restarting failed container

根因分类与排查步骤

根因 排查命令 解决步骤
1. 容器启动命令 / 参数错误 1. 查看 Pod 启动命令kubectl get pod <pod-name> -o yaml grep -A 5 command
2. 查看容器启动日志
kubectl logs <pod-name> -c <container-name> --previous
1. 修正 command/args 配置,确保命令可执行
2. 测试镜像内命令是否有效(docker run <image> <command>
2. 容器依赖缺失(如配置文件、环境变量) 1. 查看容器环境变量kubectl exec -it <pod-name> -- env(若能短暂启动)
2. 检查 ConfigMap/Secret 挂载kubectl describe pod <pod-name> grep -A 10 Volumes
1. 确保环境变量配置正确(如 env/envFrom
2. 验证 ConfigMap/Secret 已创建且挂载路径正确
3. 容器进程权限不足(如无法写入目录) 1. 查看容器安全上下文kubectl get pod <pod-name> -o yaml grep -A 10 securityContext
2. 检查容器内目录权限
kubectl exec -it <pod-name> -- ls -l <mount-path>
1. 配置 securityContext.runAsUser/runAsGroup 为有权限的用户
2. 修改挂载目录权限(通过 initContainer 执行 chmod
4. 探针配置不合理(存活探针超时导致误杀) 1. 查看探针配置kubectl get pod <pod-name> -o yaml grep -A 15 livenessProbe
2. 检查探针失败事件
kubectl describe pod <pod-name> grep -i probe
1. 增加 initialDelaySeconds(给容器足够启动时间)
2. 降低探针频率(增大 periodSeconds)或提高失败阈值(failureThreshold
3. 慢启动应用添加 startupProbe 保护
5. 应用内部错误(如代码异常、内存溢出) 1. 查看应用日志kubectl logs <pod-name> -c <container-name>
2. 查看容器资源使用kubectl top pod <pod-name>
1. 修复应用代码 Bug
2. 增加容器 resources.limits(内存 / CPU)
3. 配置 JVM 等应用的内存参数(如 -Xmx

异常 3:Pod 状态 Running但无响应(就绪探针失败 / 流量无法接入)

核心特征

Pod 状态为 Running,但 Service 无法访问,kubectl describe pod 显示 Readiness probe failed

根因分类与排查步骤

根因 排查命令 解决步骤
1. 就绪探针配置错误(路径 / 端口错误) 1. 查看就绪探针配置kubectl get pod <pod-name> -o yaml grep -A 15 readinessProbe
2. 手动测试探针端点
kubectl exec -it <pod-name> -- curl <probe-path>:<port>
1. 修正探针的 path/port 配置,确保端点可访问
2. 探针接口应轻量(仅检查服务是否就绪,不依赖外部资源)
2. 应用依赖服务未就绪(如数据库 / Redis 连接失败) 1. 查看应用日志kubectl logs <pod-name> -c <container-name>
2. 测试容器内连接依赖服务kubectl exec -it <pod-name> -- ping <db-service> -c 2
1. 确保依赖服务已启动且网络可达
2. 使用 initContainer 等待依赖服务就绪后再启动业务容器
3. 容器端口与 Pod 端口不匹配 1. 查看 Pod 端口配置kubectl get pod <pod-name> -o yaml grep -A 5 containerPort
2. 查看容器内进程监听端口
kubectl exec -it <pod-name> -- netstat -tulnp
修正 containerPort 与容器内进程监听端口一致
4. Service 标签选择器与 Pod 标签不匹配 1. 查看 Service 标签选择器kubectl get svc <svc-name> -o yaml grep -A 5 selector
2. 查看 Pod 标签
kubectl get pod <pod-name> -o yaml grep -A 5 labels
确保 Service 的 selector 与 Pod 的 labels 完全匹配

异常 4:Pod 状态 Init:Error(初始化容器执行失败)

核心特征

Pod 卡在 Init:Error 状态,kubectl describe pod 显示 Init container failed

根因分类与排查步骤

根因 排查命令 解决步骤
1. 初始化容器命令执行失败 1. 查看初始化容器日志
kubectl logs <pod-name> -c <init-container-name>

2. 查看初始化容器配置kubectl get pod <pod-name> -o yaml grep -A 10 initContainers
1. 修正初始化容器的 command/args 配置
2. 确保初始化容器内有执行命令的依赖工具(如 curl/nc
2. 初始化容器等待超时(如依赖服务未启动) 1. 查看初始化容器等待逻辑
kubectl get pod <pod-name> -o yaml grep -A 5 command(initContainers 部分)

2. 测试依赖服务连通性
kubectl exec -it <pod-name> -c <init-container-name> -- nc -z <service-name> <port>
1. 增加初始化容器的等待超时时间
2. 确保依赖服务已正常部署并可访问
3. 初始化容器资源不足 1. 查看初始化容器资源配置
kubectl get pod <pod-name> -o yaml grep -A 10 resources(initContainers 部分)
为初始化容器增加 resources.requests/limits 配置

异常 5:Pod 状态 Terminating无法删除(优雅终止卡住)

核心特征

Pod 长时间处于 Terminating 状态,执行 kubectl delete pod 无响应。

根因分类与排查步骤

根因 排查命令 解决步骤
1. PreStop 钩子执行超时 1. 查看 PreStop 钩子配置
kubectl get pod <pod-name> -o yaml grep -A 10 preStop

2. 查看 kubelet 日志
journalctl -u kubelet -f grep <pod-name>
1. 优化 PreStop 钩子逻辑,缩短执行时间
2. 增大 terminationGracePeriodSeconds(默认 30s)
2. 容器进程无法被 SIGTERM 终止(如进程忽略信号) 1. 查看容器进程状态
kubectl exec -it <pod-name> -- ps aux

2. 手动发送 SIGTERM 信号测试kubectl exec -it <pod-name> -- kill -15 <pid>
1. 修复应用程序,确保能处理 SIGTERM 信号并优雅退出2. 强制删除 Pod(kubectl delete pod <pod-name> --force --grace-period=0
3. 存储卷卸载失败(如 NFS 挂载卡住) 1. 查看 Pod 卷挂载配置kubectl describe pod <pod-name> grep -A 20 Volumes

2. 查看节点卷挂载状态
mount grep <pod-uid>(节点执行)
1. 手动在节点卸载卡住的卷(umount -f <mount-path>
2. 修复存储服务故障(如 NFS 服务器恢复)

异常 6:Pod 状态 Unknown(节点失联)

核心特征

Pod 状态为 Unknownkubectl describe pod 显示 Node <node-name> not ready

根因分类与排查步骤

根因 排查命令 解决步骤
1. 节点宕机 / 网络失联 1. 查看节点状态kubectl get nodes
2. 检查节点与集群网络连通性ping <api-server-ip>(节点执行)
1. 重启故障节点,恢复网络连接
2. 检查节点防火墙 / 安全组是否放行 K8s 端口(如 6443、10250)
2. kubelet 服务停止 / 故障 1. 查看节点 kubelet 状态systemctl status kubelet(节点执行)
2. 查看 kubelet 日志journalctl -u kubelet -f(节点执行)
1. 重启 kubelet 服务(systemctl restart kubelet
2. 修复 kubelet 配置错误(如 kubelet.conf 文件)
http://www.jsqmd.com/news/556369/

相关文章:

  • 树上查分模板
  • 在VMware里给OPNsense防火墙加个“监控探头”:手把手配置入侵检测(含网桥避坑)
  • 基于深度学习的yolo26算法的自动化流水线识别 药片缺陷识别数据集 药品缺失数据集 药片破损数据集第10620期
  • 保姆级教程:在Vue2老项目中优雅接入Cron组件(兼容Element UI)
  • 集团公司如何选择正规的号码认证服务供应商?子公司手机座机批量认证方案 - 企业服务推荐
  • 系统架构师英语考题必看:为什么你单词都认识,却总是选错?(附满分备考策略)
  • 城市开车GPS总飘?试试给惯性导航(INS)加个“车轮锁”:NHC/ODO约束原理通俗解读
  • 企业号码认证开通周期对比:哪家服务商能快速办理并上线服务? - 企业服务推荐
  • JS射线法实战:精准判断坐标点是否在多边形电子围栏内
  • FastAPI API版本控制:URI前缀的终极实现指南
  • FastAPI文档暗黑模式:CSS变量实现指南
  • Mycodo数据可视化实战:打造专业级仪表盘和实时图表
  • REFramework技术实战指南:问题解决与架构优化
  • 虚拟调试在智能制造中的关键作用与实践路径
  • 从数据到洞察:如何利用2024版建筑高度SHP数据,5步完成城市热岛效应初步分析
  • FOC算法中SIMULINK常用模块解析:从坐标变换到SVPWM(实践指南)
  • 3步解锁AI驱动的科学发现:AI-Scientist-v2全攻略
  • 嵌入式开发必备:rootfs.img镜像修改的5个常见问题与解决方案
  • Windows 11 + Ubuntu 20.04双系统安装避坑指南(附分区方案)
  • 旋转门压缩算法(SDT)在Go语言中的高效实现与性能优化
  • Axure RP 中文语言包:3分钟消除语言障碍,释放原型设计效率
  • ASP.NET API Versioning终极指南:5分钟快速上手API版本管理
  • 2026年程序员必看:AI Agent全面爆发,国产算力突围,这波技术红利别错过
  • [技术突破] camera-controls:重新定义3D交互体验
  • 打开软件就弹出d3dcompiler_43.dll丢失找不到 免费下载修复方法分享
  • CVPR/ICML/TMI顶会风向标:医学图像分割三大落地范式,从模型精调到临床闭环
  • 摩托罗拉88000架构:被遗忘的RISC架构的兴衰与启示
  • 智慧城市中的时空AI:从路网数据到拥堵预测的完整项目拆解
  • 实战指南:如何用Qdrant快速搭建一个支持实时更新的RAG系统(附代码示例)
  • Ensp与SecureCRT高效连接指南及常见回车空行问题排查