Prometheus Operator部署管理

2024-08-25 07:52

本文主要是介绍Prometheus Operator部署管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Prometheus Operator部署管理

Prometheus Operator & Kube-Prometheus & Helm chart 部署区别

  • Prometheus Operator 是 Kubernetes 原生的工具,它通过将 Prometheus 资源定义为 Kubernetes 对象(CRD)来简化 Prometheus 集群的管理。它自动化了在 Kubernetes 中配置和扩展 Prometheus 实例时涉及的常见任务,并提供了在 Kubernetes 环境中部署、配置和管理 Prometheus 的简单方式。
      1. 通过 kubectl 或 Kubernetes API 创建 Prometheus Operator Custom Resource Definition (CRD)。
      1. 使用 kubectl 或 YAML 文件创建 Prometheus 实例的定义。
      1. Prometheus Operator 观察配置更改并创建、更新或删除 Prometheus 实例。
    • 官方安装文档: https://prometheus-operator.dev/docs/user-guides/getting-started/ 需要Kubernetes版本至少在v1.16.x以上。
    • 官方Github地址:https://github.com/prometheus-operator/prometheus-operator
  • kube-prometheus 提供基于Prometheus & Prometheus Operator完整的集群监控配置示例,包括多实例Prometheus & Alertmanager部署与配置及node exporter的metrics采集,以及scrape Prometheus target各种不同的metrics endpoints,并提供Alerting rules一些示例,触发告警集群潜在的问题。
      1. 使用 YAML 文件或 Helm chart 安装 Kube-Prometheus。
      1. Kube-Prometheus 部署 Prometheus、Alertmanager、Grafana 和 Pushgateway 等组件。
      1. 使用 Prometheus Operator 观察和管理 Prometheus 和相关组件。
    • 官方安装文档:https://prometheus-operator.dev/docs/prologue/quick-start/
    • 安装要求:https://github.com/prometheus-operator/kube-prometheus#compatibility
    • 官方Github地址:https://github.com/prometheus-operator/kube-prometheus
  • helm chart prometheus-community/kube-prometheus-stack 提供类似kube-prometheus的功能,但是该项目是由Prometheus-community来维护。
      1. 安装 Helm 并添加 Prometheus Helm chart 存储库。
      1. 使用 Helm 安装 Prometheus chart,包括 Prometheus、Alertmanager 和 Pushgateway 等组件。
    • 具体信息参考https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#kube-prometheus-stack

总结: 三者部署 Prometheus 的区别

  • Prometheus Operator 可以更加自动化的管理 Prometheus 集群;
  • Kube-Prometheus 则提供了更加全面的监控解决方案,包括 Prometheus、Grafana 和 Alertmanager 等组件;
  • Helm chart 则通过一个命令即可快速部署 Prometheus 及其相关组件,但无法方便地进行各个组件的管理。

Kube-Prometheus:目前是k8s集群监控的主流项目,主要使用Prometheus做集群监控,使用Prometheus Operator做监控的运维管理,也就是以上二者的结合。

Prometheus-Operator CRD资源

CRD 全称是 Custom Resource Definition

什么是 CRD?

以 Deployment 为实例,Deployment 没有直接创建 Pod,而是管理 RS,而 RS 管理 Pod,这就是控制器模式。控制器模式允许基于已有的资源定义更高阶的控制器,用来实现更复杂的能力

在这里插入图片描述

特点:

  • CRD 本身是 Kubernetes 的一种资源,允许用户自定义新的资源类型
  • CRD 允许用户基于已有的 Kubernetes 资源,例如 DeploymentConfigmap 等,拓展集群能力
  • CRD 可以自定义一套成体系的规范,自造概念

CRD 本身是一种 Kubernetes 内置的资源类型,即自定义资源的定义,用于描述用户定义的资源是什么样子

$ kubectl get crd
NAME                                             CREATED AT
applications.app.k8s.io                          2022-08-12T10:01:21Z
authconfigs.enterprise.gloo.solo.io              2022-08-25T03:54:14Z

Prometheus-Operator CRD

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

  • Kubernetes 自定义资源:使用 Kubernetes CRD 来部署和管理 Prometheus、Alertmanager 和相关组件。
  • 简化的部署配置:直接通过 Kubernetes 资源清单配置 Prometheus,比如版本、持久化、副本、保留策略等等配置。
  • Prometheus 监控目标配置:基于熟知的 Kubernetes 标签查询自动生成监控目标配置,无需学习 Prometheus 特地的配置

image-20240824205041268

上面架构图中,各组件以不同的方式运行在 Kubernetes 集群中(之前都是用配置文件来配置,现在都是通过资源对象)

CRD 名称作用
Operator根据自定义资源(Custom Resource Definition / CRDs)来部署和管理 Prometheus Server,同时监控这些自定义资源事件的变化来做相应的处理,是整个系统的控制中心。
Prometheus最核心的一个CRD, 控制prometheus server的statefulset状态。该CRD用于部署、管理prometheus stateful实例,以及配置该prometheus实例与ServiceMonitor(通过serviceMonitorNamespaceSelector标签)、Altermanager(通过alertmanagers标签)、PromtheusRule(通过ruleSelector标签)之间的关联。 一个Prometheus crd 资源创建后,promtheus-operator会自动创建一个prometheus stateful实例。
Prometheus ServerOperator 根据自定义资源 Prometheus 类型中定义的内容而部署的 Prometheus Server 集群,这些自定义资源可以看作是用来管理 Prometheus Server 集群的 StatefulSets 资源。
ServiceMonitor纯配置,Operator告诉prometheus server , 要监控的 targets是基于k8s service动态发现。 Operator基于servicemonitor的配置生成promtheus的标准配置文件promtheus.yml。注意的是,ServiceMonitor中的endpoint被转换为prometheus.yml中的kubernetes_sd_configs标签,即服务发现仍然是通过prometheus的原生能力完成的,ServiceMonitor或prometheus-operator并不具备服务发现能力,仅仅是配置转换与应用能力。
Service简单的说就是 Prometheus 监控的对象。提供给ServiceMonitor选取,让Prometheus Server来获取信息。
Alertmanager用于部署和管理promtheus的Altermanager实例.一个Altermanager资源定义会对应于一个stateful实例,prometheus-opertaor会根据Alertmanager中指定replicas、image、RBAC等信息将promtheus的altermanager pod部署,prometheus实例会自动与该Alertmanager相关联,共同完成监控->告警的链路。
PrometheusRule用于生成promtheus的告警规则文件.纯配置项。promtheus-operator会将该资源转换为prometheus的rule文件,挂在于prometheus实例的文件系统中。

部署 Kube-Prometheus

概述

kube-prometheus 是一整套监控解决方案,它使用 Prometheus 采集集群指标,Grafana 做展示,包含如下组件

  • The Prometheus Operator
  • Highly available Prometheus
  • Highly available Alertmanager
  • Prometheus node-exporter
  • Prometheus Adapter for Kubernetes Metrics APIs (k8s-prometheus-adapter)
  • kube-state-metrics
  • Grafana

**注意:**kube-promethues与kubernetes的版本对应关系如下:

prometheus-operator/kube-prometheus: Use Prometheus to monitor Kubernetes and applications running on Kubernetes (github.com)

kube-prometheus stackKubernetes 1.22Kubernetes 1.23Kubernetes 1.24Kubernetes 1.25Kubernetes 1.26Kubernetes 1.27Kubernetes 1.28
release-0.10xxx
release-0.11xxx
release-0.12xxx
release-0.13x
mainxx

下载 Kube-Prometheus 代码

方法一

$ git clone https://github.com/prometheus-operator/kube-prometheus.git
$ cd kube-prometheus
$ git branch -r   # 查看当前分支有哪些
$ git checkout release-0.12    # 切换到自己 Kubernetes 兼容的版本

方法二

git clone -b release-0.9 https://github.com/prometheus-operator/kube-prometheus.git

注:在release-0.11版本之后新增了NetworkPolicy

默认是允许自己访问,如果了解NetworkPolicy可以修改一下默认的规则,可以用查看 ls networkPolicy

如果不修改,则会影响到修改NodePort类型也无法访问

如果不会Networkpolicy可以直接删除就行

修改 Kube-Prometheus 镜像源

国外镜像源某些镜像无法拉取,我们这里修改prometheus-operator,prometheus,alertmanager,kube-state-metrics,node-exporter,prometheus-adapter的镜像源为国内镜像源。这里使用的是daocloud镜像源

k8s-gcr.m.daocloud.io# 进入修改的目录
cd ./kube-prometheus/manifests/
# 镜像替换
sed -i 's/quay.io/quay.m.daocloud.io/g' setup/prometheus-operator-deployment.yaml
sed -i 's/quay.io/quay.m.daocloud.io/g' prometheus-prometheus.yaml 
sed -i 's/quay.io/quay.m.daocloud.io/g' alertmanager-alertmanager.yaml
sed -i 's/quay.io/quay.m.daocloud.io/g' kube-state-metrics-deployment.yaml
sed -i 's/k8s.gcr.io/k8s-gcr.m.daocloud.io/g' kube-state-metrics-deployment.yaml
sed -i 's/quay.io/quay.m.daocloud.io/g' node-exporter-daemonset.yaml
sed -i 's/quay.io/quay.m.daocloud.io/g' prometheus-adapter-deployment.yaml
sed -i 's/k8s.gcr.io/k8s-gcr.m.daocloud.io/g' prometheus-adapter-deployment.yaml
# 确认一下是否还有国外镜像
grep "image: " * -r

安装operator & kube-Prometheus

创建namespace & CRD资源,如下:

setup 文件夹中包含所有自定义资源配置 CustomResourceDefinition(一般不用修改,也不要轻易修改)

# 下载prometheus-operator镜像需要花费几分钟,这里等待几分钟,直到prometheus-operator变成running状态
$ kubectl create -f manifests/setup

创建所有应用资源:

$ kubectl create -f manifests/
# 等待所有镜像变成Running状态
watch kubectl get po -n monitoring

需要关注的几个控制器文件:

prometheus-adapter-deployment.yaml:kubernetes自定义监控指标
blackbox-exporter-deployment.yaml:黑盒监控控制器
kube-state-metrics-deployment.yaml:监听API Server生成有关资源对象的状态指标
setup/prometheus-operator-deployment.yaml:prometheus-operator控制器文件
prometheus-prometheus.yaml:prometheus主控制器文件
alertmanager-alertmanager.yaml:alertmanager主控制器文件
grafana-deployment.yaml:grafana主控制器文件

删除所有资源:

$ kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup

配置Ingress资源对象

vim prometheus-all-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:namespace: monitoringname: prometheus-ingress
spec:ingressClassName: nginxrules:- host: grafana-opera.kubernets.cn  # 访问 Grafana 域名http:paths:- pathType: Prefixbackend:service:name: grafanaport:number: 3000path: /- host: prometheus-opera.kubernets.cn  # 访问 Prometheus 域名http:paths:- pathType: Prefixbackend:service:name: prometheus-k8sport:number: 9090path: /- host: alertmanager-opera.kubernets.cn  # 访问 alertmanager 域名http:paths:- pathType: Prefixbackend:service:name: alertmanager-mainport:number: 9093path: /

访问验证

prometheus

两个Prometheus实例的, Service 添加 sessionAffinity: ClientIP 属性,会根据 ClientIP 来做 session 亲和性,所以我们不用担心请求会到不同的副本上去

$ curl prometheus-opera.kubernets.cn

granfana

$ curl grafana-opera.kubernets.cn

alertmanager

$ curl alertmanager-opera.kubernets.cn

总结

  • Prometheus整体监控结构略微复杂,一个个部署并不简单,kube-prometheus大大提升了部署的方式
  • 通过自定义资源CRD维护简单,不用再次维护大量的configmap配置文件,操作流程大大简化
  • Kube-Prometheus 则提供了更加全面的监控解决方案,包括 Prometheus、Grafana 和 Alertmanager 等组件

这篇关于Prometheus Operator部署管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104976

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

Solr部署如何启动

Solr部署如何启动 Posted on 一月 10, 2013 in:  Solr入门 | 评论关闭 我刚接触solr,我要怎么启动,这是群里的朋友问得比较多的问题, solr最新版本下载地址: http://www.apache.org/dyn/closer.cgi/lucene/solr/ 1、准备环境 建立一个solr目录,把solr压缩包example目录下的内容复制

Prometheus与Grafana在DevOps中的应用与最佳实践

Prometheus 与 Grafana 在 DevOps 中的应用与最佳实践 随着 DevOps 文化和实践的普及,监控和可视化工具已成为 DevOps 工具链中不可或缺的部分。Prometheus 和 Grafana 是其中最受欢迎的开源监控解决方案之一,它们的结合能够为系统和应用程序提供全面的监控、告警和可视化展示。本篇文章将详细探讨 Prometheus 和 Grafana 在 DevO