在 Kubernetes 集群上 Pod、DaemonSet、Deployment、Job、CronJob 等各种资源对象的状态也需要监控,这也反映了使用这些资源部署的应用的状态。比如:
我调度了多少个副本?现在可用的有几个?多少个 Pod 是 running/stopped/terminated 状态?Pod 重启了多少次?我有多少 job 在运行中等等
对于 Prometheus 来说,需要引入新的 exporter 来暴露这些指标,这就是kube-state-metrics。
1.部署kube-state-metrics:使用以下yml清单(将 deployment.yaml 下面的镜像替换成 cnych/kube-state-metrics:v2.0.0-rc.0)
kube-state-metrics/examples/standard at master · kubernetes/kube-state-metrics · GitHub
创建资源:
$ kubectl apply -f .
2.配置prometheus:
使用endpoints服务发现方式,只保留kube-system命名空间下名为kube-state-metrics的service对象
- job_name: "kube-state-metrics" kubernetes_sd_configs: - role: endpoints relabel_configs: - action: keep source_labels: [ __meta_kubernetes_namespace, __meta_kubernetes_service_name, ] regex: kube-system;kube-state-metrics
更新prometheus配置,然后查看 Prometheus 的Targets 路径,已成功抓取指标: