kubernetes之kube-state-metrics

kubernetes监控之kube-state-metrics使用


前言

基于容器的服务架构改变了业务部署、运作的方式。容器通过简化应用程序的扩缩容和部署来帮助公司实现自动化,但容器也创建了一个全新的基础设施生态系统,从而引入了新的挑战和更多的复杂性。如何监控整个容器的运行状态成为了我们的迫切需求。

以下介绍如何利用kube-state-metrics采集K8s集群 生命周期的各项指标

一、kube-state-metrics与metrics-server对比

我们服务在运行过程中,我们想了解服务运行状态,pod有没有重启,伸缩有没有成功,pod的状态是怎么样的等,这时就需要kube-state-metrics,它主要关注deployment,、node 、 pod等内部对象的状态。而metrics-server 主要用于监测node,pod等的CPU,内存,网络等系统指标。

二、kubernetes安装kube-state-metrics

1.下载yaml

版本选择,因为本文k8s版本是1.16,故安装v1.9.7
在这里插入图片描述

下载相关配置文件
https://github.com/kubernetes/kube-state-metrics/tree/release-1.9/examples/standard
建立文件夹

mkdir -p /tmp/kube-state-metrics
cd /tmp/kube-state-metrics

/tmp/kube-state-metrics文件夹结构如下:

.
├── cluster-role-binding.yaml
├── cluster-role.yaml
├── deployment.yaml
├── service-account.yaml
└── service.yaml

注意:如果prometheus 安装在集群内部,修改service.yaml

# vim service.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: kube-state-metrics
    app.kubernetes.io/version: v1.9.7
  name: kube-state-metrics
  namespace: kube-system
  annotations:  
   prometheus.io/scrape: "true"       ##添加此参数,允许prometheus自动发现

2.部署

代码如下:

#部署服务至k8s
cd /tmp/kube-state-metrics
kubectl  apply -f  ./
#查看是否运行成功
kubectl get pod -n kube-system |grep kube-state-metrics
kube-state-metrics-xxxx-n5qtx                             1/1     Running     0          41m
kubectl get svc -n kube-system |grep kube-state-metrics
kube-state-metrics                               ClusterIP      None           <none>         8080/TCP,8081/TCP            53m

三、prometheus采集指标

验证指标是否采集成功
请求kube-state-metrics的pod ip+8080端口,出现以下页面则正常
在这里插入图片描述
三种方法
1、service绑定负载均衡IP,prometheus采集负载均衡IP+8080端口信息
2、如果prometheus 安装在集群内部,采用prometheus自动发现策略,注意sevice已经修改部分内容
3、prometheus自动发现相关Pod ip,prometheus采集Pod IP+8080端口信息
prometheus配置信息:

  - job_name: 'kube-state-metrics'
   scheme: http
   bearer_token_file: /xxx/xxx_token
   metrics_path: metrics
   tls_config:
     insecure_skip_verify: true
   kubernetes_sd_configs:
     - api_server: https://xxxx.xxx.xxx.xx:6443
       role: pod
       tls_config:
         insecure_skip_verify: true
       bearer_token_file: /xxx/xxx_token
   relabel_configs:
   - source_labels: [__meta_kubernetes_pod_name]
     action: replace
     target_label: pod
   - action: labelmap
     regex: __meta_kubernetes_pod_label_(.+)
   - source_labels: [__meta_kubernetes_pod_ip]
     regex: (.+)
     target_label: __address__
     replacement: ${1}:8080
   - source_labels:  ["__meta_kubernetes_pod_container_name"]
     regex: "^kube-state-metrics.*"
     action: keep

结果如下:
在这里插入图片描述

总结

以上就是所写的内容,本文仅仅简单介绍了kube-state-metrics的安装,相关重启、状态异常报警规则参考官方配置
Logo

开源、云原生的融合云平台

更多推荐