kube-state-metrics组件介绍
kube-stste-metrics项目地址:https://github.com/kubernetes/kube-state-metrics
kube-stste-metrics是一个简单的组件,通过监听API Server生成有关资源对象的状态指标(例如Deployment、Pod、Node等)。但需要注意的是kube-state-metrics的使用场景并不是监控对方是否存活,而是周期性的获取目标对象的metrics数据并在web界面展示或被Prometheus抓取,这些指标数据包括但不限于以下这些:
- pod的状态,running或者terminating等
- Pod重启了多少次
- Deployment调度了多少副本?现在可用的有多少?
- 目前有多少job在运行 等等
目前kube-state-metrics收集的指标数据可以参考官方文档介绍:https://github.com/kubernetes/kube-state-metrics/tree/main/docs#exposed-metrics
kuber-state-metrics并不存储这些指标数据,所以需要使用Prometheus抓取然后存储。
kube-state-metrics部署
kube-state-metrics版本和k8s集群版本是有依赖关系的,安装的时候要选择合适的版本。kube-state-metrics也有多种部署方式,这里以Deployment方式运行在集群上。
下载源码包
wget https://github.com/kubernetes/kube-state-metrics/archive/refs/tags/v2.8.0.tar.gz
tar xf v2.8.0.tar.gz
cd kube-state-metrics-2.8.0/examples/standard
修改部署文件deployment.yaml,修改其中的镜像为dockerhub上的镜像地址
root@master-01:~/kube-state-metrics-2.8.0/examples/standard# cat deployment.yaml |grep image
- image: bitnami/kube-state-metrics:2.8.0
修改部署文件service.yaml,将Service类型修改为NodePort
root@master-01:~/kube-state-metrics-2.8.0/examples/standard# cat service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: exporter
app.kubernetes.io/name: kube-state-metrics
app.kubernetes.io/version: 2.8.0
name: kube-state-metrics
namespace: kube-system
spec:
type: NodePort
ports:
- name: http-metrics
port: 8080
targetPort: http-metrics
nodePort: 30091
- name: telemetry
port: 8081
targetPort: telemetry
selector:
app.kubernetes.io/name: kube-state-metrics
创建部署目录下的所有资源文件
kubectl apply -f kube-state-metrics-2.8.0/examples/standard
查看Pod状态
通过 任意节点:nodePort 访问kube-state-metrics指标数据接口验证
Prometheus监控kube-state-metrics
修改Prometheus配置添加一个job,内容如下:
- job_name: kube-state-metrics
static_configs:
- targets: ["192.168.122.12:30091"]
配置修改后,重启Prometheus
systemctl restart prometheus
在Prometheus界面查看,kube-state-metrics对应的target已经UP。
Grafana导入模板,查看监控数据。模板ID: 17519
模板ID: 13824
模板ID:14518