kube-state-metrics¶
1、介绍
Kube-state-metrics 是一个Kubernetes组件,它提供了一种将 Kubernetes 集群中各资源状态信息转化为可监控指标的方法,以帮助用户更好地理解和监控集群的健康状态和性能。
在 Kubernetes 集群中,有许多对象(例如 Pod、Deployment、Service 等)以及它们的状态信息(例如副本数、状态、标签等)。Kube-state-metrics 通过监听 Kubernetes API 的变化,实时地获取这些对象的状态信息,并将其指标化。这些指标可以用于监控和告警,帮助运维人员了解集群中各个组件的健康状况、性能指标以及其他重要的状态信息。
Kube-state-metrics 生成的指标可以被 Prometheus 服务器采集,并用于构建仪表板、设置警报规则以及进行集群性能分析。通过将 kube-state-metrics 与 Prometheus 结合使用,您可以更好地了解 Kubernetes 集群的运行情况,并对其进行监控和管理。
2、部署
使用helm部署
$ helm install kube-state-metrics bitnami/kube-state-metrics
查看Pod
$ k get po | grep kube-state-metrics
kube-state-metrics-6dd69d6685-778br 1/1 Running 0 4m12s
3、配置Prometheus
(1)先获取svc的ip
$ k get svc | grep kube-state-metrics
kube-state-metrics ClusterIP 10.0.219.176 <none> 8080/TCP 49s
(2)测试
$ curl 10.0.219.176:8080/metrics
说明:正常有大量指标回显内容
4、应用配置
这里应用配置主要介绍两种方法:一是静态配置;二是基于consul自动发现。两者的主要区别就是静态配置会单独生成一个静态栏,基于consul自动发现就不会
(1)静态配置
先把Configmap导出为yaml文件:
$ kubectl get cm prometheus-server -o yaml > prometheus_config.yaml
编辑yaml,在scrape_configs: 下面增加如下内容
$ vi prometheus_config.yaml
...
...
- job_name: 'kube-state-metrics'
static_configs:
- targets: ['kube-state-metrics:8080']
...
...

应用配置
$ kubectl delete -f prometheus_config.yaml ; kubectl apply -f prometheus_config.yaml
重启Prometheus服务
$ kubectl get po |grep prometheus-server |awk '{print $1}' |xargs -i kubectl delete po {}
打开浏览器输入http://192.168.1.31:31093访问Prometheus,到Prometheus页面下查看,已经多出来kube-state-metrics

(2)基于consul自动发现
查看consul服务地址
$ k get svc | grep consul-ui
prometheus-consul-ui ClusterIP 10.0.195.154 <none> 80/TCP 11h
注册
$ curl -X PUT -d '{"id": "kube-state-metrics","name": "kube-state-metrics","address": "10.0.219.176","port": 8080,"tags": ["service"],"checks": [{"http": "http://10.0.219.176:8080/","interval": "5s"}]}' http://10.0.195.154/v1/agent/service/register
打开浏览器输入http://192.168.1.31:31093访问Prometheus,到Prometheus页面下查看,已经consul多出来kube-state-metrics

metrics-server¶
Metrics Server(指标服务器)是一个用于收集、聚合和存储 Kubernetes 集群中的指标数据的组件。它是 Kubernetes 的核心组件之一,用于提供对集群中运行的容器和节点的资源利用率和性能指标的实时监控。
Metrics Server 通过与 Kubernetes API 交互,定期收集指标数据。这些指标包括 CPU 使用率、内存使用率、文件系统使用率、网络流量等。
下面主要介绍安装metrics-server,镜像版本为0.6.3
1、下载yaml文件
$ wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.3/high-availability-1.21+.yaml
2、修改YAML文件
$ vi high-availability-1.21+.yaml
将image: k8s.gcr.io/metrics-server/metrics-server:v0.6.3 修改为 image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.3
在image: 这行上面增加一行: - --kubelet-insecure-tls (这里注意缩进格式,要对齐,前面是空格,千万不要用tab)

应用此YAML文件
$ kubectl apply -f high-availability-1.21+.yaml
查看pod
$ kubectl get po -n kube-system | grep metrics-server
metrics-server-6bf7dcd649-v7gqt 1/1 Running 4 (22h ago) 211d
测试
$ kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
k8s-master01 143m 0% 1673Mi 21%
k8s-master02 106m 0% 1561Mi 19%
k8s-master03 116m 0% 1518Mi 19%
k8s-node01 79m 0% 1403Mi 17%
k8s-node02 68m 0% 1004Mi 12%
$ kubectl top po
NAME CPU(cores) MEMORY(bytes)
cluster-test-79b978867f-4x2lw 0m 1Mi
kube-state-metrics-6dd69d6685-778br 1m 30Mi