LinuxKubernetes故障排查教程_Pod异常与网络问题

发布时间 - 2026-01-01 00:00:00    点击率:
Pod异常状态需分层排查:先用kubectl describe查看状态与Events,再查日志和exec调试,接着验证节点资源与调度约束,最后逐层检查CNI、DNS及Service网络连通性。

Pod 一直处于 Pending、CrashLoopBackOff 或 NotReady 状态,通常不是单一原因导致,而是资源、配置、镜像、节点或网络中某一个环节出了问题。快速定位的关键是分层检查:先看 Pod 自身状态和事件,再查容器日志,接着验证节点资源与调度约束,最后聚焦网络连通性与 CNI 插件行为。

看 Pod 状态和 Events 是第一反应

运行 kubectl describe pod -n ,重点关注两块内容:

  • Conditions:比如 Initialized=False 可能是 Init 容器失败;Ready=False 说明主容器没通过 readiness probe;ContainersReady=False 表示至少一个容器未就绪
  • Events(最实用):常见提示如 FailedScheduling(资源不足/污点不匹配)、ImagePullBackOff(镜像名错/私有仓库没 secret)、FailedMount(PV/PVC 绑定失败或权限问题)

如果 Events 里出现 NodeAffinityTaints 相关拒绝信息,要同步检查节点的 taint 和 Pod 的 toleration 配置是否匹配。

查容器日志和 exec 进去诊断

即使 Pod 处于 CrashLoopBackOff,只要它启动过,就能拿到上一次崩溃前的日志:

  • kubectl logs -n --previous 查上一轮容器输出
  • kubectl logs -n -c 指定多容器中的某一个
  • 如果容器还能短暂运行,用 kubectl exec -it -n -- sh 进入调试(注意:有些精简镜像不含 sh,可试 ash 或 /bin/bash)

进容器后优先检查:配置文件路径是否存在、环境变量是否注入正确、依赖服务 DNS 是否能解析(nslookup kubernetes.default.svc.cluster.local)、端口是否被占用(netstat -tuln)。

确认节点资源与调度是否正常

Pod 卡在 Pending,大概率是调度器找不到合适节点。执行以下命令交叉验证:

  • kubectl get nodes -o wide 看节点是否 Ready,资源(CPU/Mem)是否充足
  • kubectl top nodes 查实时资源使用率(需 metrics-server 已部署)
  • kubectl get events --sort-by=.lastTimestamp | tail -20 找集群级调度失败事件
  • 检查 Pod 的 resource requests 是否远超节点可用容量,或设置了 nodeSelector 但没有节点打对应 label

临时测试可删掉 resource request/limit 或修改 nodeSelector,看 Pod 是否能成功调度——这能帮你快速隔离是策略问题还是资源问题。

网络不通?从底层 CNI 到 Service 逐层验证

Pod 之间 ping 不通、无法访问 Service、DNS 解析失败,按这个顺序排查:

  • Pod IP 层通信:在源 Pod 中 ping 。失败说明 CNI 插件未正确配置(如 calico/node 未运行、flannel 启动失败、kube-proxy 异常)
  • DNS 解析nslookup kubernetes.default.svc.cluster.local。失败先查 CoreDNS Pod 是否 Running,再看其日志(kubectl logs -n kube-system deployment/coredns),并确认 kubelet 的 --cluster-dns 参数指向正确地址
  • Service 访问:用 ClusterIP + port curl,同时查 kubectl get endpoints 确认后端 Pod 地址已同步;再查 iptables/ipvs 规则是否生成(kubectl get svc -o wide 对比 endpoint IPs 是否一致)

如果所有 Pod 都无法访问外网,检查节点 host 上的 iptables FORWARD 链是否被 DROP,以及 CNI 插件是否配置了正确的 masquerade 规则。


# linux  # node  # 端口  # 后端  # curl  # ai  # proxy  # 环境变量  # dns  # 配置文件  # kubernetes  # 网络问题  # bash  # Resource  # sort 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  EditPlus中的正则表达式实战(6)  北京网站制作公司哪家好一点,北京租房网站有哪些?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  如何在 React 中条件性地遍历数组并渲染元素  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  香港服务器网站卡顿?如何解决网络延迟与负载问题?  如何在阿里云域名上完成建站全流程?  Laravel中的Facade(门面)到底是什么原理  Laravel如何使用Collections进行数据处理?(实用方法示例)  Laravel如何实现多对多模型关联?(Eloquent教程)  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  浅述节点的创建及常见功能的实现  如何用腾讯建站主机快速创建免费网站?  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  如何用低价快速搭建高质量网站?  如何确认建站备案号应放置的具体位置?  Android实现代码画虚线边框背景效果  如何快速配置高效服务器建站软件?  iOS发送验证码倒计时应用  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  Laravel如何升级到最新版本?(升级指南和步骤)  如何在橙子建站中快速调整背景颜色?  中山网站推广排名,中山信息港登录入口?  Laravel如何记录自定义日志?(Log频道配置)  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  如何用IIS7快速搭建并优化网站站点?  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何实现javascript表单验证_正则表达式有哪些实用技巧  如何在建站主机中优化服务器配置?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  JavaScript如何实现类型判断_typeof和instanceof有什么区别  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  微信小程序 闭包写法详细介绍  Laravel Fortify是什么,和Jetstream有什么关系  如何用已有域名快速搭建网站?  非常酷的网站设计制作软件,酷培ai教育官方网站?  linux top下的 minerd 木马清除方法  如何快速辨别茅台真假?关键步骤解析  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  Laravel如何处理和验证JSON类型的数据库字段  湖南网站制作公司,湖南上善若水科技有限公司做什么的?