k8s1.28.8版本安装prometheus并持久化数据

本文参考

[k8s安装prometheus并持久化数据_/prometheus-config-reloader:-CSDN博客](https://blog.csdn.net/vic_qxz/article/details/119598466)
  • 前置要求: 已经部署了NFS或者其他存储的K8s集群.

    这里注意networkpolicies网络策略问题,可以后面删除这个策略,这里可以查看我之前的文档。

部署kube-prometheus
  1. 这里是配置好才执行这个,我们还没有配置存储什么的需要进行修改
  $ git clone https://github.com/coreos/kube-prometheus.git  #版本最新的是0.13.0
$ kubectl create -f manifests/setup
$ until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
kubectl create -f manifests/  #如果资源已经存在,则会报错
kubectl apply -f  跟这个一样   #如果资源已经存在,则会进行更新详解一下   
2. `kubectl create -f manifests/setup`: 使用 `kubectl` 命令创建 Kubernetes 资源,这些资源位于 manifests/setup 目录下。一般来说,这个命令会创建一些必要的资源,比如 ServiceAccount、ClusterRole 和 ClusterRoleBinding 等,用于配置 Prometheus 和 Grafana 在 Kubernetes 中的权限。3. `until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done`: 这是一个循环命令,它会持续执行 `kubectl get servicemonitors --all-namespaces` 命令,直到能够成功获取到所有命名空间中的 ServiceMonitor 资源。ServiceMonitor 是 Prometheus Operator 中的一种资源类型,用于指定 Prometheus 服务器应该如何监控应用程序。在这个命令中,通过 `until` 循环检查是否已经创建了所有的 ServiceMonitor 资源。4. `kubectl create -f manifests/`: 使用 `kubectl` 命令创建 Kubernetes 资源,这些资源位于 manifests/ 目录下。在这个命令中,一般会创建 Prometheus、Alertmanager、Grafana 等监控相关的资源。

持久化数据我这里用的是NFS创建动态的pv
我的storageclass名称是nfs-storageclass

root@k8s-master01:~/test/prometheus/kube-prometheus-0.13.0# kubectl get sc
NAME                  PROVISIONER              RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
managed-nfs-storage   fuseim.pri/ifs           Delete          Immediate              false                  4d20h
nfs-storageclass      prometheus-nfs-storage   Retain          Immediate              false                  16h
kube-prometheus的组件简介及配置变更

1.从整体架构看,prometheus 一共四大组件。 exporter 通过接口暴露监控数据, prometheus-server 采集并存储数据, grafana 通过prometheus-server查询并友好展示数据, alertmanager 处理告警,对外发送

prometheus-operator

prometheus-operator 服务是deployment方式部署,他是整个基础组件的核心,他监控我们自定义的 prometheus 和alertmanager,并生成对应的 statefulset。 就是prometheus和alertmanager服务是通过他部署出来的。

修改配置文件
grafana-pvc

创建grafana的存储卷. 并修改grafana-deployment.yaml文件, 将官方的emptyDir更换为persistentVolumeClaim

1.创建pvc

$ cd kube-prometheus/manifests/
$ cat  grafana-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:# PersistentVolumeClaim 名称name: grafananamespace: monitoringannotations:# 与 nfs-storageClass.yaml metadata.name 保持一致volume.beta.kubernetes.io/storage-class: "nfs-storageclass" 
spec:# 使用的存储类为 nfs-storageclassstorageClassName: "nfs-storageclass"# 访问模式为 ReadWriteManyaccessModes:- ReadWriteMany#- ReadWriteOnceresources:# 存储请求为 50Girequests:storage: 50Gi $ kubectl apply -f grafana-pvc.yaml

image.png

2.修改默认的grafana配置文件

$ vim grafana-deployment.yaml...##找到 grafana-storage, 添加上面创建的pvc: grafana. 然后保存.volumes:- name: grafana-storagepersistentVolumeClaim:claimName: grafana
...$ kubectl apply -f grafana-deployment.yaml

image.png

prometheus-k8s持久化

prometheus-server 获取各端点数据并存储与本地,创建方式为自定义资源 crd中的prometheus。 创建自定义资源prometheus后,会启动一个statefulset,即prometheus-server. 默认是没有配置持久化存储的

1.修改配置文件
$ cd kube-prometheus/manifests/
$ vim prometheus-prometheus.yaml  
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:labels:prometheus: k8sname: k8snamespace: monitoring
spec:alerting:alertmanagers:- name: alertmanager-mainnamespace: monitoringport: webstorage: #这部分为持久化配置volumeClaimTemplate:spec:storageClassName: nfs-23 accessModes: ["ReadWriteOnce"]resources:requests:storage: 100GinodeSelector:kubernetes.io/os: linuxpodMonitorNamespaceSelector: {}podMonitorSelector: {}replicas: 2resources:requests:memory: 400MiruleSelector:matchLabels:prometheus: k8srole: alert-rulessecurityContext:fsGroup: 2000runAsNonRoot: truerunAsUser: 1000serviceAccountName: prometheus-k8sserviceMonitorNamespaceSelector: {}serviceMonitorSelector: {}version: v2.17.2

执行变更, 这里会自动创建两个指定大小的pv(prometheus-k8s-0prometheus-k8s-1

$ kubectl apply -f manifests/prometheus-prometheus.yaml 

image.png

修改存储时长
$ vim manifests/setup/prometheus-operator-deployment.yaml
....- args:- --kubelet-service=kube-system/kubelet- --logtostderr=true- --config-reloader-image=jimmidyson/configmap-reload:v0.3.0- --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.39.0- storage.tsdb.retention.time=180d   ## 修改存储时长
....
$ kubectl apply -f manifests/setup/prometheus-operator-deployment.yaml
添加ingress访问grafana和promethues

这里访问是有问题的,参照我kubernetes-networkpolicies网络策略问题这篇文章解决

$ cat ingress.yml 
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:annotations:k8s.eip.work/workload: grafanak8s.kuboard.cn/workload: grafanageneration: 2labels:app: grafananame: grafananamespace: monitoring
spec:rules:- host: k8s-moni.fenghong.techhttp:paths:- backend:serviceName: grafanaservicePort: httppath: /
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:annotations:k8s.kuboard.cn/workload: prometheus-k8sgeneration: 2labels:app: prometheusprometheus: k8smanagedFields:- apiVersion: networking.k8s.io/v1beta1name: prometheus-k8snamespace: monitoring
spec:rules:- host: k8s-prom.fenghong.techhttp:paths:- backend:serviceName: prometheus-k8sservicePort: webpath: /

执行apply

## 安装 ingress controller
$ kubectl apply -f https://kuboard.cn/install-script/v1.18.x/nginx-ingress.yaml## 暴露grafana及prometheus服务
$ kubectl apply -f ingress.yml
web访问

image.png

配置kube-prometheus监控额外的项目

添加additional-scrape-configs配置文件. 例如

$ cat monitor/add.yaml 
- job_name: 'prometheus'# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ['192.168.0.23:9100', '192.168.0.21:9101', '192.168.0.61:9100', '192.168.0.62:9100', '192.168.0.63:9100', '192.168.0.64:9100', '192.168.0.89:9100', '192.168.0.11:9100']
- job_name: 'mysql'static_configs:- targets: ['192.168.0.21:9104','192.168.0.23:9104']
- job_name: 'nginx'static_configs:- targets: ['192.168.0.23:9913']- job_name: 'elasticsearch'metrics_path: "/_prometheus/metrics"static_configs:- targets: ['192.168.0.31:9200']

创建secret文件, 我这里部署到了monitoring 命名空间.

$ kubectl create secret generic additional-scrape-configs --from-file=add.yaml --dry-run -oyaml  > additional-scrape-configs.yaml
$ kubectl apply -f additional-scrape-configs.yaml  -n monitoring

prometheus-prometheus.yaml中添加 additionalScrapeConfigs 选项.

$  cat prometheus-prometheus.yaml 
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:labels:prometheus: k8sname: k8snamespace: monitoring
spec:alerting:alertmanagers:- name: alertmanager-mainnamespace: monitoringport: webstorage: #这部分为持久化配置volumeClaimTemplate:spec:storageClassName: nfs-23 accessModes: ["ReadWriteOnce"]resources:requests:storage: 100Giimage: quay.io/prometheus/prometheus:v2.17.2nodeSelector:kubernetes.io/os: linuxpodMonitorNamespaceSelector: {}podMonitorSelector: {}replicas: 3 resources:requests:memory: 400MiruleSelector:matchLabels:prometheus: k8srole: alert-rulessecurityContext:fsGroup: 2000runAsNonRoot: truerunAsUser: 1000serviceAccountName: prometheus-k8sserviceMonitorNamespaceSelector: {}serviceMonitorSelector: {}version: v2.17.2additionalScrapeConfigs:name: additional-scrape-configskey: add.yaml

执行apply即可

$ kubectl apply -f prometheus-prometheus.yaml

其他系统的访问

参考文档
[Kube-prometheus部署Ingress为Prometheus-Grafana开启https_kube-prometheu配置ingress-CSDN博客](https://blog.csdn.net/Happy_Sunshine_Boy/article/details/107955691)

Prometheus

基于访问路径过滤
修改yaml:kube-prometheus-0.5.0/manifests/prometheus-prometheus.yaml
在参数下:image: quay.io/prometheus/prometheus:v2.15.2,添加如下参数:
externalUrl: https://master170.k8s:30443/prometheus

image.png

kubectl apply -f prometheus-prometheus.yaml
配置:ingress-tls.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations:kubernetes.io/ingress.class: nginxnginx.ingress.kubernetes.io/use-regex: "true"nginx.ingress.kubernetes.io/enable-cors: "true"nginx.ingress.kubernetes.io/rewrite-target: /$2name: prometheus-k8snamespace: monitoring
spec:rules:- host: #写你的域名http:paths:- path: /prometheus(/|$)(.*)pathType: ImplementationSpecificbackend:service:name: prometheus-k8sport:number: 9090

访问prometheus时,都要带上“prometheus”:
举例:
https://master170.k8s:30443/prometheus/graph
image.png

AlertManager

修改yaml:manifests/alertmanager-alertmanager.yaml
在参数下:image: quay.io/prometheus/alertmanager:v0.20.0,添加如下参数:
externalUrl: https://master170.k8s:30443/alertmanager

image.png

配置:ingress-tls.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations:kubernetes.io/ingress.class: nginxnginx.ingress.kubernetes.io/use-regex: "true"nginx.ingress.kubernetes.io/enable-cors: "true"nginx.ingress.kubernetes.io/rewrite-target: /$2name: prometheus-k8snamespace: monitoring
spec:rules:- host: #写你的域名http:paths:#   - path: /prometheus(/|$)(.*)#     pathType: ImplementationSpecific#     backend:#       service:#         name: prometheus-k8s#         port:#           number: 9090- path: /alertmanager(/|$)(.*)pathType: ImplementationSpecificbackend:service:name: alertmanager-mainport:number: 9093  

访问alertmanager时,都要带上“alertmanager”:
https://master170.k8s:30443/alertmanager/#/alerts
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LangChain使用本地LLM的简单实现

所用模型:stable-code-instruct-3b-Q8_0.gguf 下载链接:bartowski/stable-code-instruct-3b-GGUF Hugging Face 详细内容请查看:Introduction | 🦜️🔗 Langchain 目录 LangChain 代码示例 LangChain LangChain…

证券市场概述

证券市场 证券市场参与者证券发行市场(一级市场)证券发行方式(按发行对象)证券发行方式(按有无中介)证券交易市场(二级市场)证券交易所场外交易市场(店头市场、柜台市场&…

C# 系统学习(事件与委托 )

在C#中,事件是一种特殊的委托类型,用于通知其他类有某件事发生。事件允许一个类公开某些特定的行为,而订阅者可以在这些行为发生时收到通知。委托则是类型安全的函数指针,可以指向具有匹配签名的方法。 C# 中的事件声明与订阅 事…

再生式收音机填坑记

年前踩坑再生式收音机,还是得找机会把坑填上,最终选定了K8TND的方案,其实与Mr. Kitchen的也基本差不多。电路图如下: 实物图如下: 实际接收效果还不错,但是感觉频段上哪哪都是中国之声,对这种…

CSMM软件能力成熟度是什么?一文读懂!

01、CSMM是什么? CSMM是标准T/CESA 1159-2022《软件过程能力成熟度模型》(Software capability maturity model)的英文简称,是我国基于国家安全和信息安全背景下,在软件过程管理领域对标CMMI的标准,旨在替…

UE4_碰撞_碰撞蓝图节点——Line Trace For Objects(对象的线条检测)

一、Line Trace For Objects(对象的线条检测):沿给定线条执行碰撞检测并返回遭遇的首个命中,这只会找到由Object types指定类型的对象。注意他与Line Trace By Channel(由通道检测线条)的区别,一个通过Obje…

React系列之合成事件与事件处理机制

文章目录 React事件处理机制原生事件的事件机制事件代理(事件委托) 合成事件使用合成事件目的合成事件原生事件区别事件池 原生事件和React事件的执行顺序e.stopPropagation() React17事件机制的修改 React事件处理机制 react 事件机制基本理解&#xf…

时序预测 | Matlab实现CPO-BP冠豪猪算法优化BP神经网络时间序列预测

时序预测 | Matlab实现CPO-BP冠豪猪算法优化BP神经网络时间序列预测 目录 时序预测 | Matlab实现CPO-BP冠豪猪算法优化BP神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现CPO-BP冠豪猪算法优化BP神经网络时间序列预测(完整源码…

Linux(CentOS7)安装软件方式(编译安装,yum,rpm)

目录 前言 安装方式 编译安装 下载 解压 安装 创建软链接 yum rpm 前言 在使用 CentOS 安装软件时,发现安装的方式有好几种,有官网下载 tar 包解压,然后自己编译安装的,也有直接通过 yum 命令一键安装的,还有…

力扣刷题Days29-第二题-70.爬楼梯(js)

只有学习,没有自己的思路解题哈哈哈 1,题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 2,代码 这种解法的本质是斐波那契数列 /*** param {number} n* re…

appium辅助自动化工具-- Appium studio

这里我要给大家介绍一款appium辅助自动化测试工具appium studio,你没看错,不是android studio,也不是appium android studio,就是appium studio! 下载地址: Appium Studio | Digital.ai Continuous Test…

探究ThreadLocal的魔数0x61c88647和Entry数组

探究ThreadLocal 下面有一个很重要的HASH_INCREMENT,他的值是0x61c88647 public class ThreadLocal<T> {/***ThreadLocals依赖于附加到每个线程的每线程线性探针哈希映射 (thread.threadLocals和inheritableThreadLocals)。ThreadLocal对象充当键&#xff0c;通过threa…

Visual Studio 2022 中VLD库如何安装

GitHub链接 Release v2.5.1 KindDragon/vld 点击可执行程序进行下载 点击可执行程序进行安装 双击打开 一直点击next即可完成安装&#xff08;不用在意安装路径&#xff0c;总共不到2MB&#xff09; 如果GitHub无法打开&#xff0c;可以私信我发你安装包直接安装

MyBatis的高级特性探索

MyBatis 是一个流行的Java持久层框架&#xff0c;它提供了简单和直观的方法来处理数据库操作。相比于传统的JDBC操作&#xff0c;MyBatis通过XML或注解方式映射Java对象与数据库之间的关系&#xff0c;极大地简化了数据库编程工作。除了基本的数据映射和SQL语句执行功能&#x…

VBA批量读取txt文档目标数据并分组处理

VBA在批量处理txt等文本文件的数据是其数据处理的一大重要应用&#xff0c;实际在处理txt文档往往需要提取多个测试料的多个目标数值&#xff0c;而且还要将提取的数值进一步处理&#xff0c;如求取平均值&#xff0c;最小值等&#xff0c;能够直观地看到一组数据的规律&#x…

Java学习笔记NO.27

Java异常 异常处理在Java编程中是一项至关重要的技术&#xff0c;它有助于增强程序的稳定性和可靠性。 1.为什么需要处理异常&#xff1f; 在编写Java程序时&#xff0c;我们无法保证代码的100%正确性&#xff0c;因为各种意外情况可能会导致程序出现错误。这些意外情况包括但…

二维码门楼牌管理应用平台建设:实现民主参与的新途径

文章目录 前言一、二维码门楼牌管理应用平台的兴起二、投票表决功能的实现三、居民参与度的提升四、面临的挑战与前景展望 前言 在数字化时代&#xff0c;二维码技术的应用已经渗透到我们生活的方方面面。近期&#xff0c;二维码门楼牌管理应用平台的建设成为了社区治理的一大…

学习嵌入式系统开发学习课程有哪些

学习嵌入式系统开发需要掌握一些基础的编程知识和硬件知识&#xff0c;以下是一些常见的嵌入式系统开发学习课程和资源&#xff1a; 1. **C/C编程课程**&#xff1a;掌握好C/C编程语言是嵌入式系统开发的基础&#xff0c;可以通过在线教育平台如Coursera、Udemy、edX等搜索相关…

[flask]请求全局钩子

flask从入门到精通之钩子、异常、context、jinjia模板、过滤器 - 异步非阻塞 - 博客园 (cnblogs.com) 参考的这个博客&#xff0c;但有一个需要注意的是&#xff0c;最新版本的flask不知道是不是更新了还是怎么了&#xff0c;他的before_first_request不见了&#xff0c;如果继…

Vue2源码 —— 数据响应式实现

Vue2源码 —— 数据响应式实现 配置项 //package.json {"name": "vue","version": "1.0.0","main": "index.js","scripts": {"dev": "rollup -cw"},"author": "&…