当前位置: 首页 > news >正文

基于Kubernetes部署Prometheus监控平台

#作者:stackofumbrella

文章目录

  • prometheus和k8s集群版本对照表
  • 架构
  • Prometheus Operator简介
    • kube-prometheus下载地址
  • 安装
    • 修改镜像地址
    • 修改Prometheus的service
    • 修改Grafana的service
    • 修改Alertmanager的service
    • 数据持久化
    • 执行安装
  • Prometheus验证
    • Grafana验证
    • 解决ControllerManager、Scheduler监控问题

prometheus和k8s集群版本对照表

kube-prometheus stackKubernetes 1.23Kubernetes 1.24Kubernetes 1.25Kubernetes 1.26Kubernetes 1.27Kubernetes 1.28Kubernetes 1.29Kubernetes 1.30Kubernetes 1.31
release-0.11xxxxxx
release-0.12xxxxxx
release-0.13xxxx
release-0.14x
mainxx

架构

在这里插入图片描述
kube-prometheus是一个完整的监控解决方案,可以轻松地将其部署到kubernetes集群中,它包括以下内容

  1. Prometheus用于度量收集

  2. Alertmanager用于指标警报和通知

  3. Grafana用于图形用户界面

  4. 一组特定于K8s的exporters用作指标收集代理

  5. 使用Prometheus Operator来简化和自动化该堆栈的设置

Prometheus Operator简介

由于Prometheus本身没有提供管理配置的API接口(尤其是管理监控目标和管理警报规则),也没有提供好用的多实例管理手段,因此这一块往往要自己写一些代码或脚本。为了简化这类应用程序的管理复杂度,CoreOS率先引入了Operator的概念,并且首先推出了针对在Kubernetes下运行和管理Etcd的Etcd Operator。并随后推出了Prometheus Operator
prometheus-operator和kube-prometheus前者只包含了Prometheus Operator,后者既包含了Operator,又包含了Prometheus相关组件的部署及常用的Prometheus自定义监控,具体包含下面的组件
The Prometheus Operator:创建CRD自定义的资源对象
Highly available Prometheus:创建高可用的Prometheus
Highly available Alertmanager:创建高可用的告警组件
Prometheus node-exporter:创建主机的监控组件
Prometheus Adapter for Kubernetes Metrics APIs:创建自定义监控的指标工具(例如可以通过nginx的request来进行应用的自动伸缩)
kube-state-metrics:监控k8s相关资源对象的状态指标
Grafana:进行图像展示

kube-prometheus下载地址

https://github.com/prometheus-operator/kube-prometheus/archive/refs/tags/v0.13.0.tar.gz

安装

$ tar -C ./ -xf v0.13.0.tar.gz
$ cd kube-prometheus-0.13.0/manifests/
$ ls -lh *-networkPolicy.yaml
网络策略文件建议删除prometheus-networkPolicy.yaml、grafana-networkPolicy.yaml、alertmanager-networkPolicy.yaml
在这里插入图片描述

修改镜像地址

由于网络原因kube-state-metrics和prometheus-adapter镜像在国内无法下载,因此需要修改以下地址
$ vim kubeStateMetrics-deployment.yaml
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
$ vim prometheus-prometheus.yaml
在这里插入图片描述
$ vim prometheusAdapter-deployment.yaml
在这里插入图片描述
$ vim alertmanager-alertmanager.yaml
在这里插入图片描述
$ vim grafana-deployment.yaml
在这里插入图片描述
$ vim prometheusOperator-deployment.yaml
在这里插入图片描述
在这里插入图片描述
$ vim blackboxExporter-deployment.yaml
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
$ vim nodeExporter-daemonset.yaml
在这里插入图片描述
在这里插入图片描述

修改Prometheus的service

$ vim prometheus-service.yaml
在这里插入图片描述

修改Grafana的service

$ vim grafana-service.yaml
在这里插入图片描述

修改Alertmanager的service

$ vim alertmanager-service.yaml
在这里插入图片描述

数据持久化

$ prometheus-prometheus.yaml
在这里插入图片描述
$ vim grafana-deployment.yaml
在这里插入图片描述
为grafana新增pvc
$ vim grafana-pvc.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: monitoring
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: grafana-data
  namespace: monitoring
  annotations:
    volume.beta.kubernetes.io/storage-class: "nfs-client"
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 8Gi

创建grafana的pvc
$ kubectl apply -f grafana.yaml

由于grafana默认时区是UTC,比中国时间慢了8小时,很不便于日常监控查看,需要进行修改
$ sed -i ‘s/utc/utc+8/g’ grafana-dashboardDefinitions.yaml

$ sed -i ‘s/UTC/UTC+8/g’ grafana-dashboardDefinitions.yaml

$ grep -i timezone grafana-dashboardDefinitions.yaml

执行安装

$ cd kube-prometheus-0.13.0
$ kubectl apply --server-side -f manifests/setup
$ kubectl apply -f manifests/
$ kubectl get pods -n monitoring

在这里插入图片描述

Prometheus验证

选择一台node节点IP+31000访问
在这里插入图片描述

Grafana验证

选择一台node节点IP+31002访问,默认用户名密码:admin/admin
在这里插入图片描述

解决ControllerManager、Scheduler监控问题

默认安装后访问prometheus会发现有三个报警:Watchdog、KubeControllerManagerDown、KubeSchedulerDown

Watchdog是一个正常的报警,这个告警的作用是如果alermanger或prometheus本身挂掉了就发不出告警了,因此一般会采用另一个监控来监控prometheus,或自定义一个持续不断的告警通知,哪一天这个告警通知不发了,说明监控出现问题了。
prometheus operator已经考虑了这一点,本身携带一个watchdog,作为对自身的监控。如果需要关闭,删除或注释掉Watchdog部分

$ vim prometheus-rules.yaml

修改/etc/kubernetes/manifests/kube-controller-manager.yaml文件,将–bind-address=127.0.0.1改为–bind-address=0.0.0.0

新增prometheus-kubeControllerManagerService.yaml

apiVersion: v1
kind: Service
metadata:
  namespace: kube-system
  name: kube-controller-manager
  labels:
    app.kubernetes.io/name: kube-controller-manager  #要与kubernetesControlPlane-serviceMonitorKubeControllerManager.yaml文件的spec.selector.matchLabels相同
spec:
  selector:
    component: kube-controller-manager#此处注意为kube-controller-manager pod的标签
  ports:
  - name: https-metrics#名字要与kubernetesControlPlane-serviceMonitorKubeControllerManager.yaml文件的spec.endpoints.port值相同
    port: 10257#注意端口号要正确
    targetPort: 10257#注意端口号要正确
    protocol: TCP

$ kubectl apply -f prometheus-kubeControllerManagerService.yaml

修改/etc/kubernetes/manifests/kube-scheduler.yaml文件,将–bind-address=127.0.0.1改为–bind-address=0.0.0.0

新增prometheus-kubeSchedulerService.yaml文件

apiVersion: v1
kind: Service
metadata:
  namespace: kube-system
  name: kube-scheduler
  labels:
    app.kubernetes.io/name: kube-scheduler  #要与kubernetesControlPlane-serviceMonitorKubeScheduler.yaml文件的spec.selector.matchLabels相同
spec:
  selector:
    component: kube-scheduler   #此处注意为kube-scheduler pod的标签
  ports:
  - name: https-metrics   #名字要与kubernetesControlPlane-serviceMonitorKubeScheduler.yaml文件的spec.endpoints.port值相同
    port: 10259#注意端口号要正确
    targetPort: 10259#注意端口号要正确
    protocol: TCP

$ kubectl apply -f prometheus-kubeControllerManagerService.yaml
刷新prometheus即可恢复
在这里插入图片描述

相关文章:

  • 探索PyMOL新插件NRGSuite-Qt:全面提升分子对接、结合位点预测与动力学模拟的研究效率
  • spring batch 中JpaNamedQueryProvider、JpaNativeQueryProvider两种查询方式对比
  • Graphpad Prism for Mac医学绘图
  • Svelte 深度理解
  • 31天Python入门——第15天:日志记录
  • 深度学习入门1 基于Python的理论与实现
  • Photoshop 2025安装包下载及Photoshop 2025详细图文安装教程
  • 【LeetCode 题解】算法:8.字符串转换整数(atoi)
  • 自动化测试selenium(Java版)
  • CentOS 8 安装 Redis 全流程指南:从基础部署到远程安全配置
  • 音视频 三 看书的笔记 MediaPlayer的C/S架构
  • 数据库设计-笔记4
  • DeepSeek深度解析:AI在体育比分网中的应用场景与技术实践
  • Kali Linux 下安装 Sublime Text 详细教程
  • 各类神经网络学习:(五)LSTM 长短期记忆(上集),结构详解
  • 01 设计模式和设计原则
  • AI 在测试中的应用:从自动化到智能化的未来
  • Ubuntu下UEFI安全启动安装Nvdia驱动
  • JavaScript Fetch API
  • el-table + el-pagination 前端实现分页操作
  • 中方发布《不跪!》视频传递何种信息?外交部回应
  • 见证上海援藏30年成果,萨迦非遗珍品展来沪
  • 《奇袭白虎团》原型人物之一赵顺合辞世,享年95岁
  • 上海质子重离子医院已收治8000例患者,基本覆盖国内常见恶性肿瘤
  • 学大教育:去年净利润1.797亿元,学习中心增加约60所
  • 全球首台环形CT直线加速器在沪正式开机,系我国自主研发