Prometheus 监控 Kube-state-metrics 终极实战:Kubernetes 对象状态可观测性全解析
Prometheus 监控 Kube-state-metrics 终极实战Kubernetes 对象状态可观测性全解析在 Kubernetes 集群中cAdvisor 告诉我们容器用了多少 CPU/内存而kube-state-metrics则回答“当前有多少个 Pod 处于 Running多少 Deployment 不可用节点是否就绪Job 是否成功”这类面向 Kubernetes 对象状态的问题。它监听 API Server将 Deployment、Pod、Node、DaemonSet、StatefulSet、Job、CronJob、PVC 等资源的期望与当前状态转化为 Prometheus 指标是构建 K8s 集群可观测性不可或缺的一环。本文将带你从部署、指标解读到生产告警彻底掌握基于 kube-state-metrics 的 K8s 状态监控。1. 为什么是 kube-state-metrics它与 cAdvisor 有何不同工具关注点指标示例cAdvisor容器资源使用CPU、内存、磁盘、网络container_cpu_usage_seconds_totalkube-state-metricsK8s 对象的状态和元数据kube_deployment_status_replicas_available两者完全互补cAdvisor 负责“用多少”kube-state-metrics 负责“有没有、对不对”。2. 部署 kube-state-metrics推荐使用官方 Helm Chart 或直接 YAML 部署。2.1 使用 Helm 部署最简单helm repoaddprometheus-community https://prometheus-community.github.io/helm-charts helminstallkube-state-metrics prometheus-community/kube-state-metrics\--namespacekube-system2.2 使用 Kubernetes Deployment Service生产常见可直接从官方仓库获取最新 manifestkubectl apply-fhttps://github.com/kubernetes/kube-state-metrics/releases/latest/download/kube-state-metrics.yaml这会创建 Deployment、ServiceAccount、ClusterRole需要读取集群资源、Service暴露端口 8080。默认监听在:8080/metrics端点。验证kubectl port-forward svc/kube-state-metrics8080:8080-nkube-systemcurlhttp://localhost:8080/metrics应看到大量以kube_开头的指标。3. 配置 Prometheus 抓取如果使用 Prometheus Operator通常会通过ServiceMonitor或PodMonitor自动发现。确保 Service 带有正确的标签例如 Helm 安装时自动配置。手动添加静态抓取配置scrape_configs:-job_name:kube-state-metricsscrape_interval:30sstatic_configs:-targets:[kube-state-metrics.kube-system.svc.cluster.local:8080]labels:cluster:prod-cluster如果 Prometheus 在集群外需通过 NodePort 或 LoadBalancer 暴露并配置 TLS 与认证。4. 核心监控指标与 PromQLkube-state-metrics 指标以kube_为前缀按资源类型分组标签包含namespace、deployment、node、pod等。4.1 Deployment 与 StatefulSet指标含义kube_deployment_status_replicas_available可用的副本数kube_deployment_status_replicas_desired期望副本数kube_deployment_status_replicas_updated已更新的副本数kube_statefulset_status_replicas_readyStatefulSet 就绪副本PromQL 示例Deployment 不可用可用副本小于期望kube_deployment_status_replicas_available kube_deployment_spec_replicas滚动更新停滞已更新副本不等于期望且可用副本不等于期望kube_deployment_status_replicas_updated ! kube_deployment_spec_replicas and kube_deployment_status_replicas_available ! kube_deployment_spec_replicas4.2 Pod 状态指标含义kube_pod_status_phasePod 当前阶段Pending0, Running1, Succeeded2, Failed3, Unknown4kube_pod_status_readyPod 是否就绪1Ready0Not Readykube_pod_container_status_restarts_total容器重启次数PromQL处于 CrashLoopBackOff 的 Pod 数量通过重启次数和状态组合increase(kube_pod_container_status_restarts_total[5m]) 0非 Running 且非 Succeeded 的 Podkube_pod_status_phase{phase!~Running|Succeeded} 0长时间未就绪的 Podkube_pod_status_ready 0 and kube_pod_status_phase 14.3 Node 状态指标含义kube_node_status_condition节点条件conditionReadystatustrue/false/unknownkube_node_spec_unschedulable节点是否已被 cordon不可调度kube_node_status_allocatable可分配资源CPU、内存PromQL节点 NotReadykube_node_status_condition{conditionReady,statustrue} ! 1节点被 cordonkube_node_spec_unschedulable 14.4 Job 与 CronJob指标含义kube_job_status_failedJob 失败数1失败kube_job_status_succeededJob 成功数kube_cronjob_spec_suspendCronJob 是否被挂起告警Job 失败kube_job_status_failed{job_name~.*} 04.5 PVC 与存储指标含义kube_persistentvolumeclaim_status_phasePVC 状态Bound0, Pending1, Lost2kube_persistentvolume_status_phasePV 状态告警未绑定的 PVCkube_persistentvolumeclaim_status_phase{phasePending} 04.6 资源配额指标含义kube_resourcequotaResourceQuota 已用/硬限制可用于容量规划。5. Grafana 仪表盘推荐Kubernetes Cluster (Prometheus)Dashboard ID13332结合 kube-state-metrics 与 cAdvisor提供 Deployment、Pod、Node、资源配额的全面视图。K8s Object StatesID13824更侧重对象状态。Kubernetes kube-state-metricsID10856经典独立仪表板。导入后选择数据源并将cluster变量与集群标签绑定。6. 告警规则实战groups:-name:kubernetes_state_alertsrules:-alert:K8sNodeNotReadyexpr:kube_node_status_condition{conditionReady,statustrue}!1for:5mlabels:severity:criticalannotations:summary:节点 {{ $labels.node }} 处于 NotReady 状态超过 5 分钟-alert:K8sDeploymentUnavailableexpr:kube_deployment_status_replicas_available kube_deployment_spec_replicasfor:5mlabels:severity:criticalannotations:summary:Deployment {{ $labels.namespace }}/{{ $labels.deployment }} 可用副本不足-alert:K8sPodCrashLoopBackOffexpr:increase(kube_pod_container_status_restarts_total[10m])3labels:severity:warningannotations:summary:Pod {{ $labels.namespace }}/{{ $labels.pod }} 中容器频繁重启-alert:K8sPodNotReadyexpr:kube_pod_status_ready 0 and kube_pod_status_phase 1for:10mlabels:severity:warningannotations:summary:Pod {{ $labels.namespace }}/{{ $labels.pod }} 处于 Running 但未就绪-alert:K8sJobFailedexpr:kube_job_status_failed0labels:severity:criticalannotations:summary:Job {{ $labels.namespace }}/{{ $labels.job_name }} 执行失败-alert:K8sPersistentVolumeClaimPendingexpr:kube_persistentvolumeclaim_status_phase{phasePending}0for:30mlabels:severity:warningannotations:summary:PVC {{ $labels.namespace }}/{{ $labels.persistentvolumeclaim }} 长期处于 Pending-alert:K8sCronJobSuspendedexpr:kube_cronjob_spec_suspend 1labels:severity:infoannotations:summary:CronJob {{ $labels.namespace }}/{{ $labels.cronjob }} 已被挂起7. 进阶多集群、安全与性能7.1 多集群监控每个集群内部署 kube-state-metricsPrometheus 使用联邦模式或 Thanos/Cortex 进行聚合通过在抓取时注入cluster标签区分集群。7.2 指标基数控制kube-state-metrics 会为每个 Pod、每个容器暴露指标在大规模集群10k Pods中指标数量可能爆炸。可以通过以下方式缓解使用--metric-allowlist或--metric-denylist限制暴露的指标。在 Prometheus 抓取侧使用metric_relabel_configs丢弃不需要的标签或指标。部署多个 kube-state-metrics 实例每个负责特定资源如单独部署一个只收集节点指标的实例。7.3 RBAC 与安全kube-state-metrics 需要读取集群范围内的资源务必使用只读的 ClusterRole切勿授予写权限。在私有环境中Service 端口通过内网访问即可避免暴露到公网。8. 总结Kube-state-metrics 是 Kubernetes 可观测性三大基石之一另外两个是 cAdvisor 和 kube-event。它让集群中每一个 Deployment 的副本、每一个 Node 的健康、每一个 Job 的成败都成为可查询、可告警的时序指标。结合 Prometheus 和 Alertmanager你可以在集群状态偏离预期时第一时间收到通知真正做到 “GitOps 期望 vs 集群实际” 的持续校验。部署它让你的 K8s 集群不再是黑盒而是一张透明的资源地图。

相关新闻

如何用GitHub Actions实现股票分析自动化:零成本搭建智能投资助手

如何用GitHub Actions实现股票分析自动化:零成本搭建智能投资助手

如何用GitHub Actions实现股票分析自动化:零成本搭建智能投资助手 你是否曾想过,每天早上醒来就能收到一份专业的股票分析报告?或者希望投资决策不再依赖主观判断,而是由AI智能分析系统为你提供数据支持?今天&#xf…

2026/7/24 21:00:42阅读更多 →
MapGIS Client for JavaScript坐标系的几何定义,转换

MapGIS Client for JavaScript坐标系的几何定义,转换

前言 在Cesium三维地球开发中,常常会涉及到坐标系的概念。Cesium中的坐标系包含两类:经纬度和笛卡尔坐标系,正确理解这两类坐标系的几何含义和转换,对于开发至关重要,本文将介绍这两种坐标系的几何定义,转换…

2026/7/24 21:00:42阅读更多 →
WaveTools:鸣潮游戏性能调校与数据分析的.NET WinUI解决方案

WaveTools:鸣潮游戏性能调校与数据分析的.NET WinUI解决方案

WaveTools:鸣潮游戏性能调校与数据分析的.NET WinUI解决方案 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 在当今游戏体验日益重要的时代,如何让《鸣潮》这样的高画质游戏在不同硬…

2026/7/24 21:00:42阅读更多 →
LLCOM串口工具使用记录

LLCOM串口工具使用记录

--循环发送快捷发送区数据---例子一 --发送数据中间间隔时间(单位ms) local sendDelay 1000--待发送数据的顺序 local sendList {1,2,4,1,6,8} --你也可以用下面的代码批量生成 --从2号发到15号数据 --[[ for i2,15 dotable.insert(sendList, i) end ]…

2026/7/24 22:16:54阅读更多 →
我们在 Workbuddy 做了个 Skill,10 分钟摸透一个行业!

我们在 Workbuddy 做了个 Skill,10 分钟摸透一个行业!

Workbuddy 的技能市场(SkillHub)已经上架了上万个 Skill,从写文档到做 PPT 到分析数据,覆盖了不少场景。但我们在里面翻了一遍之后,发现一个很实际的问题:大多数 Skill 都是通用型的,装上能用&a…

2026/7/24 22:16:54阅读更多 →
终极办公效率神器:QuickLook OfficeViewer Native 快速预览插件完整指南

终极办公效率神器:QuickLook OfficeViewer Native 快速预览插件完整指南

终极办公效率神器:QuickLook OfficeViewer Native 快速预览插件完整指南 【免费下载链接】QuickLook.Plugin.OfficeViewer-Native View Word, Excel, and PowerPoint files with MS Office and WPS Office components. 项目地址: https://gitcode.com/gh_mirrors/…

2026/7/24 22:16:54阅读更多 →
QMK Toolbox终极指南:3分钟解锁键盘固件刷写新纪元

QMK Toolbox终极指南:3分钟解锁键盘固件刷写新纪元

QMK Toolbox终极指南:3分钟解锁键盘固件刷写新纪元 【免费下载链接】qmk_toolbox A Toolbox companion for QMK Firmware 项目地址: https://gitcode.com/gh_mirrors/qm/qmk_toolbox 在机械键盘个性化定制的世界里,QMK Toolbox正悄然重构着固件刷…

2026/7/24 22:16:54阅读更多 →
AI生成的表格如何导出 AI导出鸭3秒搞定你

AI生成的表格如何导出 AI导出鸭3秒搞定你

结构化数据突围:AI生成表格的四种导出方案工程测评 一、痛点:当AI生成表格遭遇“格式黑洞” 在AI辅助内容生产成为常态的今天,一个长期被低估的技术难题正在浮出水面:表格导出后的结构崩塌。 实测中,直接复制Claude、G…

2026/7/24 22:16:54阅读更多 →
Beyond Compare 5深度密钥生成技术:从RSA算法到实战应用

Beyond Compare 5深度密钥生成技术:从RSA算法到实战应用

Beyond Compare 5深度密钥生成技术:从RSA算法到实战应用 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 在文件比较领域,Beyond Compare 5无疑是专业开发者的首选工具&am…

2026/7/24 22:14:54阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 0:58:53阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 0:58:53阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 0:58:53阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:06阅读更多 →
【LeetCode 54】螺旋矩阵

【LeetCode 54】螺旋矩阵

问题描述: 解法: 1、模拟(参考自【LeetCode 54】螺旋矩阵-CSDN博客) int *spiralOrder(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) {static const int dirs[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, …

2026/7/24 0:00:06阅读更多 →
2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

知春路不相信模型领先今年WAIC大会,昔日AI六小龙来了五家,分别是Kimi、阶跃星辰、Minimax、百川智能、零一万物。连放弃基模的百川和零一万物都来了,唯一缺席的竟是近几个月来风光无限的智谱。(DeepSeek一直不参加)WAI…

2026/7/24 0:00:06阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/23 22:58:43阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/24 19:00:40阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/24 19:00:40阅读更多 →