千家信息网

k8s实践(十二):Prometheus Operator监控Kubernetes集群

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,环境说明:主机名操作系统版本ipdocker versionkubelet versionhelm version配置备注masterCentos 7.6.1810172.27.9.131Docker
千家信息网最后更新 2025年02月05日k8s实践(十二):Prometheus Operator监控Kubernetes集群

环境说明:

主机名操作系统版本ipdocker versionkubelet versionhelm version配置备注
masterCentos 7.6.1810172.27.9.131Docker 18.09.6V1.14.2v2.14.32C2Gmaster主机
node01Centos 7.6.1810172.27.9.135Docker 18.09.6V1.14.2v2.14.32C2Gnode节点
node02Centos 7.6.1810172.27.9.136Docker 18.09.6V1.14.2v2.14.32C2Gnode节点

k8s集群部署详见:Centos7.6部署k8s(v1.14.2)集群
k8s学习资料详见:基本概念、kubectl命令和资料分享
k8s高可用集群部署详见:Centos7.6部署k8s v1.16.4高可用集群(主备模式)

一、prometheus简介

Prometheus是一个开源系统监控和警报工具包,最初是在soundcloud构建的。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有一个非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护,于2016年加入了云原生计算基金会,成为继kubernetes之后的第二个托管项目。

特点:

  • 用度量名和键值对识别时间序列数据的多维数据模型
  • 灵活的查询语言
  • 不依赖分布式存储;单服务器节点是自治的
  • 通过http上的pull模型进行时间序列收集
  • 通过中间网关支持推送时间序列
  • 通过服务发现或静态配置发现目标
  • 多种图形和仪表板支持模式

在微服务架构里,其对多维数据收集和查询有很好的的支持。

二、prometheus架构

Prometheus从jobs获取度量数据,也直接或通过推送网关获取临时jobs的度量数据。它在本地存储所有被获取的样本,并在这些数据运行规则,对现有数据进行聚合和记录新的时间序列,或生成警报。通过Grafana或其他API消费者,可以可视化的查看收集到的数据。

三、Prometheus Operator介绍

Prometheus Operator是CoreOS开发的基于Prometheus的Kubernetes监控方案

Prometheus Operator:整合Kubernetes和Prometheus的最佳方法

Prometheus Operator 功能更特点:

  • 创建/销毁: 在Kubernetes namespace中更容易启动一个prometheus实例,一个特定的应用程序或团队更容易使用Operator。
  • 简单配置: 配置Prometheus的基础,比如versions, persistence, retention policies和来自本机kubernetes资源的副本。
  • 通过标签的目标服务: 基于常见的Kubernetes label查询,自动生成监控target 配置;无需学习prometheus特定的配置语言。

工作流程:

四、Prometheus Operator部署

1.安装文件下载

[root@master ~]# git clone https://github.com/coreos/kube-prometheus.git

2.镜像下载

下载镜像:

docker pull registry.cn-hangzhou.aliyuncs.com/loong576/configmap-reload:v0.0.1docker pull registry.cn-hangzhou.aliyuncs.com/loong576/alertmanager:v0.18.0docker pull registry.cn-hangzhou.aliyuncs.com/loong576/kube-state-metrics:v1.8.0docker pull registry.cn-hangzhou.aliyuncs.com/loong576/kube-rbac-proxy:v0.4.1docker pull registry.cn-hangzhou.aliyuncs.com/loong576/node-exporter:v0.18.1docker pull registry.cn-hangzhou.aliyuncs.com/loong576/k8s-prometheus-adapter-amd64:v0.5.0docker pull registry.cn-hangzhou.aliyuncs.com/loong576/prometheus-config-reloader:v0.33.0docker pull registry.cn-hangzhou.aliyuncs.com/loong576/prometheus:v2.11.0docker pull registry.cn-hangzhou.aliyuncs.com/loong576/prometheus-operator:v0.33.0docker pull registry.cn-hangzhou.aliyuncs.com/loong576/grafana:6.4.3

打tag:

docker tag  registry.cn-hangzhou.aliyuncs.com/loong576/configmap-reload:v0.0.1 quay.io/coreos/configmap-reload:v0.0.1docker tag registry.cn-hangzhou.aliyuncs.com/loong576/alertmanager:v0.18.0 quay.io/prometheus/alertmanager:v0.18.0docker tag registry.cn-hangzhou.aliyuncs.com/loong576/kube-state-metrics:v1.8.0 quay.io/coreos/kube-state-metrics:v1.8.0docker tag registry.cn-hangzhou.aliyuncs.com/loong576/kube-rbac-proxy:v0.4.1 quay.io/coreos/kube-rbac-proxy:v0.4.1docker tag registry.cn-hangzhou.aliyuncs.com/loong576/node-exporter:v0.18.1  quay.io/prometheus/node-exporter:v0.18.1docker tag  registry.cn-hangzhou.aliyuncs.com/loong576/k8s-prometheus-adapter-amd64:v0.5.0 quay.io/coreos/k8s-prometheus-adapter-amd64:v0.5.0docker tag  registry.cn-hangzhou.aliyuncs.com/loong576/prometheus-config-reloader:v0.33.0 quay.io/coreos/prometheus-config-reloader:v0.33.0docker tag registry.cn-hangzhou.aliyuncs.com/loong576/prometheus:v2.11.0 quay.io/prometheus/prometheus:v2.11.0docker tag registry.cn-hangzhou.aliyuncs.com/loong576/prometheus-operator:v0.33.0  quay.io/coreos/prometheus-operator:v0.33.0docker tag registry.cn-hangzhou.aliyuncs.com/loong576/grafana:6.4.3 grafana/grafana:6.4.3

删除镜像:

docker rmi -f  registry.cn-hangzhou.aliyuncs.com/loong576/configmap-reload:v0.0.1docker rmi -f registry.cn-hangzhou.aliyuncs.com/loong576/alertmanager:v0.18.0docker  rmi -f  registry.cn-hangzhou.aliyuncs.com/loong576/kube-state-metrics:v1.8.0docker  rmi -f  registry.cn-hangzhou.aliyuncs.com/loong576/kube-rbac-proxy:v0.4.1docker  rmi -f  registry.cn-hangzhou.aliyuncs.com/loong576/node-exporter:v0.18.1docker  rmi -f  registry.cn-hangzhou.aliyuncs.com/loong576/k8s-prometheus-adapter-amd64:v0.5.0docker  rmi -f  registry.cn-hangzhou.aliyuncs.com/loong576/prometheus-config-reloader:v0.33.0docker  rmi -f  registry.cn-hangzhou.aliyuncs.com/loong576/prometheus:v2.11.0docker  rmi -f  registry.cn-hangzhou.aliyuncs.com/loong576/prometheus-operator:v0.33.0docker  rmi -f  registry.cn-hangzhou.aliyuncs.com/loong576/grafana:6.4.3

以上三个步骤所有node节点都执行

3.执行安装

[root@master kube-prometheus]# kubectl create -f manifests/setup[root@master kube-prometheus]# kubectl create -f manifests/

4.资源查看

[root@master kube-prometheus]# kubectl get all -n monitoring [root@master kube-prometheus]# kubectl get prometheus --all-namespaces -o wide

所有资源都在monitoring命名空间中。

5.更改访问方式

[root@master kube-prometheus]# kubectl edit -n monitoring service prometheus-k8sservice/prometheus-k8s edited[root@master kube-prometheus]# kubectl edit -n monitoring service grafanaservice/grafana edited[root@master kube-prometheus]# kubectl edit -n monitoring service alertmanager-mainservice/alertmanager-main edited

分别修改service prometheus-k8s、grafana和alertmanager-main,service类型为NodePort,端口分别为30021、30022、30023

五、页面展示

1.访问 Prometheus

http://172.27.9.131:30021

2.访问 Alert Manager

http://172.27.9.131:30023


3.访问 Grafana

http://172.27.9.131:30022 用户名密码都为admin

内置模板查看:

集群资源查看:

kubelet查看:

StatefulSets查看:

Pod查看:

API查看:

namespace查看:

查看各节点资源使用:

Prometheus查看:

其他模板:

自带的模板很丰富,不过也可以下载其他模板,比如 '1 Node Exporter for Prometheus 监控展示看板 update!' :https://grafana.com/api/dashboards/8919/revisions/10/download

六、Prometheus Operator卸载

[root@master kube-prometheus]# kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup

本文所有脚本和配置文件已上传:k8s实践(十二):Prometheus Operator监控Kubernetes集群

0