基于Kubernetes部署Prometheus监控平台

news2025/3/30 21:26:12

#作者: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即可恢复
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2322836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

往期项目shader着色器实践效果应用合集

1、管路混色 2、水管水流效果 3、水管流入到流完效果 4、加热冷却 两 色混色 示意 XX、毒蘑菇测试效果

绿色暴政:Relax Max如何用军工科技定义环保新标准

《绿色暴政:Relax Max如何用军工科技定义环保新标准》 ——从隐形战斗机涂层到零碳卫浴的降维打击 (洛克希德马丁实验室,2023年)当F-35战斗机的隐形涂料配方被改写为卫浴釉料时,环保产业迎来了最硬核的颠覆者。Relax…

第十三届蓝桥杯单片机省赛程序设计试题

目录 试题 各程序块代码 init.c main.c other.h other.c key.c seg.c onewire.c部分 ds1302.c部分 试题 各程序块代码 init.c #include "other.h"void init74hc138(unsigned char n){P2(P2&0x1f)|(n<<5);P2&0x1f; } void init(){P00x00;in…

QOpenGLWidget动态加载功能实现教程(Qt+OpenGL)

QOpenGLWidget动态加载功能实现教程 我需要在Qt里面使用QOpenGLWidget显示OpenGL窗口&#xff0c;并且需要实现加载模型后重新渲染更新窗口的功能&#xff0c;但是一直无法更新被卡住了&#xff0c;现在把问题解决了总结一下整个实现过程。 创建一个自己的OpenGLWidget类 QOp…

ESP32驱动BMP280和MQ4传感器

文章目录 前言 一、硬件准备 所需组件 连接方式&#xff1a; 二、软件实现 1.所需库 2.代码实现 效果演示 三、上传Qt端 前言 在物联网和环境监测应用中&#xff0c;传感器是获取环境数据的关键组件。本文将详细介绍如何使用ESP32微控制器同时驱动BMP280大气压力传感器…

MQTT协议笔记

消息格式 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息协议&#xff0c;专为低带宽、高延迟或不可靠的网络设计&#xff0c;广泛应用于物联网&#xff08;IoT&#xff09;设备之间的通信。MQTT消息体的结构遵循MQTT协议规范&#xff0…

“征服HTML引号恶魔:“完全解析手册”!!!(quot;表示双引号)

&#x1f6a8;&#x1f4e2; "征服HTML引号恶魔&#xff1a;“完全解析手册” &#x1f4e2;&#x1f6a8; &#x1f3af; 博客引言&#xff1a;当引号变成"恶魔" &#x1f631; 是否遇到过这种情况&#xff1a; 写HTML时满心欢喜输入<div title"他…

如何使用VS中的Android Game Development Extension (AGDE) 来查看安卓 Logcat 日志

一、首先按照以下 指引 中的 第1、2步骤&#xff0c;安装一下 AGDE &#xff0c;AGDE 的安装包可以在官网上找到。 UE4 使用AndroidGameDevelopmentExtension&#xff08;AGDE&#xff09;对安卓客户端做“断点调试”与“代码热更”-CSDN博客 在执行第二步骤前&#xff0c;记得…

VSCode 生成HTML 基本骨架

在VSCode 新建html文件中敲一个英文感叹号 ! <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><titl…

【Spring AI】基于专属知识库的RAG智能问答小程序开发——功能优化:用户鉴权相关工具类代码

系列文章目录 【Spring AI】基于专属知识库的RAG智能问答小程序开发——完整项目&#xff08;含完整前端后端代码&#xff09;【Spring AI】基于专属知识库的RAG智能问答小程序开发——代码逐行精讲&#xff1a;核心ChatClient对象相关构造函数【Spring AI】基于专属知识库的R…

Solr-搜索引擎-入门到精通

以下是对 Apache Solr 的简介及其常用语法的快速入门指南&#xff1a; 一、Solr 是什么&#xff1f; • 核心定位&#xff1a;Apache Solr 是一个基于 Lucene 的高性能、开源的搜索平台&#xff0c;支持全文检索、分词、高亮、聚合统计等功能。 • 核心功能&#xff1a; • 全…

07_GRU模型

GRU模型 双向GRU笔记:https://blog.csdn.net/weixin_44579176/article/details/146459952 概念 GRU&#xff08;Gated Recurrent Unit&#xff09;也称为门控循环单元&#xff0c;是一种改进版的RNN。与LSTM一样能够有效捕捉长序列之间的语义关联&#xff0c;通过引入两个&qu…

【大模型基础_毛玉仁】3.4 Prompt 技巧

目录 3.4 Prompt 技巧3.4.1 规范Prompt 编写1&#xff09;任务说明要明确2&#xff09;上下文丰富且清晰3&#xff09;输出格式要规范4&#xff09;排版要清晰 3.4.2 合理归纳提问1&#xff09;复杂问题拆解2&#xff09;追问 3.4.3 适时使用CoT1&#xff09;何时使用CoT2&…

探索PyMOL新插件NRGSuite-Qt:全面提升分子对接、结合位点预测与动力学模拟的研究效率

随着分子建模和计算生物学的快速发展&#xff0c;分子对接&#xff08;Molecular Docking&#xff09;、结合位点预测、相互作用分析以及动力学研究等领域的工具越来越重要。这些工具不仅帮助研究人员理解分子间的相互作用机制&#xff0c;还能加速药物设计和优化过程。NRGSuit…

wokwi arduino mega 2560 - 键盘与LCD显示

截图&#xff1a; 链接&#xff1a; https://wokwi.com/projects/414520193913760769 代码&#xff1a; //cslg lcd key #include <LiquidCrystal.h> // 引入LiquidCrystal库&#xff0c;用于LCD显示 #include <Keypad.h> // 引入Keypad库&#xff0c;用于键盘输…

Linux设置SSH免密码密钥登录

文章目录 设置SSH免密码密钥登录第一步&#xff1a; 生成SSH密钥对&#xff08;在客户端操作&#xff09;方式一&#xff1a;Windows 10/11 内置的 OpenSSH 客户端&#xff08;推荐&#xff09;常用选项&#xff1a;密钥算法选择建议生成秘钥 方式二&#xff1a;借用Xshell工具…

深度剖析HTTP协议—GET/PUT请求方法的使用-构造请求的方法

活动发起人小虚竹 想对你说&#xff1a; 这是一个以写作博客为目的的创作活动&#xff0c;旨在鼓励大学生博主们挖掘自己的创作潜能&#xff0c;展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴&#xff0c;那么&#xff0c;快来参加吧&#xff01…

GPU算力哪家好?GpuGeek推出高性能GPU云服务

在人工智能和深度学习领域&#xff0c;GPU算力租赁已成为推动技术创新的关键因素。随着越来越多的企业和个人开发者投身于AI研究和应用开发&#xff0c;如何高效、灵活地获取GPU算力成为了一个亟待解决的问题。GpuGeek作为一站式AI基础设施平台&#xff0c;凭借其独特的优势&am…

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.3前馈网络(FFN)与激活函数(GELU)优化

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.3 前馈网络(FFN)与激活函数(GELU)优化1. 前馈网络(FFN)的架构设计与数学原理1.1 FFN在Transformer中的核心作用2. GELU激活函数的数学特性与优化2.1 GELU的数学形式与近似计算3. 逐行代码实现…

组态软件之万维组态介绍(web组态、html组态、vue2/vue3组态、组态软件、组态编辑器)

一、什么是组态软件 组态软件是一种用于创建、配置和管理监控和控制系统的软件工具。组态是指不需要编写计算机程序、通过配置的方式完成工业应用开发的系统。它们通常用于工业自动化领域&#xff0c;用于实时监视和控制工业过程。组态软件提供了丰富的功能和工具&#xff0c;使…