欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > K8s故障排查手册:从Pod崩溃到网络不通

K8s故障排查手册:从Pod崩溃到网络不通

2025/4/2 20:57:29 来源:https://blog.csdn.net/cainiao080605/article/details/146423693  浏览:    关键词:K8s故障排查手册:从Pod崩溃到网络不通

本文基于数百个真实生产环境案例,系统化梳理Kubernetes集群的故障排查方法论。涵盖Pod生命周期异常、服务发现失效、存储卷挂载失败、网络策略冲突等核心故障场景,结合Prometheus监控指标、eBPF深度追踪、CNI插件分析等技术手段,为企业运维团队提供从现象定位到根因分析的全链路解决方案。


第一章 Pod异常状态全解析

1.1 CrashLoopBackOff故障树

现象优先排查方向关键诊断命令
容器立即退出启动命令/入口点错误kubectl describe pod
运行5分钟后崩溃内存泄漏/资源超限kubectl logs --previous
随机性崩溃就绪探针配置错误kubectl exec -it debug-tool

诊断流程

  1. 检查Events中的Warning事件
  2. 分析前一次运行的容器日志
  3. 使用临时调试容器进行现场检查

第二章 网络不通场景深度排查

2.1 服务不可达分类处置

2.1.1 跨Namespace访问失败
  • 检查项清单
    • NetworkPolicy隔离策略
    • 服务DNS名称解析(nslookup <service>
    • kube-proxy的iptables/ipvs规则
2.1.2 NodePort无法访问
  • 排查路径
    1. 节点防火墙规则(30000-32767端口)
    2. kube-proxy服务状态
    3. 负载均衡器健康检查配置

2.2 CNI插件异常处理

2.2.1 Calico网络故障
  • 典型场景
    • BGP对等体连接中断
    • IP地址池枯竭
    • Felix进程CPU飙高
2.2.2 Flannel网络抖动
  • 优化方案
    • 更换后端VXLAN为host-gw模式
    • 调整etcd的heartbeat间隔

第三章 存储系统故障排查

3.1 持久化卷挂载失败

3.1.1 常见错误类型
错误信息关联组件解决方案
timeout waiting for volumeCSI驱动检查node-driver-registrar
failed to get secretKubernetes API更新StorageClass密钥
multi-attach error云平台限制启用ReadWriteMany模式

3.2 存储性能问题溯源

3.2.1 IOPS下降分析
  1. 使用iostat -x 1定位磁盘瓶颈
  2. 检查CSI插件的volume调节参数
  3. 评估文件系统(ext4/xfs)的碎片情况
3.2.2 云盘突发性能耗尽
  • AWS EBS优化方案
    • 启用Provisioned IOPS
    • 调整GP3卷的baseline性能

第四章 节点级故障处理

4.1 NotReady状态根因分析

4.1.1 核心检查项
  • kubelet服务状态systemctl status kubelet
  • 证书过期验证openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -enddate
  • 磁盘压力检测df -h /var/lib/kubelet
4.1.2 资源耗尽场景
  • OOMKiller记录dmesg | grep -i kill
  • PID限制检查cat /sys/fs/cgroup/pids/kubepods.slice/*/pids.current

4.2 内核参数调优

4.2.1 网络连接调优
 

text复制

net.core.somaxconn = 32768 net.ipv4.tcp_tw_reuse = 1

4.2.2 文件系统优化
  • inotify限制
    fs.inotify.max_user_watches = 1048576

第五章 集群组件异常处置

5.1 Control Plane故障

5.1.1 API Server失联
  • 诊断步骤
    1. 检查kube-apiserver Pod状态
    2. 验证etcd集群健康度(etcdctl endpoint health
    3. 审计防火墙规则(6443端口)
5.1.2 控制器管理器死锁
  • 典型表现
    Deployment更新无响应
  • 恢复方案
    重启kube-controller-manager容器

5.2 云原生中间件问题

5.2.1 Ingress访问异常
  • 分层排查
    1. Ingress Controller日志
    2. 后端Service Endpoints状态
    3. 证书管理器(如cert-manager)事件
5.2.2 Prometheus监控中断
  • 存储问题处理
    调整TSDB的保留策略
  • 资源限制调整
    增加Thanos Sidecar内存配额

第六章 高级诊断技术

6.1 eBPF深度追踪

6.1.1 网络丢包分析
 

text复制

# 跟踪calico接口丢包 bpftrace -e 'tracepoint:net:net_dev_queue { if (args->name ~ "cali*") { @[args->name] = count(); }}'

6.1.2 系统调用追踪
  • 定位文件描述符泄漏
    bcc工具包中的filetop

6.2 性能调优案例

6.2.1 容器启动缓慢
  • 优化方向
    1. 并行镜像拉取(serializeImagePulls: false
    2. 使用CRI-O替代Docker
6.2.2 调度延迟过高
  • 改进措施
    1. 设置合适的Pod优先级
    2. 启用Scheduler Framework的并发优化

附录

附录A 常用诊断命令速查

场景命令组合输出解析要点
Pod状态检查kubectl get pods -owideSTATUS/READY/NODE
服务端点验证kubectl get endpoints目标IP端口匹配
网络策略审计kubectl describe networkpolicyIngress/Egress规则

附录B 故障模拟训练方案

故障类型模拟命令预期影响
节点网络隔离ifconfig eth0 downNodeNotReady
DNS服务中断iptables -A OUTPUT -p udp --dport 53 -j DROP域名解析失败
存储卷卸载umount /var/lib/kubelet/podsVolumeMount失败

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词