k8s 集群下微服务 pod 的各种指标信息监控


今天主要分享下,在 k8s 集群下,微服务的各种状态指标情况的监控,我们都知道 Prometheus 是做数据监控的,但说白点,其独特格式的数据,其实都是靠一些源来的,那么这些源有哪些呢?已经有了 cadvisor、heapster、metric-server,几乎容器运行的所有指标都能拿到,但是下面这种情况却无能为力:


调度了N个replicas?现在可用的有N个?
N个Pod是 running/stopped/terminated 状态?
Pod重启了N次?
我有N个服务在运行中

而这些则是 kube-state-metrics 提供的内容,它基于 client-go 开发,轮询 Kubernetes API,并将 Kubernetes 的结构化信息转换为 metrics。kube-state-metrics 是 kubernetes 开源的一个插件。


废话不多说,直接上教程。。。

部署教程

下载
  1. 在官网 https://github.com/kubernetes/kube-state-metrics 下载相应的源码以及部署脚本,本次使用 release1.9.7,即 v1.9.7 版本的 kube-state-metrics


  1. 执行 cd /kube-state-metrics/examples/standard,可以看到几个文件:

cluster-role-binding.yaml
cluster-role.yaml
deployment.yaml
prometheus-configmap.yaml
service-account.yaml
service.yaml

如果 Prometheus 已经部署,且部署在 kube-system 空间下,则源码中的 namespace 不需更改,否则可自定义为 monitoring。

更新
  1. 首先修改 service.yaml

apiVersion: v1
kind: Service
metadata:
  annotations:
    prometheus.io/scrape: "true"
  labels:
    app.kubernetes.io/name: kube-state-metrics
    app.kubernetes.io/version: v1.9.7
  name: kube-state-metrics
  namespace: kube-system
spec:
  clusterIP: None
  ports:
  - name: http-metrics
    port: 8080
    targetPort: http-metrics
  - name: telemetry
    port: 8081
    targetPort: telemetry
  selector:
    app.kubernetes.io/name: kube-state-metrics

很简单,增加了注解方便后面使用


坑:源码中的角色授权绑定的是其写的 kind 为 ClusterRole 的资源,但后来发现部署 kube-state-metrics 服务时,其无法成功访问 k8s 的 api-server,故需要修改,弃用其 ClusterRole,使用 k8s 系统最高权限 cluster-admin。


  1. 更改访问权限

vi cluster-role-binding.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    app.kubernetes.io/name: kube-state-metrics
    app.kubernetes.io/version: v1.9.7
  name: kube-state-metrics
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin #kube-state-metrics
subjects:
- kind: ServiceAccount
  name: kube-state-metrics
  namespace: kube-system

部署
cd /kube-state-metrics/examples/standard
kubectl create -f .

此时还需要更新 Prometheus 的挂载的 configMap,因为前面说了只抓取带有 prometheus.io/scrape: "true"注解的 endpoint


vi prometheus-configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
  namespace: kube-system
data:
  prometheus.yaml: |
    global:
      scrape_interval:     15s
      evaluation_interval: 15s
    scrape_configs:
    - job_name: 'kubernetes-apiservers
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值