Prometheus-Operator:快速部署

1. 项目目标

(1)了解Prometheus-Operator的优势

(2)熟练掌握Prometheus-Operator部署

(3)操作Grafana对接Prometheus

2. 项目准备

2.1. 规划节点

主机名

主机IP

节点规划

Prometheus

主机IP

Prometheus-Operator

2.2. 基础准备

系统镜像:CentOS 7.9

github下载网址:prometheus-operator · GitHub

环境准备:kubernetes v1.26

3. 项目实施

3.1. Prometheus-Operator简介

1)什么是Prometheus-Operator

每次对Prometheus配置文件进行升级时,我们需要手动移除已经运行的Pod实例,从而让Kubernetes可以使用最新的配置文件创建Prometheus。 而如果当应用实例的数量更多时,通过手动的方式部署和升级Prometheus过程繁琐并且效率低下。

从本质上来讲Prometheus属于是典型的有状态应用,而其有包含了一些自身特有的运维管理和配置管理方式。而这些都无法通过Kubernetes原生提供的应用管理概念实现自动化。为了简化这类应用程序的管理复杂度,CoreOS率先引入了Operator的概念,并且首先推出了针对在Kubernetes下运行和管理Etcd的Etcd Operator。并随后推出了Prometheus Operator。

2)Prometheus Operator的工作原理

从概念上来讲Operator就是针对管理特定应用程序的,在Kubernetes基本的Resource和Controller的概念上,以扩展Kubernetes api的形式。帮助用户创建,配置和管理复杂的有状态应用程序。从而实现特定应用程序的常见操作以及运维自动化。

在Kubernetes中我们使用Deployment、DamenSet,StatefulSet来管理应用Workload,使用Service,Ingress来管理应用的访问方式,使用ConfigMap和Secret来管理应用配置。我们在集群中对这些资源的创建,更新,删除的动作都会被转换为事件(Event),Kubernetes的Controller Manager负责监听这些事件并触发相应的任务来满足用户的期望。这种方式我们成为声明式,用户只需要关心应用程序的最终状态,其它的都通过Kubernetes来帮助我们完成,通过这种方式可以大大简化应用的配置管理复杂度。

而除了这些原生的Resource资源以外,Kubernetes还允许用户添加自己的自定义资源(Custom Resource)。并且通过实现自定义Controller来实现对Kubernetes的扩展。

如下所示,是Prometheus Operator的架构示意图:

Prometheus Operator架构

Prometheus的本职就是一组用户自定义的CRD资源以及Controller的实现,Prometheus Operator负责监听这些自定义资源的变化,并且根据这些资源的定义自动化的完成如Prometheus Server自身以及配置的自动化管理工作。

3)相比原生Prometheus其优势?

Prometheus Operator 是一个为 Kubernetes 设计的 Prometheus 监控系统的自动化管理工具,它在 Prometheus 的基础上提供了一系列的优势和增强功能:

  1. 自动化部署:Prometheus Operator 可以自动创建和管理 Prometheus 实例,简化了部署过程。
  2. 声明式配置:通过 Kubernetes 的自定义资源定义(CRDs),Prometheus Operator 允许使用声明式配置来管理 Prometheus 实例,ServiceMonitors,Alertmanagers 等。
  3. 自动发现:Prometheus Operator 支持自动发现 Kubernetes 服务和 Pod,减少了手动配置的需要。
  4. 水平扩展:Prometheus Operator 支持 Prometheus 实例的水平扩展,可以根据需求自动调整实例数量。
  5. 高可用性:Prometheus Operator 支持在 Kubernetes 集群中自动部署多个 Prometheus 实例,以实现高可用性。
  6. 集成 Alertmanager:Prometheus Operator 可以自动配置和管理 Alertmanager 实例,简化了告警系统的设置和管理。
  7. 监控规则管理:通过 PrometheusRule CRD,Prometheus Operator 允许定义告警规则,这些规则可以自动被 Prometheus 加载。
  8. ServiceMonitor CRD:允许定义要监控的 Kubernetes 服务,Prometheus Operator 将自动生成适当的监控配置。
  9. 维护简便:Prometheus Operator 封装了 Prometheus 的运维经验,提供了友好的管理接口,简化了日常的维护工作。
  10. 社区支持:由于 Prometheus Operator 是一个活跃的开源项目,它拥有一个强大的社区支持,这意味着用户可以从社区中获得帮助和分享最佳实践。
  11. 与 Grafana 的集成:Prometheus Operator 通常与 Grafana 一起使用,用于可视化监控数据,它简化了 Grafana Dashboard 的配置和使用。
  12. 适应 Kubernetes 生态:Prometheus Operator 作为 Kubernetes 生态的一部分,与 Kubernetes 的其他组件和工具(如 kube-prometheus-stack)有很好的集成。

3.2. 部署Prometheus-Operator

1)查看自己的kubernetes集群环境
[root@prometheus ]# kubectl get nodes
NAME        STATUS   ROLES    AGE   VERSION
10.0.1.10   Ready    master   42m   v1.26.0

2)下载kube-prometheus
git clone  -b release-0.13  https://github.com/prometheus-operator/kube-prometheus.git

根据自己的环境更改release版本号

3)部署
[root@prometheus ~]# cd kube-prometheus/
[root@prometheus ~]# kubectl apply --server-side -f manifests/setup
[root@prometheus ~]# kubectl wait \--for condition=Established \--all CustomResourceDefinition \--namespace=monitoring
[root@prometheus ~]# kubectl apply -f manifests/
4)查看pod状态
[root@prometheus ~]# kubectl get pod -n monitoring
NAME                                   READY   STATUS    RESTARTS   AGE
alertmanager-main-0                    2/2     Running   0          28m
alertmanager-main-1                    2/2     Running   0          28m
alertmanager-main-2                    2/2     Running   0          28m
blackbox-exporter-59dddb7bb6-sj8lt     3/3     Running   0          28m
grafana-79f47474f7-nxnkv               1/1     Running   0          28m
kube-state-metrics-5884fb96b-6vx92     3/3     Running   0          28m
node-exporter-pwnj7                    2/2     Running   0          28m
prometheus-adapter-6c4cc5465b-htb7z    1/1     Running   0          28m
prometheus-adapter-6c4cc5465b-s9hv7    1/1     Running   0          28m
prometheus-k8s-0                       2/2     Running   0          28m
prometheus-k8s-1                       2/2     Running   0          28m
prometheus-operator-57cf88fbcb-hxjdp   2/2     Running   0          28m

全部pod running了就代表部署成功。

5)访问Prometheus
[root@prometheus ~]# kubectl get svc -n monitoring
NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
alertmanager-main       ClusterIP   10.68.101.241   <none>        9093/TCP,8080/TCP            34m
alertmanager-operated   ClusterIP   None            <none>        9093/TCP,9094/TCP,9094/UDP   34m
blackbox-exporter       ClusterIP   10.68.86.56     <none>        9115/TCP,19115/TCP           34m
grafana                 ClusterIP   10.68.11.125    <none>        3000/TCP                     34m
kube-state-metrics      ClusterIP   None            <none>        8443/TCP,9443/TCP            34m
node-exporter           ClusterIP   None            <none>        9100/TCP                     34m
prometheus-adapter      ClusterIP   10.68.185.106   <none>        443/TCP                      34m
prometheus-k8s          ClusterIP   10.68.102.244   <none>        9090/TCP,8080/TCP            34m
prometheus-operated     ClusterIP   None            <none>        9090/TCP                     34m
prometheus-operator     ClusterIP   None            <none>        8443/TCP                     34m
[root@prometheus ~]# kubectl edit svc -n monitoring prometheus-k8s
端口映射port-forward方法

Prometheus:

kubectl --namespace monitoring port-forward svc/prometheus-k8s --address 0.0.0.0 19090:9090

Grafana:

kubectl --namespace monitoring port-forward svc/grafana --address 0.0.0.0 13000:3000

默认账号密码:admin/admin

Alertmanager:

kubectl --namespace monitoring port-forward svc/alertmanager-main --address 0.0.0.0 19093:9093

NodePort暴露端口方法

Prometheus:

apiVersion: v1
kind: Service
metadata:labels:app.kubernetes.io/component: prometheusapp.kubernetes.io/instance: k8sapp.kubernetes.io/name: prometheusapp.kubernetes.io/part-of: kube-prometheusapp.kubernetes.io/version: 2.46.0name: prometheus-k8snamespace: monitoring
spec:type: NodePort  #修改添加svc的typeports:- name: webport: 9090targetPort: webnodePort: 30001 #添加修改需要暴露的nodeport- name: reloader-webport: 8080targetPort: reloader-webselector:app.kubernetes.io/component: prometheusapp.kubernetes.io/instance: k8sapp.kubernetes.io/name: prometheusapp.kubernetes.io/part-of: kube-prometheussessionAffinity: ClientIP
[root@prometheus kube-prometheus]# kubectl apply -f manifests/prometheus-service

Grafana:

apiVersion: v1
kind: Service
metadata:labels:app.kubernetes.io/component: grafanaapp.kubernetes.io/name: grafanaapp.kubernetes.io/part-of: kube-prometheusapp.kubernetes.io/version: 9.5.3name: grafananamespace: monitoring
spec:type: NodePort  #修改添加svc的typeports:- name: httpport: 3000targetPort: httpnodePort: 30002 #添加修改需要暴露的nodeportselector:app.kubernetes.io/component: grafanaapp.kubernetes.io/name: grafanaapp.kubernetes.io/part-of: kube-prometheus
[root@prometheus kube-prometheus]# kubectl apply -f manifests/grafana-service.yaml

3.3. Grafana对接Prometheus

在左侧菜单栏找到 Administration -> Data sources

添加 Data sources

输入Prometheus连接信息

单击Test,出现Data source is working即为成功

然后到Grafana控制台进行导入模版,单击右侧加号 -> Import dashboard

输入k8s for Prometheus的ID号 15661 -> load

填写options详细信息 -> import

查看k8s的dashboard

4. 项目总结

本博客讲解了Prometheus的简介,以及如何通过Prometheues Opeartor方式进行快速部署Prometheues以及Grafana模版使用等内容。

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

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

相关文章

如何克服挑战?跨境电商平台开发中的关键挑战解析

在当今的数字化时代&#xff0c;跨境电商平台开发成为了许多企业所关注的焦点。然而&#xff0c;随之而来的是一系列挑战&#xff0c;需要克服才能确保项目成功推进。从法律合规、支付结算到物流运输&#xff0c;跨境电商平台开发中的挑战多而复杂。本文将针对跨境电商平台开发…

【Matlab】Matlab之美,抓紧来膜拜大神的创星之作(附2024Matlab教程+代码)

软件介绍 MATLAB是一款商业数学软件&#xff0c;用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境&#xff0c;主要包括MATLAB和Simulink两大部分&#xff0c;可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序…

福派斯鸭肉梨狗粮,让狗狗告别泪痕困扰!值得一试吗?

亲爱的宠友们&#xff0c;你们是不是也为自家狗狗的泪痕问题头疼不已呢&#xff1f;&#x1f914;今天我就来给大家聊聊福派斯鸭肉梨去泪痕狗粮&#xff0c;看看这款狗粮究竟怎么样&#xff0c;去泪痕效果好不好&#xff0c;以及值不值得入手哦&#xff01; 首先&#xff0c;我…

【MySQL】SQL基本知识点DDL(1)

目录 1.SQL分类&#xff1a; 2.DDL-数据库操作 3.DDL-表操作-创建 4.DDL-表操作-查询 5.DDL-表操作-数据类型 6.DDL-表操作-修改 1.SQL分类&#xff1a; 2.DDL-数据库操作 3.DDL-表操作-创建 注意&#xff1a;里面的符号全部要切换为英文状态 4.DDL-表操作-查询 5.DDL…

如何内网穿透,远程访问内网设备

文章目录 0.前言1.准备工作2.内网穿透原理3.配置公网服务器的frp5.配置访问内网主机6.配置win10的远程桌面访问&#xff08;win11类似&#xff09;7.参考资料 0.前言 最近想研究一些新东西&#xff0c;公司的机器不敢乱搞&#xff0c;公司测试的服务器安装软件太多&#xff0c…

【送书福利第六期】Java开发的150多个坑,你踩过几个?(文末送书)

文章目录 做Java开发别掉坑里还不知道 程序员为什么会掉到坑里却不自知&#xff1f;第一是意识不到坑的存在。第二是有些 bug 或问题只在特定情况下暴露。第三是变化不明显的性能问题。 《Java开发坑点解析&#xff1a;从根因分析到最佳实践》Java 开发完美避坑指南结语 &#…

zblog中用户中心-邀请码注册插件的导出功能补充

自己加了一个导出未使用的邀请码功能&#xff0c;可惜我不是入驻作者&#xff0c;没有权限发布&#xff0c;之前被一条大河拒了&#xff0c;他说我抄他代码&#xff0c;不给我过审还冷嘲热讽&#xff0c;我一气之下&#xff0c;就没继续申请了&#xff0c;话说我是专业搞java开…

中国地图(2024版审图号地图)和地图变化说明

2024版shp格式审图号地图预览图&#xff1a; 新版中国地图的变化&#xff08;简述&#xff09; 国土面积的增加&#xff1a;新版中国地图显示&#xff0c;中国的国土面积从960万平方公里增加到1045万平方公里&#xff0c;增加了85万平方公里。 九段线变为十段线&#xff1a;…

RFID工业读写器在危化品储存管理的优势有哪些?

在化学品和危险品储存管理领域&#xff0c;传统的管理方式通常存在一些痛点和挑战&#xff1a;化学品和危险品的管理主要依赖于人工记录和监控&#xff0c;容易出现数据不准确、遗漏、混淆等问题&#xff0c;导致安全隐患和管理困难。化学品和危险品的存储和管理涉及到一系列安…

#04 构建您的第一个神经网络:PyTorch入门指南

文章目录 前言理论基础神经网络层的组成前向传播与反向传播 神经网络设计步骤1&#xff1a;准备数据集步骤2&#xff1a;构建模型步骤3&#xff1a;定义损失函数和优化器步骤4&#xff1a;训练模型步骤5&#xff1a;评估模型结论 前言 在过去的几天里&#xff0c;我们深入了解了…

InLine Chat功能优化对标Github Copilot,CodeGeeX带来更高效、更直观的编程体验!

VSCode中的CodeGeeX 插件上线InLine Chat功能后&#xff0c;收到不少用户的反馈&#xff0c;大家对行内交互编程这一功能非常感兴趣。近期我们针对这个功能再次进行了深度优化&#xff0c;今天详细介绍已经在VSCode插件v2.8.0版本上线的 CodeGeeX InLine Chat功能&#xff0c;以…

C++ 多态的相关问题

目录 1. 第一题 2. 第二题 3. inline 函数可以是虚函数吗 4. 静态成员函数可以是虚函数吗 5. 构造函数可以是虚函数吗 6. 析构函数可以是虚函数吗 7. 拷贝构造和赋值运算符重载可以是虚函数吗 8. 对象访问普通函数快还是访问虚函数快 9. 虚函数表是什么阶段生成的&…

SQL的命令

目录 创建用户 ​编辑 DDL数据库操作 查询 创建 使用 删除 创建数据库表 在表中修改字段 查询表 DML 添加数据 修改 删除 DQL 查询 创建用户 DDL数据库操作 查询 show databases; 创建 权限问题导致无法创建&#xff0c;连接root修改用户权限 CREATE DATABAS…

企业微信创建应用(一)

登录到企业微信后台管理(https://work.weixin.qq.com/)进入自建应用(应用管理-应用-创建应用) 3.查看参数AgentId和 Secret 4.企业微信查看效果

报表控件Stimulsoft指南:在 JavaScript 报告工具中使用节点计划

我们最近发布了一篇关于使用Quartz.NET 库自动执行报告任务的文章。继续这个主题&#xff0c;今天我们将深入探讨我们的报告如何与 Node Schedule 作业调度程序集成。 Stimulsoft Ultimate &#xff08;原Stimulsoft Reports.Ultimate&#xff09;是用于创建报表和仪表板的通用…

《C语言文件处理:从新手到高手的跃迁》

&#x1f4c3;博客主页&#xff1a; 小镇敲码人 &#x1f49a;代码仓库&#xff0c;欢迎访问 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f30f; 任尔江湖满血骨&#xff0c;我自踏雪寻梅香。 万千浮云遮碧…

matlab-贪婪算法寻找最小覆盖

文章目录 一、最小结点集是什么二、贪婪算法实现查找最小结点集代码结果 一、最小结点集是什么 最小覆盖集&#xff08;也称为最小点覆盖集&#xff09;是图论中的一个重要概念&#xff0c;指的是一个节点子集&#xff0c;使得图中的每一条边都与这个子集中的至少一个节点关联…

一款助力工程项目管理智能化的神器——企智汇工程项目管理系统!

大家好&#xff0c;今天我要向大家介绍一款能够助力工程项目管理智能化的神器——企智汇工程项目管理系统。 在工程项目管理中&#xff0c;信息不对称、数据不共享、沟通不畅等问题一直困扰着管理者和工程师们。而企智汇正是为了解决这些问题而生的。 一、项目全过程可视化&a…

qt: undefined reference to `vtable for aaa‘

版本qt4.8.6&#xff0c;编译报错“main.cpp:(.text0x3b): undefined reference to vtable for aaa” 就一个main.cpp #include <QApplication> #include <QTimer> #include <QCursor> #include <QMouseEvent> #include <QDesktopWidget> #inc…

力扣每日一题-统计已测试设备-2024.5.10

力扣题目&#xff1a;统计已测试设备 题目链接: 2960.统计已测试设备 题目描述 代码思路 根据题目内容&#xff0c;第一感是根据题目模拟整个过程&#xff0c;在每一步中修改所有设备的电量百分比。但稍加思索&#xff0c;发现可以利用已测试设备的数量作为需要减少的设备电…