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

embedded/2025/3/18 20:31:37/

使用 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/embedded/173670.html

相关文章

Python 视频爬取教程

文章目录 前言基本原理环境准备Python安装选择Python开发环境安装必要库 示例 1&#xff1a;爬取简单直链视频示例 2&#xff1a;爬取基于 HTML5 的视频&#xff08;以某简单视频网站为例&#xff09; 前言 以下是一个较为完整的 Python 视频爬取教程&#xff0c;包含基本原理…

文件解析漏洞靶场---解析详解

⽂件解析漏洞是由于中间件错误的将任意格式的⽂件解析成⽹⻚可执⾏⽂件&#xff0c;配合⽂件上传漏洞进⾏ GetShell的漏洞&#xff01; 一、IIS解析漏洞 3个 1. IIS6.X 2个 环境需求&#xff1a;windows2003iis6 安装windows2003&#xff1b; 安装iis&#xff1a;控…

Django之旅:第二节--启动运行django

1、确保app已配置完(settings.py文件里面配置&#xff09; INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,app.apps.AppConfig #配置已经注册好的app…

基于Python+SQLite实现(Web)验室设备管理系统

实验室设备管理系统 应用背景 为方便实验室进行设备管理&#xff0c;某大学拟开发实验室设备管理系统 来管理所有实验室里的各种设备。系统可实现管理员登录&#xff0c;查看现有的所有设备&#xff0c; 增加设备等功能。 开发环境 Mac OSPyCharm IDEPython3Flask&#xff…

TK矩阵:提高多账号管理效率的利器

随着TikTok的火爆&#xff0c;越来越多的人开始利用这个平台进行内容创作和社交互动。无论是个人创作者、品牌方&#xff0c;还是营销公司&#xff0c;TikTok都提供了巨大的机会&#xff0c;但同时也带来了运营上的挑战&#xff0c;尤其是在管理多个账户时。每个账号的维护、内…

qt 线程

以下是一个完整的Qt线程池实现示例&#xff0c;结合任务优先级、线程安全、UI交互等高级功能&#xff0c;并包含异常处理机制&#xff1a; cpp // mytask.h #ifndef MYTASK_H #define MYTASK_H#include <QRunnable> #include <QObject> #include <QMutex> #…

三.ffmpeg对yuv的操作

一.windows 1.使用ffmpeg录制mp4视频 #获取音视频设备 ffmpeg -list_devices true -f dshow -i dummy #录制视频 ffmpeg -f dshow -i video"xxxx" -c"v libx264 -pix_fmt yuv420p output.mp4 2.将mp4转换为yuv数据 //-i&#xff1a;输入文件选项&#xff1b…

ngx_http_module_t

定义在 src\http\ngx_http_config.h typedef struct {ngx_int_t (*preconfiguration)(ngx_conf_t *cf);ngx_int_t (*postconfiguration)(ngx_conf_t *cf);void *(*create_main_conf)(ngx_conf_t *cf);char *(*init_main_conf)(ngx_conf_t *cf, void *conf);…