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

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,这套监控体系能够帮助运维团队全面掌控集群运行状况,及时响应故障,提升整体运维效率和系统稳定性。

相关文章:

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

k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标 文章目录 k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标一、Metrics Server简介二、kube-state-metrics实战部署1. 创…...

JavaScript:PC端特效--元素可视区client系列

一、client系列 client翻译过来就是客户端,我们使用client系列的相关属性来获取元素可视区的相关信息。通过client系列的相关属性可以动态的得到该元素的边框大小、元素大小等。 client系列属性作用element.clientTop返回元素上边框的大小element.clientLeft返回元…...

Centos7 中 Docker运行配置Apache

1、拉去httpd镜像(不加版本号,默认拉最新版本) docker pull httpd 2、运行httpd docker run -di --name httpd-test -p 8080:80 httpd 3、创建文件夹后边做映射 mkdir -p /Docker/apache/www /Docker/apache/logs /Docker/apache/conf 4、…...

PostgreSQL中的全页写

一、概述 在PGSQL数据库中,默认的页面大小为8KB,但是磁盘buffer的大小为4KB,扇区大小为512B。这就导致在操作系统的角度看数据库的写操作,其实并不是一种原子操作。如果操作系统发生了系统级别的故障,此时正好操作系统…...

对称二叉树的判定:双端队列的精妙应用

一、题目解析 题目描述 给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的: 1/ \2 2/ \ / \ 3 4 4 3而 [1,2,2,null,3,null,3] 则不是镜像对称的: 1/ \2 2\ \3 3问题本质 判断一棵二叉…...

Redis + ABP vNext 构建分布式高可用缓存架构

🚀 Redis ABP vNext 构建分布式高可用缓存架构 🔧 环境准备 开发环境 .NET 8.0 SDKVisual Studio 2022 / VS CodeDocker & Docker Compose NuGet 包 Volo.Abp.Caching.StackExchangeRedis v8.1.5Volo.Abp.DistributedLocking.StackExchangeRedis v…...

jvm第一篇《内存与垃圾回收》学习笔记第一章jvm初始

jvm是虚拟机的通称。 java实际默认的应用是hotspot(基于栈的指令集架构) 注:注意区分寄存器的指令集和栈指令集的架构。(大概理解java移植性好就是因为是栈指令集) jvm虚拟机,具有跨语言功能&#xff0…...

MySQL——3、数据类型

数据类型 1、数据类型分类2、数值类型2.1、tinyint类型2.2、bit类型2.3、小数类型2.3.1、float2.3.2、decimal 3、字符串类型3.1、char3.2、varchar3.3、char和varchar比较3.4、日期和时间类型3.5、enum和set 1、数据类型分类 2、数值类型 2.1、tinyint类型 首先创建t1表&…...

Flutter - 集成三方库:日志(logger)

日志 使用print方法时,会提示 添加依赖 $ flutter pub add logger下载依赖 $ flutter pub get使用 打印 import package:logger/logger.dart;var logger Logger(); logger.d("debug"); logger.e("error"); logger.i("info"); logger.f(&qu…...

第五部分:第五节 - Express 路由与中间件进阶:厨房的分工与异常处理

随着你的 Express 应用变得越来越大,所有的路由和中间件都写在一个文件里会变得难以管理。这时候就需要将代码进行拆分和组织。此外,一个健壮的后端应用必须能够优雅地处理错误和一些常见的 Web 开发问题,比如跨域。 路由模块化 (express.Ro…...

国标GB/T 12536-90滑行试验全解析:纯电动轻卡行驶阻力模型参数精准标定

摘要 本文以国标GB/T 12536-90为核心框架,深度解析纯电动轻卡滑行试验的完整流程与数据建模方法,提供: 法规级试验规范:从环境要求到数据采集全流程详解行驶阻力模型精准标定:最小二乘法求解 ( FAv^2BvC ) 的MATLAB实…...

组件导航 (Navigation)+flutter项目搭建-混合开发+分栏

组件导航 (Navigation)flutter项目搭建 接上一章flutter项目的环境变量配置并运行flutter 上一章面熟了搭建flutter并用编辑器运行了ohos项目,这章主要是对项目的工程化改造 先创建flutter项目,再配置Navigation 1.在开发视图的resources/base/profi…...

物联网中的WiFi模式解析:AP、STA与混合模式

物联网现在还是比较火的,各种设备都要联网,那么WiFi已成为设备联网的“标配”。但你是否想过,为什么有的设备能自己创建WiFi热点,有的只能连接路由器?为什么有些网关既能收数据又能传数据? 主要还是因为Wi…...

spring cloud gateway 源码解析

参考:Spring Cloud Gateway SpringCloud gateway源码走读(顺带聊聊响应式) - 掘金 1,原理图 还是从starter 开始看 要实现网关的核心概念, 肯定是需要接受请求的server ,从上面的截图看 starter-gateway 只负责了包的依赖,并没有定义自动配置 , 他依赖了starter-webf…...

游戏引擎学习第286天:开始解耦实体行为

回顾并为今天的内容定下基调 我们目前正在进入实体系统的一个新阶段,之前我们已经让实体的移动系统变得更加灵活,现在我们想把这个思路继续延伸到实体系统的更深层次。今天的重点,是重新审视我们处理实体类型(entity type&#x…...

【论文阅读】KIMI K1.5: SCALING REINFORCEMENT LEARNING WITH LLMS

KIMI K1.5: SCALING REINFORCEMENT LEARNING WITH LLMS Scaling的解释: 通过系统性的方法扩展强化学习算法的能力,使其能够处理更复杂的问题、更大的状态/动作空间、更长的训练周期或更高效的资源利用 原文摘要: 研究背景与问题定位 传统预训…...

大语言模型与多模态模型比较

一、核心差异:输入数据类型与模态融合 输入数据类型 LLM:仅处理文本数据,例如文本分类、机器翻译、问答等任务,通过大规模语料库学习语言规律。 LMM:支持文本、图像、音频、视频等多种模态输入,例如根据图…...

vscode debug node + 前端

方法 2:调试全栈(Node 前端) 如果需同时调试后端和前端: 分别启动两个调试会话 一个配置调试 Node.js 后端(server.js)。 另一个配置调试浏览器前端(如上)。 {// Use IntelliS…...

RK3568-鸿蒙5.1与原生固件-扇区对比分析

编译生成的固件目录地址 ../openharmony/out/rk3568/packages/phone/images鸿蒙OS RK3568固件分析 通过查看提供的信息,分析RK3568开发板固件的各个组件及其用途: 主要固件组件 根据终端输出的文件列表,RK3568固件包含以下关键组件&#x…...

Java线程池(Thread Pool)性能优化解析

在高性能、高并发的Java应用开发中,线程池(Thread Pool)是不可或缺的组件。它通过复用线程,避免了线程频繁创建和销毁带来的资源开销,提高了系统的响应速度和稳定性。然而,不合理的线程池配置和使用方式也可能成为系统性能瓶颈的根源。 本文旨在深入解析Java线程池的性能…...

AI重塑未来学者:研究生教育的“进化论”与“数字化生存指南

目录: 一、引言:AI浪潮下的“象牙塔”新挑战与新机遇 二、AI的“双刃剑”:深度剖析对研究生教育的颠覆性影响 1. 研究范式的革新:从“人工”到“智能” 2. 知识获取与传授方式的重塑 3. 创新能力与批判性思维的再定义 4. 伦理困境与学术诚信的新考验 三、他山之石:发达国家…...

IHttpHandler和Tcp Listener的web服务器接收上传文件有什么区别

IHttpHandler和Tcp Listener的web服务器接收上传文件有什么区别 IHttpHandler 与 TCP Listener 处理文件上传的核心区别 IHttpHandler 和 TcpListener 是ASP.NET中处理 HTTP 请求的两种不同抽象层级,它们在文件上传处理上存在以下关键区别: 1. 抽象层…...

C++ --- new与delete

new与delete 一、回顾1.malloc2.calloc3.realloc4.free 二、new与delete的特殊之处(1)(2) 三、new与delete的底层原理四、总结 一、回顾 在C语言阶段我们学习了动态内存管理:malloc,calloc,realloc,free。 1.malloc …...

Guided Filtering相关记录

一、背景介绍 以前折腾保边滤波时候,刷了一些Guided Filtering相关资料。这里主要是对它们做个算法效果复现和资料简单整理。 二、Guided Filtering 1、基本原理 原版Guided Filtering的提出,主要是为了改善双边滤波做保边平滑滤波器时候的梯度翻转伪影…...

Rust 学习笔记:关于 String 的练习题

Rust 学习笔记:关于 String 的练习题 Rust 学习笔记:关于 String 的练习题选出描述正确的那一个。该程序最多可能发生多少次堆的内存分配?哪种说法最能解释为什么 Rust 不允许字符串索引?哪种说法最能描述字符串切片 &str 和字…...

AG-UI 协议:重构多模态交互,开启智能应用新纪元

一、协议诞生的时代背景:填补 AI 生态最后一块拼图 在人工智能技术飞速发展的今天,AI 代理(Agent)作为能够主动执行复杂任务的智能实体,正从实验室走向生产环境,重塑各个行业的工作流程。然而,…...

网络世界的“百变身份“:动态IP让连接更自由

深夜的程序调试​​ 凌晨两点,我盯着电脑屏幕上的报错信息:"Connection timed out"。这是本周第三次测试服务器响应时被拒绝访问了——只因为之前同一个IP地址尝试登录太过频繁。正在改代码的朋友小王凑过来看了眼:"老兄&…...

【学习笔记】因果推理导论第1课

因果推理导论第1课 为何要做因果推理 一、辛普森悖论一个例子 二、相关不代表因果性三、什么揭示因果四、观测研究五、结论 本节课通过 一、辛普森悖论 一个例子 书中举了一个疫情两种治疗方法A,B,分析哪一个治疗方法更好的例子. 首先已知B治疗方法更稀缺,因此观测数据样本上…...

Android 中 权限分类及申请方式

在 Android 中,权限被分为几个不同的类别,每个类别有不同的申请和管理方式。 一、 普通权限(Normal Permissions) 普通权限通常不会对用户隐私或设备安全造成太大风险。这些权限在应用安装时自动授予,无需用户在运行时手动授权。 android.permission.INTERNETandroid.pe…...

深度学习算法介绍

深度学习算法是一种基于人工神经网络结构的机器学习方法,其核心理念是通过多层次的神经元组成的神经网络来模拟人类大脑的工作原理。以下是几种常见的深度学习算法及其简要介绍: 多层感知器(Multilayer Perceptron, MLP)&#xff…...

Java【13_1】final、初始化块、继承(测试题)

测试题 1、简述final修饰符的功能 ① 修饰类 该类不能被继承 ② 修饰变量 该变量就是常量(一旦被初始化,就不可以修改) ③ 修饰方法 该方法不能被重写 2、写出程序结果 (仔细认真) public class MyClass { static int x,y; static{ …...

小结:JavaScript 模块化工具链

JavaScript 模块化工具链 是现代前端开发中用于组织、管理和优化模块化代码的核心工具集合。以下是关于 JS 模块化工具链的概述,包括关键工具、作用和常见工作流程:** **1. **模块化的背景 JavaScript 模块化是为了解决代码组织、依赖管理和作用域隔离…...

RabbitMQ ④-持久化 || 死信队列 || 延迟队列 || 事务

消息确认机制 简单介绍 RabbitMQ Broker 发送消息给消费者后,消费者处理该消息时可能会发生异常,导致消费失败。 如果 Broker 在发送消息后就直接删了,就会导致消息的丢失。 为了保证消息可靠到达消费者并且成功处理了该消息,…...

十一、Hive JOIN 连接查询

作者:IvanCodes 日期:2025年5月16日 专栏:Hive教程 在数据分析的江湖中,数据往往分散在不同的“门派”(表)之中。要洞察数据间的深层联系,就需要JOIN这把利器,将相关联的数据串联起来…...

启用rvzi可视化自己的机器人发现joint state publisher gui没有滑块

启用rvzi可视化自己的机器人发现joint state publisher gui没有滑块&#xff1f; 解决方法&#xff1a; 一&#xff1a;查看urdf中joint type定义是不是revolute。 二&#xff1a;查看urdf关节限制是不是正确&#xff0c;如果是0到0则不正确。 <joint name"joint_…...

Gitee DevOps:中国企业数字化转型的“本土化加速器“

在数字化浪潮席卷全球的当下&#xff0c;DevOps已经从技术热词转变为企业的核心生产力工具。根据IDC最新报告&#xff0c;到2025年中国DevOps市场规模将达到15亿美元&#xff0c;年复合增长率高达25%。在这一快速增长的市场中&#xff0c;一个显著趋势正在显现&#xff1a;越来…...

RKNN开发环境搭建(ubuntu22.04)

以下情况在RV1106G3的平台上验证正常。 1、conda安装 1&#xff09;conda --version//确认是否安装 2&#xff09;创建一个安装目录&#xff0c;进行下一步 3&#xff09;wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.6.14-Linux-x…...

2025年上软考 考试时间+准考证打印全攻略

各位同学好呀&#xff01;我是你们的老朋友大老李~之前咱们聊过软考报名和机考模拟系统的使用技巧。今天要和大家分享一下&#xff0c;最近好多同学私信的问题&#xff1a;"老李&#xff01;准考证到底哪天能打印&#xff1f;""考试时间会不会有变动&#xff1f…...

vllm量化05—FP8 W8A8

本系列基于Qwen2.5-7B&#xff0c;学习如何使用vllm量化&#xff0c;并使用benchmark_serving.py、lm_eval 测试模型性能和评估模型准确度。 测试环境为&#xff1a; OS: centos 7 GPU: nvidia l40 driver: 550.54.15 CUDA: 12.3本文是该系列第5篇——FP8 W8A8 一、量化 fro…...

OpenCV 图像透视变换详解

在计算机视觉领域&#xff0c;图像的视角问题常常会影响后续的分析与处理。例如&#xff0c;从倾斜角度拍摄的文档、带有畸变的场景图像等&#xff0c;都需要通过特定的方法进行矫正。OpenCV 作为计算机视觉领域的重要库&#xff0c;提供了强大的图像透视变换功能&#xff0c;能…...

Vue主题色切换实现方案(CSS 变量 + 类名切换)

定义主题变量 // styles/themes.scss :root {--primary-color: #314099;--secondary-color: #1E3968;--text-color: #2c44ce; }[data-theme"红系主题"] {--primary-color: #d74146;--secondary-color: #c20707;--text-color: #db3b3b; }在组件中使用变量 <templ…...

MySQL 高可用

目录 一、概述MySQL高可用 1. 什么是高可用性&#xff08;High Availability, HA&#xff09;&#xff1f; 2. MySQL 高可用常见方案 3. 高可用核心机制 4. 选型建议 注意事项 二、案例环境组成 MySQL 主主复制 keepalived HAProxy 的高可用负载均衡架构 三、案例架构…...

C#学习教程(附电子书资料)

概述 C#&#xff08;读作"C Sharp"&#xff09;是一种由微软开发的现代编程语言&#xff0c;结合了C的高效性和Java的简洁性&#xff0c;专为.NET框架设计。以下是其核心特性和应用领域的详细介绍电子书资料&#xff1a;https://pan.quark.cn/s/6fe772420f95 一、语…...

MySQL性能优化

目录 一、索引优化 1、慢查询日志分析 2、EXPLAIN 执行计划分析 3、索引类型选择 4、索引使用原则 5、常见索引失效场景 二、SQL语句优化 1、避免低效操作符 2、减少数据扫描量 3、子查询优化 4、其他高频优化技巧 三、表设计优化 1、数据类型优化 四、架构设计优…...

Mendix 中的XPath 令牌(XPath Tokens)详解

在 Mendix 中&#xff0c;XPath 令牌&#xff08;XPath Tokens&#xff09; 是一种特殊的动态参数化查询技术&#xff0c;允许你在 XPath 表达式中使用变量或上下文相关的值&#xff0c;从而实现更灵活的查询逻辑。 1. 什么是 XPath 令牌&#xff1f; XPath 令牌是 Mendix 提…...

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

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

保姆教程-----安装MySQL全过程

1.电脑从未安装过mysql的&#xff0c;先找到mysql官网&#xff1a;MySQL :: Download MySQL Community Server 然后下载完成后&#xff0c;找到文件&#xff0c;然后双击打开 2. 选择安装的产品和功能 依次点开“MySQL Servers”、“MySQL Servers”、“MySQL Servers 5.7”、…...

BUFDS_GTE2,IBUFDS,BUFG缓冲的区别

1、IBUFDS_GTE2 这是 Xilinx FPGA 中专门为 高速收发器&#xff08;SerDes/GTX/GTH/GTY&#xff09;参考时钟设计的差分输入缓冲器。 主要功能是将外部的差分时钟信号&#xff08;如LVDS、LVPECL等&#xff09;转换为FPGA内部的单端时钟信号&#xff0c;并保证信号的完整性和高…...

FPGA: XILINX Kintex 7系列器件的架构

本文将详细介绍Kintex-7系列FPGA器件的架构。以下内容将涵盖Kintex-7的核心架构特性、主要组成部分以及关键技术&#xff0c;尽量全面且结构化&#xff0c;同时用简洁的语言确保清晰易懂。 Kintex-7系列FPGA架构概述 Kintex-7是Xilinx 7系列FPGA中的中高端产品线&#xff0c;基…...

c/c++的opencv的图像预处理讲解

OpenCV 图像预处理核心技术详解 (C/C) 图像预处理是计算机视觉任务中至关重要的一步。原始图像往往受到噪声、光照不均、尺寸不一等多种因素的影响&#xff0c;直接用于后续分析&#xff08;如特征提取、目标检测、机器学习模型训练等&#xff09;可能会导致性能下降或结果不准…...