发布时间:2026/6/15 5:50:26
保姆级教程:用K8s原生方式部署Prometheus监控全家桶(附完整YAML)
Kubernetes原生部署Prometheus监控栈的深度实践指南在云原生技术栈中监控系统的构建一直是保障业务稳定性的关键环节。不同于简单的Helm一键安装本文将从Kubernetes原生资源的角度深入剖析如何通过DaemonSet、ConfigMap和ServiceAccount等核心API对象搭建一套生产级可用的Prometheus监控体系。这种部署方式不仅能帮助您全面掌握各组件的运行机制还能根据实际需求进行灵活定制。1. 环境准备与架构设计1.1 集群基础要求在开始部署前请确保您的Kubernetes集群满足以下条件Kubernetes版本 ≥ 1.18推荐1.22每个工作节点至少2核CPU和4GB内存已配置默认StorageClass如需持久化存储集群内DNS服务正常运作可以通过以下命令快速验证集群状态kubectl get nodes -o wide kubectl get cs1.2 监控架构设计我们采用的监控栈包含以下核心组件组件类型功能部署方式node-exporterDaemonSet采集节点级指标每个节点部署1个Podkube-state-metricsDeployment采集K8s资源状态集群范围部署prometheus-serverStatefulSet指标存储与告警支持水平扩展alertmanagerDeployment告警通知路由高可用部署提示生产环境建议为prometheus-server配置持久化存储避免历史数据丢失2. Node-Exporter的DaemonSet部署2.1 创建监控专用命名空间首先为监控组件创建独立的命名空间kubectl create ns monitoring2.2 精细化DaemonSet配置node-exporter需要访问主机系统信息因此需要特殊权限配置。以下是经过生产验证的DaemonSet模板apiVersion: apps/v1 kind: DaemonSet metadata: name: node-exporter namespace: monitoring labels: k8s-app: node-exporter spec: selector: matchLabels: k8s-app: node-exporter template: metadata: labels: k8s-app: node-exporter spec: hostNetwork: true hostPID: true hostIPC: true tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule containers: - name: node-exporter image: prom/node-exporter:v1.8.0 args: - --path.procfs/host/proc - --path.sysfs/host/sys - --collector.filesystem.ignored-mount-points^/(sys|proc|dev|host|etc)($|/) ports: - containerPort: 9100 hostPort: 9100 volumeMounts: - name: proc mountPath: /host/proc - name: sys mountPath: /host/sys volumes: - name: proc hostPath: path: /proc - name: sys hostPath: path: /sys关键配置解析hostNetwork: 直接使用主机网络避免网络性能损耗hostPID/hostIPC: 访问主机进程和IPC命名空间tolerations: 允许在master节点运行volumeMounts: 挂载主机系统目录部署后验证kubectl -n monitoring get pods -l k8s-appnode-exporter curl http://node-ip:9100/metrics3. Prometheus Server的核心配置3.1 RBAC权限配置Prometheus需要访问Kubernetes API因此需要创建合适的ServiceAccount和ClusterRoleapiVersion: v1 kind: ServiceAccount metadata: name: prometheus namespace: monitoring --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: prometheus rules: - apiGroups: [] resources: - nodes - services - endpoints - pods verbs: [get, list, watch] - apiGroups: [extensions, networking.k8s.io] resources: - ingresses verbs: [get, list, watch] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: prometheus roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: prometheus subjects: - kind: ServiceAccount name: prometheus namespace: monitoring3.2 智能抓取配置管理通过ConfigMap管理Prometheus的抓取配置可以实现动态更新apiVersion: v1 kind: ConfigMap metadata: name: prometheus-config namespace: monitoring data: prometheus.yml: | global: scrape_interval: 30s evaluation_interval: 30s scrape_configs: - job_name: kubernetes-nodes kubernetes_sd_configs: - role: node relabel_configs: - source_labels: [__address__] regex: (.*):10250 replacement: ${1}:9100 target_label: __address__ - job_name: kubernetes-service-endpoints kubernetes_sd_configs: - role: endpoints relabel_configs: - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] action: keep regex: true - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] action: replace target_label: __metrics_path__ regex: (.)关键relabel配置说明将kubelet端口从10250重定向到9100通过service注解自动发现监控目标支持自定义metrics路径配置3.3 StatefulSet部署方案对于生产环境推荐使用StatefulSet部署PrometheusapiVersion: apps/v1 kind: StatefulSet metadata: name: prometheus namespace: monitoring spec: serviceName: prometheus replicas: 2 selector: matchLabels: app: prometheus template: metadata: labels: app: prometheus spec: serviceAccountName: prometheus containers: - name: prometheus image: prom/prometheus:v2.51.1 args: - --config.file/etc/prometheus/prometheus.yml - --storage.tsdb.path/data - --web.enable-lifecycle ports: - containerPort: 9090 volumeMounts: - name: config mountPath: /etc/prometheus - name: data mountPath: /data volumes: - name: config configMap: name: prometheus-config volumeClaimTemplates: - metadata: name: data spec: accessModes: [ ReadWriteOnce ] resources: requests: storage: 100Gi高可用设计要点使用volumeClaimTemplates实现持久化存储多个副本共享相同的配置通过--web.enable-lifecycle支持配置热加载4. 服务暴露与访问控制4.1 安全的Service暴露方式推荐使用Ingress配合Basic Auth暴露服务apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: prometheus namespace: monitoring annotations: nginx.ingress.kubernetes.io/auth-type: basic nginx.ingress.kubernetes.io/auth-secret: prometheus-auth spec: rules: - host: prometheus.example.com http: paths: - path: / pathType: Prefix backend: service: name: prometheus port: number: 9090创建认证secrethtpasswd -c auth admin kubectl -n monitoring create secret generic prometheus-auth --from-fileauth4.2 网络策略限制只允许特定命名空间访问PrometheusapiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-prometheus-access namespace: monitoring spec: podSelector: matchLabels: app: prometheus ingress: - from: - namespaceSelector: matchLabels: name: grafana ports: - protocol: TCP port: 90905. 高级配置与优化技巧5.1 长期存方案与Thanos或VictoriaMetrics集成实现长期存储# Thanos Sidecar配置示例 - name: thanos-sidecar image: thanosio/thanos:v0.35.0 args: - sidecar - --prometheus.urlhttp://localhost:9090 - --tsdb.path/data ports: - containerPort: 10901 volumeMounts: - name: data mountPath: /data5.2 资源限制与调优建议的资源限制配置组件CPU请求内存请求CPU限制内存限制node-exporter100m50Mi200m100Miprometheus24Gi48Gialertmanager1256Mi2512Miresources: requests: cpu: 2 memory: 4Gi limits: cpu: 4 memory: 8Gi5.3 定期配置检查清单为确保监控系统持续健康运行建议每月检查存储空间使用情况df -h /data抓取目标状态up指标告警规则有效性组件版本更新资源使用率监控在大型集群中我们曾通过优化relabel配置将Prometheus内存使用降低40%。关键是将不必要

相关新闻

利用快马AI平台快速构建任务管理应用原型验证软件工程需求
2026/6/12 9:53:53

利用快马AI平台快速构建任务管理应用原型验证软件工程需求

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请基于快马平台生成一个简单的任务管理Web应用原型。核心功能包括:用户登录注册界面、任务创建表单(含标题、描述、优先级、截止日期字段)、任务…

阅读更多
ssm在线医疗信息服务系统(10155)
2026/6/5 21:28:43

ssm在线医疗信息服务系统(10155)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…

阅读更多
手把手配置S4 HANA资产会计‘传输日期’与‘结算年度’(事务码FAA_CMP_LDT详解)
2026/6/13 4:43:52

手把手配置S4 HANA资产会计‘传输日期’与‘结算年度’(事务码FAA_CMP_LDT详解)

S4 HANA资产会计核心日期配置实战指南:从FAA_CMP_LDT到年结优化在SAP S4 HANA的资产会计模块实施过程中,日期参数的精确配置往往成为项目成败的关键分水岭。不同于ECC时代的分散设置,S4 HANA通过FAA_CMP_LDT事务码实现了关键日期参数的集中化…

阅读更多
HTTrack网站镜像工具:构建本地化Web内容库的完整解决方案
2026/6/16 2:57:59

HTTrack网站镜像工具:构建本地化Web内容库的完整解决方案

HTTrack网站镜像工具:构建本地化Web内容库的完整解决方案 【免费下载链接】httrack HTTrack Website Copier, copy websites to your computer (Official repository) 项目地址: https://gitcode.com/gh_mirrors/ht/httrack 在当今数字化时代,网站…

阅读更多
山东云弈创峰:构建跨平台AI电商中枢的工程化实践
2026/6/16 2:57:59

山东云弈创峰:构建跨平台AI电商中枢的工程化实践

在跨境电商的精细化运营时代,多渠道布局(如“亚马逊Shopify独立站TikTok Shop”)已成为中大型卖家的标配。然而,多渠道运作带来了极高的管理成本。过去两年,卖家们用ChatGPT写文案、用Midjourney生图、用各类插件做客服…

阅读更多
3步构建marked.js安全防护体系:从XSS防御到安全配置
2026/6/16 2:57:59

3步构建marked.js安全防护体系:从XSS防御到安全配置

3步构建marked.js安全防护体系:从XSS防御到安全配置 【免费下载链接】marked A markdown parser and compiler. Built for speed. 项目地址: https://gitcode.com/gh_mirrors/ma/marked marked.js作为一款高性能的Markdown解析器和编译器,在处理用…

阅读更多
公务员网课|老师推荐|电子版资料
2026/6/16 2:57:59

公务员网课|老师推荐|电子版资料

公务员网课|百度网盘|免费资源资料全科都有公务员网课 免费资源 PDFhttps://tool.nineya.com/s/1jr3ck8t3 【数学真题】1. 不定积分 ∫2x dx( ) A. xC B. 2xC C. x1 D. 2xC 答案:A 解析:∫2x dx2(x/2)CxC。2. 矩阵 A[1 2; 3 4] 的…

阅读更多
2026年广州非标自动化测试系统,技术强厂家这样挑选
2026/6/16 2:57:59

2026年广州非标自动化测试系统,技术强厂家这样挑选

在2026年的工业制造领域,非标自动化测试系统已不再是“加分项”,而是决定企业研发效率和产品质量的“生命线”。尤其是对于汽车、机器人、工业零部件等领域的制造商,面对日益严苛的客户要求和复杂的检测标准,一套靠谱的定制化测试…

阅读更多
告别玄学调试:用LaunchScreen.storyboard设置启动图,这几个Xcode配置细节千万别忽略
2026/6/16 1:57:59

告别玄学调试:用LaunchScreen.storyboard设置启动图,这几个Xcode配置细节千万别忽略

告别玄学调试:LaunchScreen.storyboard启动图配置全解析每次提交新版本前,启动图总像在玩俄罗斯轮盘赌——有时正常显示,有时莫名白屏,更可怕的是某些设备上永远显示旧图片。这种不确定性让开发者们不得不反复修改、清理缓存、甚至…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/14 0:57:30

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/14 0:57:30

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/16 0:39:53

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
2026 AI简历编辑平台深度测评与使用教程:ATS扫描、JD匹配、多版本投递怎么选?(首推 OfferGoose)
2026/6/16 0:57:58

2026 AI简历编辑平台深度测评与使用教程:ATS扫描、JD匹配、多版本投递怎么选?(首推 OfferGoose)

(先给结论,节省时间) 只想最快把简历“拉到及格线更贴JD”:优先从 鹅来面 开始——先做简历评分与岗位匹配度,再按建议改一版可投递稿。投递量很大、需要职位管理:偏向 Teal(职位追踪 多份简历…

阅读更多
Java毕业设计-面向学生竞赛的团队组建与信息管控系统设计 SpringBoot 架构下高校竞赛团队管理系统的设计与实践(源码+LW+部署文档+全bao+远程调试+代码讲解等)
2026/6/16 0:57:58

Java毕业设计-面向学生竞赛的团队组建与信息管控系统设计 SpringBoot 架构下高校竞赛团队管理系统的设计与实践(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

阅读更多
Windows内存清理终极指南:Mem Reduct让你的电脑告别卡顿的简单方法
2026/6/16 0:57:58

Windows内存清理终极指南:Mem Reduct让你的电脑告别卡顿的简单方法

Windows内存清理终极指南:Mem Reduct让你的电脑告别卡顿的简单方法 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memre…

阅读更多
GIT修改用户名
2026/6/14 11:53:59

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/15 2:21:34

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/15 21:13:35

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多