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://www.hqwc.cn/news/689719.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贪心算法----摆动序列

今日题目&#xff1a;leetcode376 点击跳转题目 观察样例2&#xff1a; 发现最长摆动序列都是极大值和极小值 再加上两个端点&#xff0c;那么我们保证每次都能选择到每个极值点&#xff0c;就能从局部最优推广全局最优了&#xff01; 但是还有一些细节情况需要注意&#xff…

Netty核心组件介绍

Netty是一款用于创建高性能网络应用程序的高级框架。Netty的核心组件如下&#xff1a; Channel回调Future事件和ChannelHander Channel channel是Java NIO的一个基本构造。可以把Channel看作是传入或传出数据的载体。它可以被打开或关闭&#xff0c;连接或断开连接。 回调 …

excel表格里,可以把百分号放在数字前面吗?

在有些版本里是可以的&#xff0c;这样做&#xff1a; 选中数据&#xff0c;鼠标右键&#xff0c;点击设置单元格格式&#xff0c;切换到自定义&#xff0c;在右侧栏输入%0&#xff0c;点击确定就可以了。 这样设置的好处是&#xff0c;它仍旧是数值&#xff0c;并且数值大小没…

攻防世界-web-command_execution

题目&#xff1a; 原理&#xff1a; | 的作用为将前一个命令的结果传递给后一个命令作为输入 &&的作用是前一条命令执行成功时&#xff0c;才执行后一条命令 方法一&#xff1a; 第一步&#xff1a; 1.打开浏览器&#xff0c;在文本框内输入127.0.0.1 | find / -name…

【算法】二叉树中的dfs

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、计算布尔二叉树的值二、求根节点到叶节点数字之和三、二叉树剪枝四、验证搜索二叉树五、二叉搜索树中…

搭建一个Xx431?

搭建一个Xx431? 嘿uu们!刚结束了一周六天班感觉如何? 我的状态倒还行,工作生活总能找到乐子,本周整活就是用纸巾和蛋糕托做的油灯,另外想制冷片做个温水冷水可调的杯托,但我还不会搞3d,希望今年能搞起来. 题外话就说到这,这个选题也是因为实际遇到的问题需要这玩意,下班路…

【Android】Apk图标的提取、相同目录下相同包名提取的不同图标apk但是提取结果相同的bug解决

一般安卓提取apk图标我们有两种常用方法&#xff1a; 1、如果已经获取到 ApplicationInfo 对象&#xff08;假设名为 appInfo&#xff09;&#xff0c;那么我们获取方法为&#xff1a; appInfo.loadIcon(packageManager)// 返回一个 Drawable 对象2、 如果还没获取到 Applica…

linux上使用mariadb安装mysql环境

之前都是手动安装mysql数据库&#xff0c;现在尝试下在线安装&#xff0c;为后面的项目部署做准备&#xff0c;突然发现使用mariadb安装mysql环境真的超级简单。 1.使用mariadb安装mysql 安装服务端&#xff1a; yum install mariadb-server -y 安装客户端&#xff1a; yum i…

618洗地机推荐,市面上各式各样的洗地机怎么选?这里有答案

洗地机的出现极大地改变了清洁方式&#xff0c;通过结合扫地、拖地、吸尘等多种功能&#xff0c;实现了一机多用的便捷清洁体验。而且洗地机不需要弯腰&#xff0c;每次也不用清洁很长时间&#xff0c;节省出来的时间可以更好的休息&#xff0c;但是市面上各式各样的洗地机怎么…

基于springboot+vue+Mysql的外卖点餐系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

virtualbox下ubantu20.04版本实现与window的复制粘贴

1.建议开启双向 2.打开Ubuntu命令终端 快捷键 ctrialtt&#xff0c;具体在设置里面查看快捷键 3.卸载已有工具 sudo apt-get autoremove open-vm-tools4.安装 sudo apt-get install open-vm-tools-desktop5.记得sudo reboot重启 sudo reboot这里记得加上sudo&#xff0c;…

【管理咨询宝藏96】企业数字化转型的中台战略培训方案

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏96】企业数字化转型的中台战略培训方案 【格式】PDF版本 【关键词】SRM采购、制造型企业转型、数字化转型 【核心观点】 - 数字化转型是指&…