K8s资源对象监控之kube-state-metrics详解(Detailed Explanation of Kube State Metrics)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。****

本人主要分享计算机核心技术:系统维护、数据库、网络安全、自动化运维、容器技术、云计算、人工智能、运维开发、算法结构、物联网、JAVA 、Python、PHP、C、C++等。
不同类型针对性训练,提升逻辑思维,剑指大厂,非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。

K8s资源对象监控之kube-state-metrics详解

1、简介

前面我们使用node发现模式监控node节点资源,监控kubelet,schedule,controlle-manager,pod等。但是由于这些都是k8s内置的指标数据,而且其他的资源对象也需要监控的,例如Deployment,Daemonset,ConfigMap等等的资源对象。因此我们可以额外在K8s集群部署一个指标采集系统kube-state-metrics,通过它去与apiserver通信,然后prometheus再去获取它的指标数据。需要注意的是 kube-state-metrics 只是简单的提供一个 metrics 数据,并不会存储这些指标数据,可以使用 Prometheus 来抓取这些数据然后存储。主要关注的是业务相关的一些元数据,比如 Deployment、Pod、副本状态等;调度了多少个 replicas?现在可用的有几个?多少个 Pod 是 running/stopped/terminated 状态?Pod 重启了多少次?我有多少 job 在运行中。

kube-state-metrics‌是一个开源项目,用于监控Kubernetes集群中各种资源对象的状态。它通过监听API Server生成有关资源对象的状态指标,如Deployment、Node、Pod等,并提供这些指标数据供Prometheus等监控系统抓取和存储‌。

2、Metric-Server与Kube-State-Metrics

关注点和功能

  • Metric-Server:重点提供资源度量API的实现,如CPU、内存等关键性能指标,主要用于资源监控和事件响应,例如水平Pod自动扩缩容(HPA)。

  • Kube-State-Metrics:侧重于Kubernetes资源对象的状态指标,如副本状态、端点数量等,主要用于业务监控和状态检查。

安装配置与依赖环境

  • Metric-Server:可能需额外配置以支持新版本Kubernetes,如添加node/stats的权限,有时需要手动配置。

  • Kube-State-Metrics**:安装和配置较为简单,主要依赖Kubernetes API Server,不需要特别的硬件支持或复杂配置。

数据存储与处理

  • Metric-Server:本身不提供数据存储,但可与其他时序数据库如InfluxDB配合使用,提供长期数据存储解决方案。

  • Kube-State-Metrics**:不负责数据的存储,通常与Prometheus等监控系统配合使用,抓取并存储数据。

使用场景和监控策略

  • Metric-Server:在需要基础资源监控、执行资源相关命令(如kubectl top node)或基于资源利用率的自动化决策(如HPA)时使用。

  • Kube-State-Metrics:在需要详细了解Kubernetes各种资源对象状态(如Deployment状态)时使用,帮助监控和分析资源对象的变化。

3、部署

**#创建 sa,并对 sa 授权

root@mast01 Prometheus\]# kubectl apply -f kube-state-metrics-rbac.yaml serviceaccount/kube-state-metrics created clusterrole.rbac.authorization.k8s.io/kube-state-metrics created clusterrolebinding.rbac.authorization.k8s.io/kube-state-metrics created** ##### #上传镜像到 k8s 各个工作节点 \[root@work01 \~\]# docker load -i kube-state-metrics_1_9_0.tar.gz Loaded image: quay.io/coreos/kube-state-metrics:v1.9.0 ##### #部署 yaml 文件 \[root@mast01 Prometheus\]# kubectl apply -f kube-state-metrics-deploy.yaml deployment.apps/kube-state-metrics created ##### #查看 kube-state-metrics 是否部署成功 \[root@mast01 Prometheus\]# kubectl get pods -n kube-system -l app=kube-state-metrics NAME READY STATUS RESTARTS AGE kube-state-metrics-58d4957bc5-gsrjg 1/1 Running 0 32s ##### #创建 service \[root@mast01 Prometheus\]# kubectl apply -f kube-state-metrics-svc.yaml service/kube-state-metrics created ##### #查看 service 是否创建成功 \[root@mast01 Prometheus\]# kubectl get svc -n kube-system \| grep kube-state-metrics kube-state-metrics ClusterIP 10.106.177.208 \ 8080/TCP 49s **4、在 grafana web 界面导入 Kubernetes Cluster (Prometheus)** ![](https://i-blog.csdnimg.cn/direct/bbed80ae737246aa9f3c633bdcd86b5c.png)![](https://i-blog.csdnimg.cn/direct/b828e88499884bb891496cdfab8738e0.png)![](https://i-blog.csdnimg.cn/direct/169f82f12f0444cdac5e04e2da6dcdf0.png)![](https://i-blog.csdnimg.cn/direct/831e756c93da406495b66d8d42a32f08.gif)

相关推荐
三思而后行,慎承诺8 分钟前
tcp 和http 网络知识
网络·tcp/ip·http
JavaEdge.11 分钟前
LangChain4j HTTP 客户端定制:解锁 LLM API 交互的更多可能性
网络·网络协议·http
Hy行者勇哥15 分钟前
形象解释 HTTP 的四种常见请求方式及其中的区别联系
网络·网络协议·http
时迁24717 分钟前
【k8s】k8s是怎么实现自动扩缩的
云原生·容器·kubernetes·k8s
Cuit小唐35 分钟前
TCP 协议:原理、机制与应用
网络·网络协议·tcp/ip
编程一生1 小时前
微服务相比传统服务的优势
微服务·云原生·架构
电鱼智能的电小鱼1 小时前
EFISH-SBC-RK3588无人机地面基准站项目
linux·网络·嵌入式硬件·机器人·无人机·边缘计算
电鱼智能的电小鱼1 小时前
基于 EFISH-SBC-RK3588 的无人机环境感知与数据采集方案
linux·网络·嵌入式硬件·数码相机·无人机·边缘计算
Arenaschi2 小时前
SQLite 是什么?
开发语言·网络·python·网络协议·tcp/ip
沧浪之水!3 小时前
【Linux网络】:套接字之UDP
linux·网络·udp