0

0

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

舞夢輝影

舞夢輝影

发布时间:2026-01-01 14:00:17

|

610人浏览过

|

来源于php中文网

原创

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

linuxkubernetes故障排查教程_pod异常与网络问题

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)。

Pi智能演示文档
Pi智能演示文档

领先的AI PPT生成工具

下载

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

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 规则。

相关专题

更多
resource是什么文件
resource是什么文件

Resource文件是一种特殊类型的文件,它通常用于存储应用程序或操作系统中的各种资源信息。它们在应用程序开发中起着关键作用,并在跨平台开发和国际化方面提供支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

141

2023.12.20

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

379

2023.09.04

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

423

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

172

2023.10.30

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.12.07

Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

9

2025.12.22

Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

9

2025.12.22

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

1

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.3万人学习

Git 教程
Git 教程

共21课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号