K8S学习之基础三十四:K8S之监控Prometheus部署pod版

ops/2025/3/19 18:56:39/

使用 Kubernetes Pod 的方式部署 Prometheus 是一种常见的方法,尤其是在容器化和微服务架构中。以下是详细的步骤:

1. 创建命名空间(可选)

为了方便管理,可以为 Prometheus 创建一个单独的命名空间。

yaml

复制

apiVersion: v1
kind: Namespace
metadata:name: monitoring

将上述内容保存为 namespace.yaml,然后应用:

bash

复制

kubectl apply -f namespace.yaml

2. 创建 ConfigMap

Prometheus 需要一个配置文件 prometheus.yml。我们可以使用 ConfigMap 来管理这个配置文件。

yaml

复制

apiVersion: v1
kind: ConfigMap
metadata:name: prometheus-confignamespace: monitoring
data:prometheus.yml: |global:scrape_interval: 15sscrape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']

将上述内容保存为 configmap.yaml,然后应用:

bash

复制

kubectl apply -f configmap.yaml

3. 创建 Deployment

接下来,创建一个 Deployment 来运行 Prometheus。

yaml

复制

apiVersion: apps/v1
kind: Deployment
metadata:name: prometheusnamespace: monitoring
spec:replicas: 1selector:matchLabels:app: prometheustemplate:metadata:labels:app: prometheusspec:containers:- name: prometheusimage: prom/prometheus:latestargs:- "--config.file=/etc/prometheus/prometheus.yml"ports:- containerPort: 9090volumeMounts:- name: config-volumemountPath: /etc/prometheusvolumes:- name: config-volumeconfigMap:name: prometheus-config

将上述内容保存为 deployment.yaml,然后应用:

bash

复制

kubectl apply -f deployment.yaml

4. 创建 Service

为了让 Prometheus 服务可以从集群外部访问,我们需要创建一个 Service。

yaml

复制

apiVersion: v1
kind: Service
metadata:name: prometheusnamespace: monitoring
spec:type: NodePortports:- port: 9090targetPort: 9090nodePort: 30090selector:app: prometheus

将上述内容保存为 service.yaml,然后应用:

bash

复制

kubectl apply -f service.yaml

5. 访问 Prometheus

现在,你可以通过 http://<NodeIP>:30090 访问 Prometheus 的 Web UI。

6. 配置监控目标

你可以通过更新 ConfigMap 来添加更多监控目标。例如,监控一个 Node Exporter:

yaml

复制

apiVersion: v1
kind: ConfigMap
metadata:name: prometheus-confignamespace: monitoring
data:prometheus.yml: |global:scrape_interval: 15sscrape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']- job_name: 'node'static_configs:- targets: ['node-exporter:9100']

更新 ConfigMap:

bash

复制

kubectl apply -f configmap.yaml

然后重启 Prometheus Pod 以应用新的配置:

bash

复制

kubectl delete pod -l app=prometheus -n monitoring

7. 配置 Alertmanager(可选)

如果需要告警功能,可以部署 Alertmanager。

创建 Alertmanager ConfigMap

yaml

复制

apiVersion: v1
kind: ConfigMap
metadata:name: alertmanager-confignamespace: monitoring
data:alertmanager.yml: |global:resolve_timeout: 5mroute:receiver: 'email'receivers:- name: 'email'email_configs:- to: 'your-email@example.com'from: 'alertmanager@example.com'smarthost: 'smtp.example.com:587'auth_username: 'your-email@example.com'auth_password: 'your-password'

将上述内容保存为 alertmanager-configmap.yaml,然后应用:

bash

复制

kubectl apply -f alertmanager-configmap.yaml
创建 Alertmanager Deployment

yaml

复制

apiVersion: apps/v1
kind: Deployment
metadata:name: alertmanagernamespace: monitoring
spec:replicas: 1selector:matchLabels:app: alertmanagertemplate:metadata:labels:app: alertmanagerspec:containers:- name: alertmanagerimage: prom/alertmanager:latestargs:- "--config.file=/etc/alertmanager/alertmanager.yml"ports:- containerPort: 9093volumeMounts:- name: config-volumemountPath: /etc/alertmanagervolumes:- name: config-volumeconfigMap:name: alertmanager-config

将上述内容保存为 alertmanager-deployment.yaml,然后应用:

bash

复制

kubectl apply -f alertmanager-deployment.yaml
创建 Alertmanager Service

yaml

复制

apiVersion: v1
kind: Service
metadata:name: alertmanagernamespace: monitoring
spec:type: NodePortports:- port: 9093targetPort: 9093nodePort: 30093selector:app: alertmanager

将上述内容保存为 alertmanager-service.yaml,然后应用:

bash

复制

kubectl apply -f alertmanager-service.yaml
配置 Prometheus 使用 Alertmanager

更新 Prometheus 的 ConfigMap,添加 Alertmanager 配置:

yaml

复制

apiVersion: v1
kind: ConfigMap
metadata:name: prometheus-confignamespace: monitoring
data:prometheus.yml: |global:scrape_interval: 15sscrape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']- job_name: 'node'static_configs:- targets: ['node-exporter:9100']alerting:alertmanagers:- static_configs:- targets: ['alertmanager:9093']

更新 ConfigMap:

bash

复制

kubectl apply -f configmap.yaml

然后重启 Prometheus Pod 以应用新的配置:

bash

复制

kubectl delete pod -l app=prometheus -n monitoring

8. 验证部署

确保 Prometheus 和 Alertmanager 正常运行,并通过 Web UI 检查监控数据和告警配置。

9. 安全配置(可选)

根据需要配置身份验证、TLS 加密等安全措施。

10. 监控和优化

定期检查 Prometheus 的性能和资源使用情况,并根据需要进行优化。

通过这些步骤,你应该能够成功在 Kubernetes 上以 Pod 的方式部署 Prometheus。


http://www.ppmy.cn/ops/167087.html

相关文章

Spark 中agg的用法

在 Spark 中&#xff0c;agg 是用于对 DataFrame 进行聚合操作的函数。它可以同时对多个列应用多个聚合函数&#xff0c;并返回一个新的 DataFrame。agg 通常与 groupBy 结合使用&#xff0c;用于对分组后的数据进行聚合操作。 以下是 agg 的详细用法和示例。 1. agg 的基本用…

仿“东方甄选”直播商城小程序运营平台

在公域直播流量红利趋于饱和、流量成本大幅攀升的当下&#xff0c;私域直播为企业开辟了新的流量聚集和转化渠道&#xff0c;特别是对于那些希望在私域流量领域取得突破的品牌商家来说&#xff0c;直播场景以其独特的高频互动氛围&#xff0c;相比其他运营方式&#xff0c;展现…

1.angular介绍

初級使用视频添加链接描述 angular工具 angular.module(‘名’, [依赖模块]) 模块 angular.bind(*) : 修改this指向 angualr.copy() // a angular.copy(a, b) —a完全覆盖了b,c就是a angular.extend(a, b) a里面集成了b属性 angular.isArray angular.isDate angular.isDefin…

涨薪技术|Kubernetes(k8s)之Pod生命周期(下)

上次推文我们学习了Pod生命周期&#xff08;上&#xff09;知识&#xff1a;相位、创建与终止、初始化容器&#xff0c;今天继续分享完余下的3个知识&#xff1a;钩子函数、容器探测、重启策略。 01钩子函数 钩子函数能够感知自身生命周期中的事件&#xff0c;并在相应的时刻…

【机器学习】基于conda虚拟环境的gcc、g++版本升级

最近在学习大模型部署&#xff0c;需要安装flash-attn&#xff0c;在编译时报错 c: error: unrecognized command line option ‘-stdc17’centos7.9默认gcc最高版本为4.8.5 (base) [rootxx ~]# cat /proc/version Linux version 3.10.0-1160.el7.x86_64 (mockbuildkbuilder.…

排错 -- FISCO BCOS区块链网络 -- 3. 编译智能合约

文章为FISCO BCOS2.0搭建区块链平台中发现的问题与总结&#xff0c;出错原因不唯一 &#xff0c;解决办法不唯一 目前社区缺少完整&#xff0c;稳定的搭建平台和教程 &#xff0c;欢迎各位及时补充&#xff0c;如有错误请及时评论纠正&#xff01; 感谢各位搜索到这里&#…

【STM32】从新建一个工程开始:STM32 新建工程的详细步骤

STM32 开发通常使用 Keil MDK、STM32CubeMX、IAR 等工具来创建和管理工程。此处是 使用 Keil MDK5 STM32CubeMX 创建 STM32 工程的详细步骤。 新建的标准库工程文件已上传至资源中&#xff0c;下载后即可直接使用。 标准库新建 STM32 工程的基本目录结构&#xff1a;STD_STM…

Vue3中正确解析RefImpl对象

在 Vue 3 中&#xff0c;当你看到 RefImpl 对象时&#xff0c;说明这是一个通过 ref() 创建的响应式引用。要获取它的实际值&#xff0c;直接访问 .value 属性即可。以下是具体方法&#xff1a; 直接获取值&#xff08;标准方式&#xff09; javascript 复制 console.log(&q…