K8S学习之基础三十五:k8s之Prometheus部署模式

news2025/3/18 23:44:59

Prometheus 有多种部署模式,适用于不同的场景和需求。以下是几种常见的部署模式:

1. 单节点部署

这是最简单的部署模式,适用于小型环境或测试环境。

特点:
  • 单个 Prometheus 实例负责所有的数据采集、存储和查询。
  • 配置简单,易于维护。
  • 不具备高可用性和扩展性。
适用场景:
  • 小型项目或测试环境。
  • 对高可用性要求不高的场景。
部署步骤:
  1. 下载并解压 Prometheus。
  2. 配置 prometheus.yml
  3. 启动 Prometheus。

bash

复制

./prometheus --config.file=prometheus.yml

2. 高可用部署(HA)

为了提高系统的可用性和容错能力,可以使用高可用部署模式。

特点:
  • 多个 Prometheus 实例同时运行,采集相同的数据。
  • 通过负载均衡器分发查询请求。
  • 具备高可用性,单个实例故障不会影响整体服务。
适用场景:
  • 对高可用性要求较高的生产环境。
  • 需要确保监控系统持续可用的场景。
部署步骤:
  1. 部署多个 Prometheus 实例,配置相同的 prometheus.yml
  2. 使用负载均衡器(如 Nginx、HAProxy)分发查询请求。
  3. 配置 Alertmanager 处理告警。

yaml

复制

# prometheus.yml 示例
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

3. 联邦部署(Federation)

联邦部署模式适用于大规模分布式系统,通过分层采集和汇总数据。

特点:
  • 多个 Prometheus 实例分别采集不同区域或服务的数据。
  • 一个中心 Prometheus 实例从其他实例中采集汇总数据。
  • 适用于大规模、分布式环境。
适用场景:
  • 大规模分布式系统。
  • 需要分区域或分服务采集数据的场景。
部署步骤:
  1. 部署多个 Prometheus 实例,分别采集不同区域或服务的数据。
  2. 配置中心 Prometheus 实例,从其他实例中采集汇总数据。

yaml

复制

# 中心 Prometheus 配置示例
scrape_configs:
  - job_name: 'federate'
    scrape_interval: 15s
    honor_labels: true
    metrics_path: '/federate'
    params:
      'match[]':
        - '{job="prometheus"}'
        - '{__name__=~"job:.*"}'
    static_configs:
      - targets:
        - 'source-prometheus-1:9090'
        - 'source-prometheus-2:9090'

4. 分片部署(Sharding)

分片部署模式通过将数据采集任务分散到多个 Prometheus 实例,适用于超大规模环境。

特点:
  • 多个 Prometheus 实例分别负责不同的数据采集任务。
  • 通过分片策略(如哈希分片)分配采集任务。
  • 适用于超大规模、高并发的环境。
适用场景:
  • 超大规模系统,单个 Prometheus 实例无法处理所有数据。
  • 需要高并发采集和存储的场景。
部署步骤:
  1. 部署多个 Prometheus 实例,配置不同的 prometheus.yml
  2. 使用分片策略(如哈希分片)分配采集任务。
  3. 配置中心 Prometheus 实例或查询层(如 Thanos)汇总数据。

yaml

复制

# 分片 Prometheus 配置示例
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'sharded_job'
    static_configs:
      - targets: ['target1:9100', 'target2:9100']
    relabel_configs:
      - source_labels: [__address__]
        modulus: 2
        target_label: __tmp_hash
        action: hashmod
      - source_labels: [__tmp_hash]
        regex: '0'
        action: keep

5. 使用 Thanos 或 Cortex 的分布式部署

Thanos 和 Cortex 是 Prometheus 的扩展项目,提供了分布式存储和查询能力。

特点:
  • 提供全局视图和长期存储能力。
  • 支持高可用性和水平扩展。
  • 适用于大规模、长期存储和查询的场景。
适用场景:
  • 需要长期存储监控数据的场景。
  • 需要全局视图和高可用性的场景。
部署步骤:
  1. 部署多个 Prometheus 实例,配置相同的 prometheus.yml
  2. 部署 Thanos 或 Cortex 组件(如 Sidecar、Store Gateway、Querier 等)。
  3. 配置 Thanos 或 Cortex 的全局视图和长期存储。

yaml

复制

# Thanos Sidecar 配置示例
apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus
spec:
  replicas: 1
  template:
    spec:
      containers:
      - name: prometheus
        image: prom/prometheus:latest
        args:
          - "--config.file=/etc/prometheus/prometheus.yml"
          - "--storage.tsdb.path=/prometheus"
          - "--web.enable-lifecycle"
      - name: thanos-sidecar
        image: thanosio/thanos:latest
        args:
          - "sidecar"
          - "--prometheus.url=http://localhost:9090"
          - "--tsdb.path=/prometheus"

6. 使用 Operator 部署

Prometheus Operator 是 Kubernetes 上的一个扩展,简化了 Prometheus 的部署和管理。

特点:
  • 自动化部署和管理 Prometheus 实例。
  • 提供自定义资源定义(CRD)来配置 Prometheus。
  • 适用于 Kubernetes 环境。
适用场景:
  • Kubernetes 环境。
  • 需要自动化部署和管理的场景。
部署步骤:
  1. 安装 Prometheus Operator。
  2. 使用自定义资源定义(CRD)配置 Prometheus 实例。

bash

复制

# 安装 Prometheus Operator
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/bundle.yaml

# 创建 Prometheus 实例
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
  name: prometheus
spec:
  serviceAccountName: prometheus
  serviceMonitorSelector:
    matchLabels:
      team: frontend
  resources:
    requests:
      memory: 400Mi

总结

不同的部署模式适用于不同的场景和需求。单节点部署适合小型环境,高可用部署适合生产环境,联邦部署和分片部署适合大规模分布式系统,而使用 Thanos 或 Cortex 的分布式部署适合需要长期存储和全局视图的场景。在 Kubernetes 环境中,使用 Prometheus Operator 可以简化部署和管理。

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

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

相关文章

AI驱动的视频字幕提取与翻译工具

青梧字幕是一款基于Whisper技术的AI字幕提取工具,专为视频制作者、翻译人员和自媒体创作者设计。它通过先进的语音识别算法,能够自动从视频文件中提取字幕内容,并支持多种语言和字幕格式,极大地简化了字幕制作流程。 目前暂支持 …

【MySQL】MySQL审计工具Audit Plugin安装使用

MySQL审计工具Audit Plugin安装使用 https://www.cnblogs.com/waynechou/p/mysql_audit.html MySQL 5.6 开启审计功能 https://blog.51cto.com/u_15127556/4344503 MySQL之添加日志审计功能 https://blog.csdn.net/weixin_43279032/article/details/105507170 MySQL开启日志记录…

游戏引擎学习第163天

我们可以在资源处理器中使用库 因为我们的资源处理器并不是游戏的一部分,所以它可以使用库。我说过我不介意让它使用库,而我提到这个的原因是,今天我们确实有一个选择——可以使用库。 生成字体位图的两种方式:求助于 Windows 或…

用python代码将excel中的数据批量写入Json中的某个字段,生成新的Json文件

需求 需求: 1.将execl文件中的A列赋值给json中的TrackId,B列赋值给json中的OId 要求 execl的每一行,对应json中的每一个OId json 如下: {"List": [{"BatchNumber": "181-{{var}}",// "Bat…

《我的Python觉醒之路》之转型Python(十五)——控制流

[今天是2025年3月17日,继续复习第一章节、第二章节的内容 ] 《我的Python觉醒之路》之转型Python(十四)——控制流

PosterRender 实现微信下程序 分享商品生成海报

PosterRender 是什么 PosterRender 是一种专注于生成高质量海报图像的技术或工具,常用于生成静态图片,特别是适合用于营销、宣传和展示的图形设计。它通常用于在服务端或客户端渲染复杂的图像,包括文字、图形、图标、背景等,生成…

如何利用 Zeabur 实现 OceanBase 的一键部署

引言 Zeabur 是一个功能强大且即开即用的自动化部署平台,它不仅能迅速部署多种应用,还支持一键安装 MySQL、PostgreSQL 等数据库服务。 Zeabur 拥有众多国内外用户,如 AFFiNE、Bytebase 等企业客户,以及大量全栈和独立开发者。将…

(hash表+vector 数位和相等数对的最大和)leetcode 2342

一定要断点调试看看数据对不对的上!!!不然很容易弄不清楚值和下标 这个题意思是在nums中找出相同数位和的值 如 数位和为7 nums中符合要求的有 43,7 在这些数中选两个相加取最大值,再与其他数位和取得的相加最大值比…

kmp报错→Cannot find skiko-windows-x64.dll.sha256

1、前言 学习kmp(Kotlin MultiPlatform简称)过程中报了错误,这个报错在直接运行desktop的main方法才会出现,用gradle运行却不会报错,新建的kmp项目也不会出现,我学习的写了一些代码的项目才会出现。   运…

Cocos Creator Shader入门实战(四):预处理宏定义和Chunk

引擎: 3.8.5 您好,我是鹤九日! 回顾 学习Shader,前期是让人烦躁无味的,后期可能就是各种的逻辑让人抓耳挠腮。 一成不变的内容:遵循引擎设定的规则,理解引擎要求的规范。 这里,简单…

K8S快速部署

前置虚拟机环境正式部署BUG解决 前置虚拟机环境 每个虚拟机配置一次就好 #关闭防火墙 systemctl stop firewalld systemctl disable firewalld #关闭 selinux sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时 #关闭 swap swapoff -a # 临时 vi…

汽车PKE无钥匙进入系统一键启动系统定义与原理

汽车智能钥匙(PKE无钥匙进入系统)一键启动介绍 系统定义与原理 汽车无钥匙进入系统,简称PKE(Passive Keyless Entry),该系统采用了RFID无线射频技术和车辆身份编码识别系统,率先应用小型化、小…

WPF程序使用AutoUpdate实现自动更新

AutoUpdate.NET使用 一、AutoUpdater.NET 简介 AutoUpdater.NET 是一个开源库,支持从各种源(如GitHub、FTP、HTTP服务器等)下载并安装更新。它提供了灵活的配置选项,允许开发者根据需求定制更新检查逻辑和用户体验。 二、安装 …

每日Attention学习28——Strip Pooling

模块出处 [CVPR 20] [link] Strip Pooling: Rethinking Spatial Pooling for Scene Parsing 模块名称 Strip Pooling (SP) 模块结构 模块特点 本质是空间注意力的一种使用横/纵两个方向的条形池化获得一维方向上的重要程度,结合后便可以扩展至二维方向 模块代码 …

ollama docker设置模型常驻显存

参考: https://github.com/ollama/ollama/issues/5272 https://deepseek.csdn.net/67cfd7c93b685529b708fdee.html 通过-e传入环境变量,ollama运行: docker run -d --gpusall -e OLLAMA_KEEP_ALIVE-1 -v ollama:/root/.ollama -p 11434:114…

无再暴露源站!群联AI云防护IP隐匿方案+防绕过实战

一、IP隐藏的核心原理 群联AI云防护通过三层架构实现源站IP深度隐藏: 流量入口层:用户访问域名解析至高防CNAME节点(如ai-protect.example.com)智能调度层:基于AI模型动态分配清洗节点,实时更新节点IP池回…

【深度学习|目标检测】YOLO系列anchor-based原理详解

YOLO之anchor-based 一、关于anchors的设置二、网络如何利用anchor来训练关于register_buffer训练阶段的anchor使用推理阶段的anchor使用 三、训练时的正负样本匹配静态策略:跨分支采样跨anchor采样跨grid采样 动态策略 总结起来其实就是:基于anchor-bas…

Linux 入门:权限的认识和学习

目录 一.shell命令以及运行原理 二.Linux权限的概念 1.Linux下两种用户 cannot open directory .: Permission denied 问题 2.Linux权限管理 1).是什么 2).为什么(权限角色目标权限属性) 3).文件访问者的分类(角色) 4).文…

搭建opensbi+kernel+rootfs及基本设备驱动开发流程

目录 一.编译qemu 运行opensbikernelrootfs 1.编译qemu-9.1.1 2.安装riscv64编译器 3. 编译opensbi 4.编译kernel 5.编译rootfs 设备驱动开发流程 1.安装 RISC-V 交叉编译工具链 2.驱动开发准备 3.编写简易中断控制器驱动(PLIC)​ 4.配置内核…

QT非UI设计器生成界面的国际化

目的 UI设计器生成界面的国际化,比较容易实现些,因为有现成的函数可以调用,基本过程如下: void MainWindow::on_actLang_CN_triggered() {//中文界面qApp->removeTranslator(trans);delete trans;transnew QTranslator;trans…