关于Prometheus在K8S中的部署方案如何选择,以及分享手工部署的YAML

K8S部署Prometheus 前言:zabbix与prometheus的区别 和Zabbix类似,Prometheus也是一个近年比较火的开源监控框架,和Zabbix不同之处在于Prometheus相对更灵活点,模块间比较解耦,比如告警模块、代理模块等等都可以选择性配置。服务端和客户端都是开箱即用,不需要进行安装。zabbix则是一套安装把所有东西都弄好,很庞大也很繁杂。 zabbix的客户端agent可以比较方便的通过脚... 阅读详情

关于Prometheus部署方案的选择

在以往的分享中,有分享过使用Prometheus Operator来管理Prometheus。但,在此同时,又抛出了个问题:是手工将Prometheus部署到 Kubernetes 比较好还是使用Prometheus Operator来部署比较好?

对于技术的选型,往往是没有规定死是要用哪一项技术的,而是需要结合业务的需求、运维场景、自身对某项技术的掌握程度、以及其它更多的考量因素来共同决定的:

  1. 如果对 Kubernetes 中的 Prometheus 的自动化部署、管理和配置不是很熟悉,或者需要部署 Prometheus 集群和实现高可用性,那么使用 Prometheus Operator 是更好的选择。
  2. Prometheus Operator 提供了简化 Prometheus 在 Kubernetes 中部署的功能,可以自动处理很多繁琐的任务,如自动部署 Prometheus 和 Alertmanager、自动创建监控目标和规则等。这样可以显著降低部署和维护 Prometheus 的难度和工作量,并增强 Prometheus 在 Kubernetes 中的可靠性和可用性。
  3. 如果有丰富的 Kubernetes 和 Prometheus 的经验,并且需要更加个性化的定制和控制,那么手工将 Prometheus 部署到 Kubernetes 中也是一个不错的选择。
  4. 手工部署虽然相对更复杂,但是也可以充分发挥 Kubernetes 的灵活性和可定制性,例如自定义 Kubernetes Service 和 Endpoints、更加细致的管理数据存储和备份等。这样可以满足更加个性化和定制化的需求,同时增加对 Prometheus 系统的深度理解和掌握。

所以,选择手工部署还是 Prometheus Operator,应该基于具体场景和需求进行综合考虑,以便更好地满足业务和运维的要求。

分享手工将Prometheus部署到K8S(供参考)

下面分享手工将Prometheus部署到 Kubernetes 的yaml,关于使用Prometheus Operator部署可参考我之前的分享或者参考官方文档即可。

提示:本案例中使用Prometheus的数据目录所在的后端存储是rook-ceph,可将其修改为您已有的后端存储,如原生的ceph、nfs等等。

apiVersion: v1
kind: Namespace
metadata:
  name: monitor
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
  namespace: monitor
data:
  prometheus.yml: |
    global:
      scrape_interval: 15s
      evaluation_interval: 15s
    alerting:
      alertmanagers:
        - static_configs:
            - targets:
              # - alertmanager:9093
    rule_files:
      # - "first_rules.yml"
      # - "second_rules.yml"
    scrape_configs:
      - job_name: "prometheus"
        static_configs:
          - targets: ["localhost:9090"]
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: prometheus-pvc
  namespace: monitor
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi
  storageClassName: rook-ceph-block
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: prometheus
  name: prometheus
  namespace: monitor
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prometheus
  template:
    metadata:
      labels:
        app: prometheus
    spec:
      initContainers:
      - name: "change-prometheus-data-dir-perm"
        image: busybox
        command: ["/bin/sh"]
        args: ["-c", "chown -R 65534:65534 /prometheus"]
        securityContext:
          privileged: true
        volumeMounts:
          - name: prometheus-storage
            mountPath: /prometheus
      containers:
      - image: prom/prometheus:latest
        name: prometheus
        ports:
        - containerPort: 9090
          protocol: TCP
        volumeMounts:
        - name: prometheus-storage
          mountPath: /prometheus
        - name: prometheus-config
          mountPath: /etc/prometheus
          readOnly: true
      volumes:
        - name: prometheus-config
          configMap: 
            name: prometheus-config
        - name: prometheus-storage
          persistentVolumeClaim:
            claimName: prometheus-pvc
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: prometheus
  name: prometheus
  namespace: monitor
spec:
  ports:
  - name: http-port
    nodePort: 30090
    port: 9090
    protocol: TCP
    targetPort: 9090
  selector:
    app: prometheus
  type: NodePort

注意:在上面的yaml中,initContainers 的作用是确保 /prometheus 目录以及其子目录的权限正确,因为 Prometheus 进程通常需要以非特权用户运行。同时,由于该 initContainers 是以特权模式运行的,因此可以确保 Prometheus 容器能够以正确的方式访问挂载的卷,而不会因为权限问题导致运行异常。

本文转载于WX公众号:不背锅运维(喜欢的盆友关注我们):https://mp.weixin.qq.com/s/JlCgx1mkHqcF2e_ZqkafEw

K8S学习之基础三十五:k8s之Prometheus部署模式 prometheus部署模式 阅读详情

相关推荐

Kubernetes精讲之prometheus

Prometheus是一个开源的服务监控系统和时序数据库其提供了通用的数据模型和快捷数据采集、存储和查询接口它的核心组件Prometheus服务器定期从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉取数据新拉取到啊的 数据大于配置的内存缓存区时,数据就会持久化到存储设备当中。

m2282475145的博客 2053

K8S 部署Prometheus

1.为了能够方便的管理配置文件,这里将 prometheus.yml 文件用 ConfigMap的形式进行管理: 创建configMap并将配置文件内容写在data字段中: # cat pro_cm.yaml apiVersion: v1 kind: ConfigMap metadata: name: prometheus-config namespace: kube-mon data: prometheus.yml: | global: scrape_interval

lovely_nn的博客 1万+

K8s新手必看:3分钟搞定Nginx服务部署(含常见错误排查)

本文为Kubernetes新手提供了从零部署Nginx服务的完整实战指南。详细讲解了Pod、Deployment、Service等核心概念,并对比了命令行、YAML文件及Helm三种部署方式。文章重点分享了部署过程中常见的Pod状态异常、服务无法访问等问题的排查思路与解决方案,帮助开发者快速掌握K8s服务部署的核心技能。

tree的博客 689

【k8s】基于Prometheus监控Kubernetes集群安装部署

【k8s】基于Prometheus监控Kubernetes集群安装部署

共产主义接班人 4368

DigitalOcean上用Helm部署kube-prometheus-stack实战指南

Prometheus Operator 是将 Prometheus 生态组件(如 Prometheus Server、Alertmanager、ServiceMonitor)封装为 Kubernetes 原生 CRD 的核心机制;Helm 则是实现参数化交付、版本可控与跨环境复用的关键工具。在 DigitalOcean Kubernetes(DOKS)这类标准但无托管监控的托管 K8s 平台上,直接使用 kube-prometheus-stack Helm Chart 可规避手动 YAML 维护、RBAC

weixin_34110749的博客 399

Helm包管理器原理与实战:解决Kubernetes多环境部署难题

Helm 是 Kubernetes 生态中面向应用交付的包管理器,其核心在于通过 Chart(可编程模板)、Repository(索引化仓库)和 Release(集群内状态快照)三层架构,将声明式 YAML 从静态配置升级为可参数化、可复用、可审计的部署单元。它本质解决的是‘同一应用在开发、测试、预发、生产等多环境下的差异化部署’这一工程化瓶颈,而非简单安装工具。结合 values.yaml 参数覆盖、Go template 渲染与 Release 历史快照机制,Helm 实现了环境适配逻辑的集中抽象与确定

congjukun0600的博客 414

别再手动改Prometheus配置了!用ServiceMonitor在K8s里实现监控配置自动化(附跨命名空间实战)

本文详细介绍了如何在Kubernetes中使用ServiceMonitor实现Prometheus监控配置的自动化,告别手动修改配置文件的繁琐操作。通过跨命名空间实战案例,展示了ServiceMonitor的声明式配置、自动发现和原生K8s集成优势,帮助SRE团队提升监控效率。

weixin_30729609的博客 415

从CI/CD到Kubernetes:构建自动化测试与部署的完整实践指南

持续集成与持续部署(CI/CD)是现代软件工程的核心实践,它通过自动化流程将代码变更快速、可靠地交付到生产环境。其核心原理在于将开发、测试、构建、部署等环节串联成自动化流水线,通过版本控制系统的事件驱动触发执行。这一技术体系的价值在于显著提升软件交付效率、保障代码质量一致性,并降低人工操作风险。在微服务与容器化架构广泛应用的场景下,CI/CD与Kubernetes容器编排平台深度结合,实现了从代码提交到容器化部署的端到端自动化。本文聚焦于如何设计并落地一套名为“Mirror”的自动化体系,详细拆解了包括事件

weixin_34238633的博客 571

Kubernetes集群部署实践指南

无需配置复杂环境,五分钟即可获得可交互的k8s演示系统,自动生成的拓扑图能直观展示集群关系,特别适合初学者理解核心概念。实际测试发现其预置的YAML模板非常规范,避免了手工编写容易出现的缩进等语法错误。下面结合我的实操经验,分享从零开始部署生产级k8s集群的全流程。Flannel网络插件的部署可通过直接应用在线yml文件或本地下载后配置。worker节点需安装相同版本的kubelet和kubeadm,加载基础镜像后执行master提供的join指令。建议立即配置命令补全和vim缩进等优化项提升操作效率。

PurpleRain89的博客 476

避坑指南:从Docker到K8s,手把手教你部署Archery数据库审计平台(附完整YAML)

本文详细介绍了从Docker迁移到Kubernetes部署Archery数据库审计平台的完整流程,重点解析了高可用部署中的关键配置陷阱和解决方案。通过实战案例和完整YAML示例,帮助用户避免常见错误,实现Archery在K8s集群中的稳定运行,提升数据库审计效率。

weixin_28730927的博客 362

Helm实战指南:Kubernetes生产环境应用交付核心实践

Helm作为Kubernetes官方推荐的包管理器,本质是面向云原生的应用交付协议,通过声明式模板、版本化Chart和参数化values实现环境一致性与发布可追溯。其核心价值在于将零散YAML转化为可复用、可审计、可回滚的标准化单元,解决微服务时代配置漂移、多环境差异和密钥泄露等典型运维痛点。结合GitOps流水线、SealedSecrets密钥注入与分层values设计,Helm支撑金融、电商等高要求场景的规模化落地。本文聚焦生产可用的Chart结构、安全模板编写及Helm 3权限模型演进,提供从Ngin

weixin_33816946的博客 388

墨语灵犀镜像免配置:Kubernetes Helm Chart一键部署生产级翻译服务

本文介绍了如何在星图GPU平台上,通过Kubernetes Helm Chart实现墨语灵犀 (Moyu Lingxi) 镜像的自动化部署,快速搭建生产级AI翻译服务。该方案免除了复杂的环境配置,让用户能够一键获得一个支持33种语言互译的稳定平台,典型应用于网站内容、文档或实时对话的快速翻译场景。

weixin_42613017的博客 228

CI/CD与IaC驱动的可信交付:Kubernetes自动化部署实战

在现代云原生架构中,持续集成与持续部署(CI/CD)和基础设施即代码(IaC)共同构成软件可信交付的核心范式。其本质是将传统依赖人工经验的发布流程,转化为可验证、可追溯、可重复的自动化闭环:CI通过编译、单元测试、静态扫描前置质量门禁;CD实现制品到环境的策略化推送;IaC则用声明式配置固化Kubernetes集群、网络与服务拓扑,彻底消除‘环境漂移’。结合Kubernetes的健康探针、滚动更新与冒烟测试(smoke testing),系统可在分钟级完成自检与恢复,支撑高可用业务场景。本文基于GitLab

weixin_30835649的博客 459

Helm与AI结合:智能管理Kubernetes应用部署

例如指定"三节点Redis集群"时,AI不仅生成replicaCount: 3,还会根据集群特性自动添加affinity反亲和性规则,并设置合理的资源请求/限制比例。传统方式需要手动创建templates/目录和values.yaml,现在只需输入类似"部署含监控的Redis集群"的需求,AI会自动生成完整的Chart骨架。测试时输入包含节点数、存储类型等关键参数的需求描述,5秒内就能获得结构清晰的目录树。对于需要频繁部署差异化环境的情况,这种智能化的Chart生成方式至少节省了60%的初始配置时间。

RubyLion28的博客 977

Pulumi+TypeScript统一编排DigitalOcean与Kubernetes

基础设施即代码(IaC)的核心在于将云资源与Kubernetes集群视为可编程、可版本化、可协作的软件系统。其底层原理依赖于声明式定义、状态驱动执行与跨平台资源抽象,技术价值体现在变更可追溯、环境可复现、团队可协同。典型应用场景包括多环境一致部署、渐进式发布、混合云联邦管理及SRE自动化运维。本文聚焦使用Pulumi这一现代IaC工具,结合TypeScript强类型能力与异步编程优势,打通DigitalOcean云资源创建与Kubernetes原生对象编排之间的割裂,实现从Droplet到Ingress的端

weixin_30664051的博客 401

DigitalOcean上基于Flux的Kubernetes持续交付流水线实战

GitOps是一种以Git为唯一事实源的云原生交付范式,其核心原理是通过自动化控制器持续比对集群状态与代码仓库声明的一致性,实现可审计、可回滚的应用交付。Flux作为轻量级GitOps工具,深度集成Kubernetes原生API,相比Argo CD更适配资源受限的托管环境如DigitalOcean Kubernetes(DOKS),具备低内存占用、原生支持OCI仓库与DO Load Balancer等技术优势。它将CI构建后的镜像部署、配置更新、健康检查与灰度发布等环节统一收口于声明式YAML管理,广泛应用

dezhen7015的博客 543

智能客服本地化部署SOP实战指南:从环境搭建到生产避坑

这一套SOP走下来,我们的智能客服系统总算是在本地机房稳定跑起来了。标准化和自动化是应对复杂性的唯一法宝。Kubernetes和它庞大的生态,为我们提供了实现标准化的绝佳平台。当然,这套方案也不是终点。如何设计跨机房甚至跨地域的容灾方案?当单个K8s集群规模过大时,是否要考虑向多集群或服务网格(如Istio)演进?这些问题,可能就是我们下一个阶段要攻克的堡垒了。希望这篇啰嗦的笔记能给你带来一些启发。部署之路,道阻且长,行则将至,与各位共勉。

2600_94960045的博客 403

实战指南!基于STM32的智能环境监测系统(代码+硬件设计+云端控制)

本文详细介绍了基于STM32的智能环境监测系统的设计与实现,包括硬件选型、电路设计、软件架构和云端控制。系统通过DHT11温湿度传感器和MQ-2烟雾传感器实时监测环境数据,STM32F103C8T6主控芯片处理数据并通过ESP8266上传至中国移动物联网平台,支持手机APP远程监控。项目成本低、稳定性高,适合智能家居和环境监测应用。

weixin_29194817的博客 433

Kubernetes生产级集群搭建与优化实战指南

容器编排技术作为云原生的核心组件,Kubernetes通过声明式配置和自动化调度实现了应用部署的革命性变革。其工作原理基于控制平面与工作节点的协同机制,通过API Server、etcd等核心组件维护集群状态。在DevOps实践中,合理的Kubernetes集群配置能显著提升资源利用率并降低运维复杂度,特别是在金融、电商等高并发场景下。本文以containerd运行时和Calico网络插件为例,详解生产环境中内核参数调优、证书自动续期等关键配置,分享从系统选型到安全加固的全链路最佳实践。

weixin_30271335的博客 472

在摩尔线程 MTT S80 上使用 Ollama 进行 DeepSeek R1 蒸馏版模型推理

本文主要介绍了如何在摩尔线程 MTT S80 上通过 Ollama 快速完成DeepSeek R1 蒸馏系列模型的推理。

摩尔线程blog中心 3604

CTS实战:如何用set_sense优化时钟树平衡(附ICC2避坑指南)

本文深入探讨了在时钟树综合(CTS)中,如何正确使用`set_sense`命令优化时钟树平衡,并对比了其与`set_disable_timing`的本质区别。通过实战案例详细解析了`-stop_propagation`和`-clock_leaf`参数的应用场景,并提供了ICC2工具中的关键避坑指南,帮助后端工程师精准控制时钟拓扑,避免时序分析漏洞。

weixin_28933797的博客 460
上一篇: 对运维这份职业的一些反思
下一篇: 下篇1:将 ConfigMap 中的键值对作为容器的环境变量
不背锅运维
博客等级 码龄4年 38粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值