k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标

k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标

文章目录

  • k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标
  • 一、Metrics Server简介
  • 二、kube-state-metrics实战部署
    • 1. 创建RBAC(kube-state-metrics-rbac.yaml)
    • 2. 创建Service(kube-state-metrics-svc.yaml)
    • 3. 创建Deployment(kube-state-metrics-deploy.yaml)
    • 4. 部署所有资源
  • 总结


随着容器化和微服务架构的不断发展,系统的复杂性与日俱增,构建一套完善的监控与资源管理体系已成为保障系统稳定运行的关键。在前几篇文章中,我们已经介绍了如何部署 Prometheus、Node Exporter、Grafana 以及 Alertmanager,并通过钉钉 Webhook 实现了监控告警的闭环。

在本篇补充文章中,我们将部署 Kubernetes 官方提供的资源对象状态采集组件 —— kube-state-metrics。它通过访问 API Server,实时导出 Pod、Deployment、StatefulSet、PVC 等 Kubernetes 对象的详细状态指标,为 Prometheus 提供更丰富的监控数据支持,帮助我们全面掌握集群运行状态、资源对象的变化情况,并为告警配置和可视化展示打下基础。

一、Metrics Server简介

kube-state-metrics 是 Kubernetes 官方维护的 Exporter,专门用于收集集群中各类资源对象的状态信息(如 Deployment 副本状态、Pod 准备情况、PVC 是否绑定等),并以 Prometheus 支持的格式对外暴露。
它与 Metrics Server 的区别在于:

项目kube-state-metricsMetrics Server
指标类型对象状态指标资源使用率指标
示例指标Deployment 副本数、Pod 状态、PVC 状态等Pod/Node 的 CPU、内存使用率
数据持久化否(需 Prometheus 拉取)
适用场景状态监控、结构化分析、告警配置实时资源监控、HPA 自动扩缩容

Metrics Server 不同,kube-state-metrics 不提供节点或 Pod 的实时资源使用数据(如 CPU、内存),而是专注于资源对象的状态变更,例如:

  • 某个 Pod 是否处于 Ready 状态
  • Deployment 的实际副本数是否满足期望
  • PVC 是否成功绑定
  • Node 是否处于 NotReady 状态

部署 kube-state-metrics 后,能够实现以下功能:

  • 为 Prometheus 提供更丰富的集群状态指标来源
  • 辅助构建针对 K8s 对象状态的 Grafana 可视化面板
  • 支持告警规则配置,如 “某 Deployment 副本不足” 或 “某 Node 不可用”

⚠️ 需要注意的是,kube-state-metrics 只是将数据导出为指标,它本身不存储数据,需要配合 Prometheus 进行拉取、存储和查询。

g.cn/direct/31da7451a2e34431b7ce7606e6722ebf.png)

二、kube-state-metrics实战部署

1. 创建RBAC(kube-state-metrics-rbac.yaml)

为 kube-state-metrics 配置必要的权限,允许其访问集群中资源对象的状态信息

---
apiVersion: v1
kind: ServiceAccount
metadata:name: kube-state-metricsnamespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: kube-state-metrics
rules:
- apiGroups: [""]resources: ["nodes", "pods", "services", "resourcequotas", "replicationcontrollers", "limitranges", "persistentvolumeclaims", "persistentvolumes", "namespaces", "endpoints", "secrets"]verbs: ["list", "watch"]
- apiGroups: ["extensions"]resources: ["daemonsets", "deployments", "replicasets"]verbs: ["list", "watch"]
- apiGroups: ["apps"]resources: ["statefulsets"]verbs: ["list", "watch"]
- apiGroups: ["batch"]resources: ["cronjobs", "jobs"]verbs: ["list", "watch"]
- apiGroups: ["autoscaling"]resources: ["horizontalpodautoscalers"]verbs: ["list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: kube-state-metrics
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: kube-state-metrics
subjects:
- kind: ServiceAccountname: kube-state-metricsnamespace: kube-system

2. 创建Service(kube-state-metrics-svc.yaml)

暴露 kube-state-metrics 服务端口,并添加 Prometheus 自动抓取注解

apiVersion: v1
kind: Service
metadata:annotations:prometheus.io/scrape: 'true'  # 开启 Prometheus 抓取name: kube-state-metricsnamespace: kube-systemlabels:app: kube-state-metrics
spec:ports:- name: kube-state-metricsport: 8080protocol: TCPselector:app: kube-state-metrics

3. 创建Deployment(kube-state-metrics-deploy.yaml)

部署 kube-state-metrics,使用前面创建的 ServiceAccount

apiVersion: apps/v1
kind: Deployment
metadata:name: kube-state-metricsnamespace: kube-system
spec:replicas: 1selector:matchLabels:app: kube-state-metricstemplate:metadata:labels:app: kube-state-metricsspec:serviceAccountName: kube-state-metricscontainers:- name: kube-state-metricsimage: harbor.local/k8s/kube-state-metrics:2.7.0ports:- containerPort: 8080

4. 部署所有资源

kubectl apply -f kube-state-metrics-rbac.yaml
kubectl apply -f kube-state-metrics-svc.yaml
kubectl apply -f kube-state-metrics-deploy.yaml

总结

🚀 本篇文章补充了 Kubernetes 集群监控的重要组成部分 —— kube-state-metrics 的部署与配置。通过该组件,解决了仅依赖 Metrics Server 无法全面反映集群资源状态的问题,增强了 Prometheus 对 Kubernetes 对象(如 Deployment、Pod、Node 等)状态指标的采集能力。
✅ 至此,基于 Metrics Server 和 kube-state-metrics 的 Kubernetes 集群监控方案已基本完善。结合 Prometheus、Alertmanager 和 Grafana,这套监控体系能够帮助运维团队全面掌控集群运行状况,及时响应故障,提升整体运维效率和系统稳定性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/80716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Manus 全面开放注册,OpenAI 发布 Codex,ChatGPT 上线 GPT-4.1!| AI Weekly 5.12-18

📢本周 AI 快讯 | 1 分钟速览🚀 1️⃣ 📝 Manus 全面开放注册 :无需邀请码即可注册,新用户免费获得 1000 积分,每日 300 积分免费任务。 2️⃣ 🔍 阿里 Qwen 推出「深入研究」 :Qw…

代理(主要是动态)和SpringAOP

代理 静态代理基于继承实现动态代理是基于接口实现 业务层每次实现转账都需要执行,可以把他们拿出来当成一个切面,自己写出一个代理类,让业务层只执行业务的逻辑,重复的代码代理类来完成,然后调用代理类来执行。 代理类…

uniapp打包H5,输入网址空白情况

由于客户预算有限,最近写了两个uniapp打包成H5的案例,总结下面注意事项 1. 发行–网站-PCWeb或手机H5按钮,输入名称,网址 点击【发行】,生成文件 把这个给后端,就可以了 为什么空白呢 最重要一点&#xf…

uniapp-商城-63-后台 商品列表(分类展示商品的删除)

商品列表中的数据需要进行状态管理,如上架、下架、删除和修改等操作。对于存在错误或后期需要重新上传的商品,可以通过删除操作进行处理。 具体到商品删除功能的实现,其基本流程如下:用户在前端页面点击删除按钮后,系统…

学习设计模式《十》——代理模式

一、基础概念 代理模式的本质【控制对象访问】; 代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问; 代理模式的功能:代理模式是通过创建一个代理对象,用这个代理对象去代表真实的对象;客户端得…

阿里云web端直播(前端部分)

阿里云&#xff1a;Web播放器快速接入_视频点播(VOD)-阿里云帮助中心 import Aliplayer from aliyun-aliplayerimport aliyun-aliplayer/build/skins/default/aliplayer-min.css<div id"J_prismPlayer" style"width: 300px; height: 300px;" />var …

深入解析OrientDB:多模型数据库的技术优势与实际应用

OrientDB 是一款开源的多模型 NoSQL 数据库&#xff0c;融合了文档数据库、图数据库和对象数据库的特性。它不仅支持灵活的数据建模&#xff0c;还提供了高性能的查询能力&#xff0c;适用于社交网络、物联网、内容管理等场景。本文详细探讨 OrientDB 的核心特性、应用场景&…

STM32控制电机

初始化时钟&#xff1a;在 STM32 的程序中&#xff0c;初始化系统时钟&#xff0c;一般会使用 RCC&#xff08;Reset and Clock Control&#xff09;相关函数来配置时钟。例如&#xff0c;对于 STM32F103 系列&#xff0c;可能会使用 RCC_APB2PeriphClockCmd 函数来使能 GPIO 和…

(05)数字化转型之生产制造:从通常的离散制造到柔性化生产的全景指南

当今制造业正经历着前所未有的数字化变革&#xff0c;从传统的离散制造到流程制造&#xff0c;再到新兴的项目制造和柔性制造&#xff0c;各种生产模式都在加速向智能化方向演进。本文将系统性地介绍制造业生产管理的完整体系&#xff0c;为企业数字化转型提供全面的方法论和实…

龙虎榜——20250520

上证指数今天缩量向上&#xff0c;个股涨多跌少&#xff0c;大盘股和小盘股总体表现都还可以。 深证同样缩量上涨&#xff0c;向上补缺口的概率增大。 2025年5月20日龙虎榜行业方向分析 宠物经济&#xff08;消费升级政策催化&#xff09; • 代表标的&#xff1a;天元宠物、…

CVE-2022-22978源码分析与漏洞复现

漏洞概述 CVE-2022-22978 是 Spring Security 框架中的一个高危认证绕过漏洞&#xff0c;影响版本包括 Spring Security 5.5.x < 5.5.7、5.6.x < 5.6.4 及更早的不受支持版本。攻击者可通过构造包含换行符&#xff08;如 %0a&#xff09;的 URL 路径&#xff0c;绕过正则…

PostGIS实现栅格数据入库【raster2pgsql】

raster2pgsql使用与最佳实践 一、工具概述 raster2pgsql是PostGIS提供的命令行工具,用于将GDAL支持的栅格格式(如GeoTIFF、JPEG、PNG等)导入PostgreSQL数据库,支持批量加载、分块切片、创建空间索引及金字塔概览,是栅格数据入库的核心工具。 二、核心功能与典型用法 1…

Redis企业级开发实战:核心应用场景与最佳实践

引言 Redis&#xff08;Remote Dictionary Server&#xff09;作为一款高性能的内存数据库&#xff0c;在企业级开发中扮演着至关重要的角色。无论是缓存加速、分布式锁、实时统计&#xff0c;还是消息队列&#xff0c;Redis都能以极低的延迟和极高的吞吐量满足业务需求。本文…

深入解析Spring Boot与Spring Cloud在微服务架构中的实践

深入解析Spring Boot与Spring Cloud在微服务架构中的实践 引言 随着云计算和分布式系统的快速发展&#xff0c;微服务架构已成为现代软件开发的主流模式。Spring Boot和Spring Cloud作为Java生态中微服务开发的核心框架&#xff0c;为开发者提供了强大的工具和组件&#xff0…

AI量化交易是什么?它是如何重塑金融世界的?

第一章&#xff1a;证券交易的进化之路 1.1 从喊价到代码&#xff1a;交易方式的革命性转变 在电子交易普及之前&#xff0c;证券交易依赖于交易所内的公开喊价系统。交易员通过手势、喊话甚至身体语言传递买卖信息&#xff0c;这种模式虽然直观&#xff0c;但效率低下且容易…

芯驰科技与安波福联合举办技术研讨会,深化智能汽车领域合作交流

5月15日&#xff0c;芯驰科技与全球移动出行技术解决方案供应商安波福&#xff08;Aptiv&#xff09;在上海联合举办以“芯智融合&#xff0c;共赢未来”为主题的技术研讨会。会上&#xff0c;双方聚焦智能座舱与智能车控的发展趋势&#xff0c;展开深入交流与探讨&#xff0c;…

大数据Spark(五十九):Standalone集群部署

文章目录 Standalone集群部署 一、节点划分 二、搭建Standalone集群 1、将下载好的Spark安装包上传解压 2、配饰spark-env.sh 3、配置workers 4、将配置好的安装包发送到node2、node3节点上 5、启动Standalone集群 三、提交任务测试 Standalone集群部署 Standalone 模…

Feign异步模式丢失上下文问题

Feign异步模式丢失上下文问题 问题描述 当我们使用异步对我们代码进行操作优化时&#xff0c;代码中使用了RequestContextHolder去获取上下文的数据&#xff0c;当我们执行原来可以执行的业务时发现报了空指针异常或数据为空&#xff0c;这是为什么呢&#xff1f; 原理解释 …

JavaScript作用域和作用域链

在JavaScript中&#xff0c;作用域和作用域链是理解代码执行和变量访问的关键概念。它们决定了变量和函数在代码中的可见性和生命周期。 一、作用域&#xff08;Scope&#xff09; &#xff08;一&#xff09;什么是作用域&#xff1f; 作用域是在运行时代码中的某些特定部分…

人工智能的“歧视”:“她数据”在算法运行中隐形

纵观人类的发展史&#xff0c;每一次科技进步都将对性别平等产生深刻影响。尤其是当下&#xff0c;人们对于借助人工智能技术快速发展来弥合性别不平等寄予厚望。 但很多人没想过&#xff0c;人工智能技术本身是客观中立、不存在“算法歧视”“性别偏见的吗&#xff1f; 弗吉…