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

k8s 部署服务常见错误原因

健康检查报错

Client.Timeout exceeded while awaiting headers

我们可以通过 kubectl describe pod <pod-name> 命令来查看 Pod 详情(包括 Probe 配置、事件、容器状态、重启次数等关键信息)。

如果采用的健康检查方式是 http,事件(event)部分可能会记录以下错误信息:

Liveness probe failed: Get "http://:...": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

该错误表明 k8s 在发起健康检查时,服务未在超时时间内返回响应。

可能原因:

  • 资源不够用,服务器压力大,导致响应变慢
  • 网络波动

问题排查思路:

  • 手动调用健康检查接口,并观察响应时间是否经常超过当前的 timeoutSeconds。
    • 在 Pod 内: kubectl exec -it <pod-name> -- curl -v http://localhost:<health-check-port><health-check-path>
    • 在节点上 (获取 Pod IP): curl -v http://<pod-ip>:<health-check-port><health-check-path>
  • 查看应用日志: kubectl logs [–previous] - 查找应用启动、运行期间,特别是健康检查端点被访问时的错误、警告或延迟信息。

解决思路:

  • 调整 Probe 参数 (临时缓解/验证): 这是最快见效的方法,尤其是增大 timeoutSeconds (如设为 5, 10)
  • 检查资源: 使用 kubectl top, kubectl describe node 检查 Pod 和节点的 CPU/内存使用情况。调整资源 requests/limits。
  • 监控应用性能: 结合 APM 工具或应用内置指标,分析健康检查端点慢的根本原因。优化应用性能或简化健康检查逻辑。

Liveness/Readiness prob failed:HTTP probe failed with statuscode:503

Spring Boot 应用的健康检查接口一般为 /actuator/health。

其健康检查的流程如下:
在这里插入图片描述
返回的健康状态类型:

  • UP:所有依赖正常 (HTTP 200)
  • DOWN:关键依赖故障 (HTTP 503)
  • OUT_OF_SERVICE:维护模式 (HTTP 503)
  • UNKNOWN:未知状态

如果出现 503,则说明其依赖的服务出现了故障,或自身服务器过载或处于主动维护状态,无法处理请求。

connection reset by peer

比如:

readiness probe failed:read tcp 169.254.1.1:38579->21.79.199.85:9180:read: connection reset by peer

这个错误表明 Kubernetes 探针在建立 TCP 连接后,被对方强制中断。

在这里插入图片描述
关键点:

  • RST (Reset) 包:目标服务器主动终止了连接
  • 169.254.1.1:Kubernetes 节点内部使用的链路本地地址
  • 21.79.199.85:9180:目标服务地址(可能是您集群内的服务或外部服务)

可能原因是:服务突然崩溃

connection refused

比如:

readiness probe failed:read tcp 169.254.1.1:38579->21.79.199.85:9180:read: connection refused

该错误说明客户端在尝试与服务端建立 tcp 连接时就已经失败了。

该问题一般是出现在容器内服务的启动阶段。此时出现该错误很正常,因为一般会将 readiness probe 的配置比较激进,容易在服务启动阶段就检测不通过。但由于不影响服务启动后的运行,因此不必过多关注。

更多 rediness probe 的介绍可以见《livenessProbe 和 readinessProbe 最佳实践》。

与 connect reset by peer 的区别:

特征connection refusedconnection reset by peer
发生阶段三次握手前连接建立后
TCP 状态SYN_SENT → 无响应ESTABLISHED → 异常终止
根本原因服务端无监听连接被强制关闭
错误类型主动拒绝连接异常终止连接
常见场景服务未启动/端口错误服务崩溃
排查重点服务启动是否正常服务稳定性
http://www.xdnf.cn/news/978445.html

相关文章:

  • Windows 安装 Maven
  • 1Panel 部署 OpenResty + Redis 实现 IP 动态封禁教程
  • 软考 系统架构设计师系列知识点之杂项集萃(87)
  • Visual Studio 2022 运行提示:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
  • jsoncpp ubuntu编译问题
  • Proof of Talk专访CertiK联创顾荣辉:全周期安全方案护航Web3生态
  • Cilium动手实验室: 精通之旅---22.Cilium Traffic Optimization
  • OA协同平台有哪些功能?OA协同办公软件平台如何选择?
  • 腾讯开源 ovCompose 跨平台框架:实现一次跨三端(Android/iOS/鸿蒙)
  • 网络请求与本地存储:Axios 与 AsyncStorage 在 React Native 中的应用
  • 升级 Ubuntu Linux 内核的几种不同方法
  • 同步与异步:软件工程中的时空艺术与实践智慧-以蜻蜓hr人才系统举例-优雅草卓伊凡
  • 二刷苍穹外卖 day02
  • 2023蓝桥杯C/C++ B组国赛
  • PyTorch:让深度学习飞入寻常百姓家(从零开始玩转张量与神经网络!)
  • 开疆智能ModbusTCP转Canopen网关连接汇川PLC配置案例
  • 【android bluetooth 框架分析 04】【bt-framework 层详解 4】【AdapterState介绍】
  • 25-Oracle 23ai DBMS_SEARCH — Ubiquitous Search(无处不在的搜索)
  • Qt Connections详解:信号与槽的核心机制
  • spring boot2 +java-jwt轻量实现jwt
  • AI中间件,构建大模型应用的标准化接入枢纽
  • 文献管理软件EndNote下载与安装教程(详细教程)2025最新版详细图文安装教程
  • 2025年- H80-Lc188--198.打家劫舍(动态规划)--Java版
  • 前端基础知识ES6系列 - 03(数组新增了哪些扩展)
  • SCADA|信创KingSCADA4.0与KingSCADA3.8的几点不同
  • 基于微信小程序的天气预报app
  • 一键批量修改XML标签名称:告别手工修改,高效管理标注数据
  • LangChain文档加载器自动选择器:支持多种文件格式的统一加载方法
  • jupyter中的checkpoints为空/打不开解决办法
  • [Java 基础]Math 类