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

devtools/2025/3/18 8:30:56/

使用 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/devtools/168028.html

相关文章

Spark 优化作业性能以及处理数据倾斜问题

1. 如何优化Spark作业的性能&#xff1f; 优化Spark作业性能可以从多个方面入手&#xff0c;以下是一些关键的优化策略&#xff1a; &#xff08;1&#xff09;资源调优 增加Executor数量&#xff1a;更多的Executor可以并行处理更多任务。 增加Executor内存&#xff1a;通过…

Zabbix安装(保姆级教程)

Zabbix 是一款开源的企业级监控解决方案,能够监控网络的多个参数以及服务器、虚拟机、应用程序、服务、数据库、网站和云的健康状况和完整性。它提供了灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,从而能够快速响应服务器问题。Zabbix 基于存储的数据提供…

provide/inject源码实现

在 Vue 3 中&#xff0c;provide 和 inject 是通过 Vue 的响应式系统和组件实例机制实现的&#xff0c;底层是依赖 Vue 3 中的 Proxy 和 Reactive 来实现跨层级的数据传递和响应式绑定。以下是一个简化版的实现逻辑&#xff0c;帮助理解 Vue 3 中 provide 和 inject 是如何实现…

论文阅读:Deep Hybrid Camera Deblurring for Smartphone Cameras

今天介绍一篇 ACM SIGGRAPH 2024 的文章&#xff0c;关于手机影像中的去模糊的文章。 Deep Hybrid Camera Deblurring for Smartphone Cameras Abstract 手机摄像头尽管取得了显著的进步&#xff0c;但由于传感器和镜头较为紧凑&#xff0c;在低光环境下的成像仍存在困难&am…

【eNSP实战】基本ACL实现网络安全

拓扑图 要求&#xff1a; PC3不允许访问其他PC和Server1PC2允许访问Server1服务器&#xff0c;不允许其他PC访问各设备IP配置如图所示&#xff0c;这里不做展示 AR1接口vlan配置 vlan batch 10 20 30 # interface Vlanif10ip address 192.168.1.254 255.255.255.0 # inter…

C++ QT零基础教学(二)

一. 引子 在上一篇文章里面稍微讲解了一点C的基础&#xff0c;但是后面想了想要是还是继续单纯写C的内容的话要写到几百年年以后了&#xff0c;都不知道什么时候到QT了&#xff0c;所以这次就直接开始从QT开始描写了&#xff0c;当然肯定不会是很有难度&#xff0c;尽量还是会用…

Linux指令篇:jq

前言&#xff1a; 在 Linux 运维和开发过程中&#xff0c;我们经常需要处理 JSON 格式的数据&#xff0c;jq 是一个轻量级、功能强大的 JSON 解析工具&#xff0c;专门用于 查询、格式化、修改 JSON 数据。本文将介绍 jq 的安装、基本用法及实际案例&#xff0c;让你轻松掌握 j…

w260火锅店管理系统设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…