外部Prometheus监控k8s集群资源

Prometheus监控k8s资源

通过Prometheus监控k8s集群中各种资源:如微服务,容器资源指标 并在Grafana显示

思路

  • 可以通过外部prometheus通过连接apiserver去监控k8s集群内指标。(前提k8s集群内安装好相应的exports)

  • 可以通过部署kube-prometheus(集群内部起了一套监控) 在通过联邦的方式,进行监控。

以下采用 外部prometheus监控cadvisor,kube-state-metrics来获取k8s集群指标资源

准备工作

1、插件介绍

想要监控k8s比较全面的资源指标,我们需要在集群内安装相应的exports,这要借助cadvisor,kube-state-metrics

  1. cadvisor: 集成在kubelet内,不需要单独去安装了,它可以收集集群内容器的cpu,内存等指标

  2. kube-state-metrics: 轮询api-server,监听 add delete update等事件,换句话说 光有cadvisor这些基本指标去监控,维度是不够的 对于deployment,Pod、daemonset、cronjob等k8s资源对象并没有监控,比如:当前replace是多少?Pod当前状态(pending or running?)cadvisor并没有对具体的资源对象就行监控,因此就需引用新的exports来暴漏监控指标,kube-state-metrics

2、kube-state-metrics安装部署

  1. 下载kube-state-metrics安装包

注意: 我的k8s版本为v1.23.6 所以,要在github上看下说明,根据自己k8s的版本按实际情况来选择kube-state-metrics的版本

kube-state-metrics_v2.2.1 下载地址

将安装包上传至服务器

  1. 部署kube-state-metrics

按需修改service.yml 中暴露端口,修改后如下:

  • 在k8s集群中部署

  • 暴露端口(采集监控信息)

加上: --read-only-port=10255

  • 获取服务名称

  • 获取秘钥名称

  • 获取token信息

3、給予Prometheus調用

  • prometheus.yml 主配置文件目錄下,創建 k8s.token 名字文件,把上面 Token 信息放進去

4、配置Prometheus

  • vim prometheus.yml

新增如下内容:

  1. 以上涉及到了一些段落说明一下 这是外部prometheus连接k8s集群, 填写apiserver地址 命名空间写kube-state-metrics所在的ns空间 通信的token : 在prometheus.yml同级目录创建了个k8s.token的文件,内容为k8s集群中ops-monit空间下的secret---prometheus-token-wq9fd的内容

5、配置仪表盘

Grafana8.5.27 导入id:13105

一些配置上细节的说明,可以参考模板的说明https://grafana.com/grafana/dashboards/13105-1-k8s-for-prometheus-dashboard-20211010/

Last updated