K8S学习之基础三十五:k8s之Prometheus部署模式
Prometheus 有多种部署模式,适用于不同的场景和需求。以下是几种常见的部署模式:
1. 单节点部署
这是最简单的部署模式,适用于小型环境或测试环境。
特点:
- 单个 Prometheus 实例负责所有的数据采集、存储和查询。
- 配置简单,易于维护。
- 不具备高可用性和扩展性。
适用场景:
- 小型项目或测试环境。
- 对高可用性要求不高的场景。
部署步骤:
- 下载并解压 Prometheus。
- 配置
prometheus.yml。 - 启动 Prometheus。
bash
复制
./prometheus --config.file=prometheus.yml
2. 高可用部署(HA)
为了提高系统的可用性和容错能力,可以使用高可用部署模式。
特点:
- 多个 Prometheus 实例同时运行,采集相同的数据。
- 通过负载均衡器分发查询请求。
- 具备高可用性,单个实例故障不会影响整体服务。
适用场景:
- 对高可用性要求较高的生产环境。
- 需要确保监控系统持续可用的场景。
部署步骤:
- 部署多个 Prometheus 实例,配置相同的
prometheus.yml。 - 使用负载均衡器(如 Nginx、HAProxy)分发查询请求。
- 配置 Alertmanager 处理告警。
yaml
复制
# prometheus.yml 示例
global:scrape_interval: 15sscrape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']
3. 联邦部署(Federation)
联邦部署模式适用于大规模分布式系统,通过分层采集和汇总数据。
特点:
- 多个 Prometheus 实例分别采集不同区域或服务的数据。
- 一个中心 Prometheus 实例从其他实例中采集汇总数据。
- 适用于大规模、分布式环境。
适用场景:
- 大规模分布式系统。
- 需要分区域或分服务采集数据的场景。
部署步骤:
- 部署多个 Prometheus 实例,分别采集不同区域或服务的数据。
- 配置中心 Prometheus 实例,从其他实例中采集汇总数据。
yaml
复制
# 中心 Prometheus 配置示例
scrape_configs:- job_name: 'federate'scrape_interval: 15shonor_labels: truemetrics_path: '/federate'params:'match[]':- '{job="prometheus"}'- '{__name__=~"job:.*"}'static_configs:- targets:- 'source-prometheus-1:9090'- 'source-prometheus-2:9090'
4. 分片部署(Sharding)
分片部署模式通过将数据采集任务分散到多个 Prometheus 实例,适用于超大规模环境。
特点:
- 多个 Prometheus 实例分别负责不同的数据采集任务。
- 通过分片策略(如哈希分片)分配采集任务。
- 适用于超大规模、高并发的环境。
适用场景:
- 超大规模系统,单个 Prometheus 实例无法处理所有数据。
- 需要高并发采集和存储的场景。
部署步骤:
- 部署多个 Prometheus 实例,配置不同的
prometheus.yml。 - 使用分片策略(如哈希分片)分配采集任务。
- 配置中心 Prometheus 实例或查询层(如 Thanos)汇总数据。
yaml
复制
# 分片 Prometheus 配置示例
global:scrape_interval: 15sscrape_configs:- job_name: 'sharded_job'static_configs:- targets: ['target1:9100', 'target2:9100']relabel_configs:- source_labels: [__address__]modulus: 2target_label: __tmp_hashaction: hashmod- source_labels: [__tmp_hash]regex: '0'action: keep
5. 使用 Thanos 或 Cortex 的分布式部署
Thanos 和 Cortex 是 Prometheus 的扩展项目,提供了分布式存储和查询能力。
特点:
- 提供全局视图和长期存储能力。
- 支持高可用性和水平扩展。
- 适用于大规模、长期存储和查询的场景。
适用场景:
- 需要长期存储监控数据的场景。
- 需要全局视图和高可用性的场景。
部署步骤:
- 部署多个 Prometheus 实例,配置相同的
prometheus.yml。 - 部署 Thanos 或 Cortex 组件(如 Sidecar、Store Gateway、Querier 等)。
- 配置 Thanos 或 Cortex 的全局视图和长期存储。
yaml
复制
# Thanos Sidecar 配置示例
apiVersion: apps/v1
kind: Deployment
metadata:name: prometheus
spec:replicas: 1template:spec:containers:- name: prometheusimage: prom/prometheus:latestargs:- "--config.file=/etc/prometheus/prometheus.yml"- "--storage.tsdb.path=/prometheus"- "--web.enable-lifecycle"- name: thanos-sidecarimage: thanosio/thanos:latestargs:- "sidecar"- "--prometheus.url=http://localhost:9090"- "--tsdb.path=/prometheus"
6. 使用 Operator 部署
Prometheus Operator 是 Kubernetes 上的一个扩展,简化了 Prometheus 的部署和管理。
特点:
- 自动化部署和管理 Prometheus 实例。
- 提供自定义资源定义(CRD)来配置 Prometheus。
- 适用于 Kubernetes 环境。
适用场景:
- Kubernetes 环境。
- 需要自动化部署和管理的场景。
部署步骤:
- 安装 Prometheus Operator。
- 使用自定义资源定义(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: prometheusserviceMonitorSelector:matchLabels:team: frontendresources:requests:memory: 400Mi
总结
不同的部署模式适用于不同的场景和需求。单节点部署适合小型环境,高可用部署适合生产环境,联邦部署和分片部署适合大规模分布式系统,而使用 Thanos 或 Cortex 的分布式部署适合需要长期存储和全局视图的场景。在 Kubernetes 环境中,使用 Prometheus Operator 可以简化部署和管理。
相关文章:
K8S学习之基础三十五:k8s之Prometheus部署模式
Prometheus 有多种部署模式,适用于不同的场景和需求。以下是几种常见的部署模式: 1. 单节点部署 这是最简单的部署模式,适用于小型环境或测试环境。 特点: 单个 Prometheus 实例负责所有的数据采集、存储和查询。配置简单&…...
AI驱动的视频字幕提取与翻译工具
青梧字幕是一款基于Whisper技术的AI字幕提取工具,专为视频制作者、翻译人员和自媒体创作者设计。它通过先进的语音识别算法,能够自动从视频文件中提取字幕内容,并支持多种语言和字幕格式,极大地简化了字幕制作流程。 目前暂支持 …...
Android ARouter的详细使用指南
Android ARouter的详细使用指南。我需要先确定用户的基础,可能他们已经有Android开发经验,但对ARouter不太熟悉。首先,我应该介绍ARouter是什么,解决什么问题,比如模块化中的页面跳转问题。然后,需要分步骤…...
【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 或…...
JVM常用概念之锁省略
问题 synchronized(同步-重量级锁)会解除所有编译器优化吗? 基础知识 使用当前的 Java 内存模型,未观察到的锁不一定会产生任何内存效应。除其他情况外,这意味着对非共享对象进行同步是徒劳的,因此运行时不必在那里做任何事情。这给编译优…...
用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(十四)——控制流...
路由器与防火墙配置命令
路由器与防火墙配置命令 小明啊,你不是学计算机的嘛,叔叔家的路由器坏了,可以过来帮叔叔看看吗 命令可以用缩写,造就一堆容易造成歧义的缩写,比如add是address的缩写,sh是shutdown的缩写。 默认为Cisco路…...
PosterRender 实现微信下程序 分享商品生成海报
PosterRender 是什么 PosterRender 是一种专注于生成高质量海报图像的技术或工具,常用于生成静态图片,特别是适合用于营销、宣传和展示的图形设计。它通常用于在服务端或客户端渲染复杂的图像,包括文字、图形、图标、背景等,生成…...
C语言及内核开发中的回调机制与设计模式分析
在C语言以及操作系统内核开发中,回调机制是一种至关重要的编程模式。它通过注册框架和定义回调函数,实现了模块间的解耦和灵活交互,为系统的扩展性和可维护性提供了有力支持。本文将深入探讨这种机制的工作原理、应用场景以及与设计模式的关联。 一、回调机制的核心概念 (…...
第27周JavaSpringboot git初识
Git 课程笔记 一、Git 的介绍 1. Git 的诞生背景 Git 是 Linux 内核的作者 Linus Torvalds 为了更好地管理 Linux 内核开发而创建的版本控制系统。在 Linux 内核开发初期,由于开发者众多,协作成本很高,后来使用了 BitKeeper 工具来辅助协作…...
代码随想录算法训练营第34天 | 62.不同路径 63. 不同路径 II 整数拆分 不同的二叉搜索树 (跳过)
62.不同路径 62. 不同路径 - 力扣(LeetCode) 本题大家掌握动态规划的方法就可以。 数论方法 有点非主流,很难想到。 代码随想录 视频讲解:动态规划中如何初始化很重要!| LeetCode:62.不同路径_哔哩哔哩_b…...
Java使用JDBC连接操作Sqlite 笔记250314
Java使用JDBC连接操作Sqlite 以下是使用 Java JDBC 连接和操作 SQLite 数据库的详细步骤: 1. 添加 SQLite JDBC 驱动 在项目中引入 SQLite JDBC 驱动依赖。 Maven 项目在 pom.xml 中添加:<dependency><groupId>org.xerial</groupId>…...
消息队列导致数据库数据读取不一致解决方案
我使用的是在数据库添加一个版本字段,记录版本,保证版本一致性,就能保证每次读取的是需要的内容。 具体问题:使用消息队列时,发送方给接收方发送消息,接收方修改了数据库的同时发送方查询数据库࿰…...
如何利用 Zeabur 实现 OceanBase 的一键部署
引言 Zeabur 是一个功能强大且即开即用的自动化部署平台,它不仅能迅速部署多种应用,还支持一键安装 MySQL、PostgreSQL 等数据库服务。 Zeabur 拥有众多国内外用户,如 AFFiNE、Bytebase 等企业客户,以及大量全栈和独立开发者。将…...
计算机网络进化论:从比特流到量子通信的深层解构
第一章 物理媒介与链路层(1960-1970) 1.1 比特流物理编码 // 曼彻斯特编码实现 vector<bool> manchester_encode(uint8_t byte) {vector<bool> bits;for(int i=7; i>=0; --i) {bool bit = (byte >> i) & 1;bits.push_back(bit); // 前半周期bits…...
超参数优化算法:scikit-opt库、Scikit-Optimize库
1 scikit-opt库:https://www.cnblogs.com/luohenyueji/p/18333387 https://blog.csdn.net/weixin_45750972/article/details/124683402 a 差分进化算法 (Differential Evolution):一种基于群体搜索的优化算法,通过模拟生物进化的过程来寻找最…...
go语言学习教程推荐,零基础到做项目
一、基础入门阶段 官方教程(免费) • A Tour of Go:交互式入门教程,边学边练 • Go by Example:通过300代码片段学习语法 入门书籍 • 📘《Go语言圣经》中文版(免费在线阅读)&#…...
【商城实战(30)】从0到1搭建商城数据分析功能,开启数据驱动增长引擎
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
(hash表+vector 数位和相等数对的最大和)leetcode 2342
一定要断点调试看看数据对不对的上!!!不然很容易弄不清楚值和下标 这个题意思是在nums中找出相同数位和的值 如 数位和为7 nums中符合要求的有 43,7 在这些数中选两个相加取最大值,再与其他数位和取得的相加最大值比…...
c++中字符串string常用的函数
在C中, std::string 类有许多常用函数,以下是一些常见的: 1. length() 或 size() :返回字符串的长度(字符个数),二者功能相同。例如: #include <iostream> #include <str…...
NO.39十六届蓝桥杯备战|结构体八道练习|加号小于号运算符重载|自定义排序(C++)
加号运算符重载_牛客题霸_牛客网 #include <iostream> using namespace std;class Time {public:int hours; // 小时int minutes; // 分钟Time() {hours 0;minutes 0;}Time(int h, int m) {this->hours h;this->minutes m;}void show() {cout <<…...
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无线射频技术和车辆身份编码识别系统,率先应用小型化、小…...
使用 VLOOKUP 和条件格式在 Excel 中查找并标红匹配的串号
使用 VLOOKUP 和条件格式在 Excel 中查找并标红匹配的串号 你的步骤非常详细且清晰,能够帮助用户在 Excel 中通过 VLOOKUP 和条件格式来查找并标红匹配的串号。以下是对你提供的步骤的简要总结和补充说明: 1. 添加“是否匹配”列 在 a.xlsx 中新增一列…...
WPF程序使用AutoUpdate实现自动更新
AutoUpdate.NET使用 一、AutoUpdater.NET 简介 AutoUpdater.NET 是一个开源库,支持从各种源(如GitHub、FTP、HTTP服务器等)下载并安装更新。它提供了灵活的配置选项,允许开发者根据需求定制更新检查逻辑和用户体验。 二、安装 …...
Dify平台离线镜像部署
Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。 前提…...
