kube-state-metrics

目标

  • 部署kube-state-metrics
  • 配置 kube-state-metrics 采集deploy、pod、node等资源的自定义标签和注解
  • 配置prometheus抓取kube-state-metrics

简介

kube-state-metrics 是一个从API server获取并生成object metrics的简单服务,他并不关注k8s自身组件的健康状况,而是关心内部各种各样的对象监控,如deploys、nodes、pods,等同于k8s的一个exporter,可以供prometheus使用。kube-stat-metrics默认使用8080端口,与kubectl展示的结果可能不完全相同,因为kubectl的数据是经过加工的,kube-stat-metrics是原始的数据(raw data)。

Metric

一个监控项存在几种状态就会存在几条metric,如kube_pod_status_ready,每个pod都会存在三条Metric:

  • kube_pod_status_ready{condition=“true”}
  • kube_pod_status_ready{condition=“false”}
  • kube_pod_status_ready{condition=“unknow”}

label名称冲突

  • 1、一切不支持的字符串都转换成下划线 _,如:app.kubernetes.io/name 转换成 app_kubernetes_io_name
  • 2、转换后依然冲突的label会追加conflicN,label_foo_bar_conflicN

部署

  • 1、下载对应的版本

    kube-state-metricsKubernetes client-go Version
    v2.9.2v1.26
    v2.10.1v1.27
    v2.11.0v1.28
    v2.12.0v1.29
    v2.13.0v1.30
    mainv1.30

    wget https://codeload.github.com/kubernetes/kube-state-metrics/tar.gz/refs/tags/v2.9.2
    tar -xvzf v2.9.2

  • 2、根据需求修改启动参数

    默认仅采集name、namespace;两个标签,如果标签太多会有性能瓶颈
    k8s资源标签会被采集为label_NAME,prometheus抓取时映射成原始标签

    • 配置采集pod、deployment等资源自定义的label

      spec:
        template:
          spec:
            containers:
            - args:
              - --metric-labels-allowlist=pods=[*],deployments=[*]    # 默认仅采集name、namespace两个标签
              - --metric-annotations-allowlist=pods=[*]               # 同上,允许采集annotations的资源类型
      
    • 设置资源限制,最小资源:100m、250MiB

      spec:
        template:
          spec:
            containers:
              resources:
                limits:
                  cpu: 2
                  memory: 4Gi
      
    • 4、编辑service,设置为合适的类型,默认None
      默认为无头SERVICE(ClusterIP,None)

    • 5、应用manifests

      cd kube-state-metrics-2.9.2/examples/standard
      for i in `ls *.yaml`
      do
          kubectl apply -f  $i
      done
      
    • 6、配置prometheus抓取任务

      #----------kube-state-metrics----------#
      - job_name: cce-app-pre/kube-state-metrics
        metric_relabel_configs:
        - target_label: cluster
          replacement: cce-app-pre
        - target_label: env
          replacement: pre
        # label_NAME ---映射---> NAME
        - action: labelmap
          regex: label_(.*)
          replacement: $1
        # 删除label_NAME
        - action: labeldrop
          regex: label_.*
        static_configs:
        - targets:
          - 10.121.60.75:8080
      
    • 7 启用内置alert
      复制 examples/prometheus-alerting-rulesprometheus

    • 8 自定义监控,并展示抓取到的pod标签(由于metrics不携带podlabel,需要合成)
      kube_pod_status_phase{phase="Pending"} * on(pod) group_right kube_pod_labels

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳梧桐

打赏随心,金额随意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值