Kubernetes HPA 指标显示 unknown 且不扩容:从指标链路到计算条件的排查实践
Kubernetes HPA 指标显示 <unknown> 且不扩容:从指标链路到计算条件的排查实践 服务流量已经升高,Pod 的 CPU 也明显繁忙,但 kubectl get hpa 中的 TARGETS 长时间显示 <unknown>/60%,副本数始终不变。这个现象不能直接归因于 HPA 控制器故障:资源指标要
Tag
包含这个标签的文章。
Kubernetes HPA 指标显示 <unknown> 且不扩容:从指标链路到计算条件的排查实践 服务流量已经升高,Pod 的 CPU 也明显繁忙,但 kubectl get hpa 中的 TARGETS 长时间显示 <unknown>/60%,副本数始终不变。这个现象不能直接归因于 HPA 控制器故障:资源指标要
适用场景 这篇文章适合已经使用 Prometheus 和 Alertmanager,但值班群里经常出现同一告警在几分钟内“触发—恢复—再次触发”的团队。典型场景包括: 接口错误率在阈值附近上下波动; 抓取偶发失败,表达式短暂返回空向量; 应用滚动发布后计数器重置,瞬时比率失真; 规则计算过慢或远端数据到达较晚,评估结果
适用场景 本文适用于在 Kubernetes 中运行数据库备份、账单汇总、定时同步、报表生成等周期任务,并遇到以下问题的团队: 上一次任务尚未结束,下一次任务已经启动,两个 Pod 同时修改同一批数据; 控制面短暂不可用或 CronJob 暂停后恢复,任务突然补跑; 配置了 concurrencyPolicy: For
适用场景 本文适用于 Prometheus 通过 remote_write 把指标发送到 Thanos Receive、Grafana Mimir、VictoriaMetrics 或其他远端存储的场景。典型问题是本地抓取仍然正常,Prometheus 查询近期数据也没有明显异常,但远端查询、告警或长期存储中的数据逐渐落
适用场景 本文适用于使用 Redis Stream 消费组承载异步任务、事件通知或轻量消息队列的系统。典型架构是生产者通过 XADD 写入 Stream,多个消费者用 XREADGROUP 拉取消息,业务成功后再执行 XACK。 当某个消费者在处理期间崩溃、被强制重启或网络中断时,已经投递但尚未确认的消息不会重新出现在
适用场景 一个常驻的 Python API、消费者或定时任务进程,刚启动时只占用几百 MB,运行数小时后内存持续上涨。请求结束后内存没有明显回落,重启可以暂时恢复,但过一段时间又出现同样问题。监控最终触发容器 OOMKilled,或节点开始频繁交换内存。 本文针对“对象仍被 Python 引用”的增长场景,演示如何用标
适用场景 本文适用于通过 Kubernetes Deployment 滚动发布的 HTTP 服务。系统平时运行正常,但每次发布、缩容或节点驱逐时都会出现少量 502、连接重置或上游提前关闭;错误只持续几秒,Pod 日志里又看不到明显异常。 这类问题通常不是新版本启动失败,而是旧 Pod 的进程退出、EndpointSl
适用场景 本文适用于 MySQL 8.0 使用 InnoDB 的生产环境。典型场景是 SQL 和索引近期都没有修改,但一次批量导入、归档删除或数据分布变化后,原本几十毫秒的查询突然变成数秒;EXPLAIN 显示优化器改走了低选择性索引、错误的连接顺序,甚至全表扫描。 这类问题容易被误判为“数据库负载太高”。真正需要回答
适用场景 本文适用于更新、删除频繁的订单、任务、消息、审计记录等 PostgreSQL 表。典型现象是:业务已经清理大量历史数据,但表文件没有缩小;索引扫描和备份越来越慢;监控中的磁盘使用持续上涨;执行 VACUUM 后空间仍未归还操作系统。 本文重点解决三个问题:如何确认膨胀来自死元组,为什么 autovacuum
适用场景 本文适用于 Prometheus 根据错误率、延迟、资源使用率等指标触发告警,并通过 Alertmanager 发送通知的场景。典型问题是:指标在阈值附近波动,告警几分钟内反复触发和恢复;短暂采集缺口被误判为恢复;值班人员收到大量重复通知,却难以判断故障是否真正结束。 目标不是简单地“把告警调迟”,而是分别处