Helm 安装prometheus-stack 使用local pv持久化存储数据

目录

背景:

环境准备:

1. 磁盘准备

2. 磁盘分区格式化

local storage部署

1. 节点打标签

2. 创建local pv storageClass和prometheus-pv

Prometheus-stack部署

1. 下载helm chart包

2. values.yaml 参数解释

3. 部署prometheus-stack

4. 查看部署情况


背景:

k8s集群prometheus 监控数据和业务数据共用一个NFS(网络文件系统),可能会出现以下问题:

  • 影响业务:业务数据和监控数据进行隔离,原则上我们可以允许监控数据丢失,但是业务数据一定是不能丢失的

  • 读写性能:业务服务和监控系统挂载NFS共享的文件或者目录,如果业务服务和监控系统同时在进行大量的读写则会互现干扰

  • 稳定性:NFS对网络环境的要求比较高,如果网络环境不稳定,容易导致文件共享出现故障

  • 存储空间:prometheus 虽然有监控数据回收的机制,但是也只是针对数据有限期进行回收,如果某一天有大量的监控数据就会占用NFS的很多存储空间,极端情况下会出现将NFS存储空间占满的情况

  • NFS扩容:NFS的扩展性比较差,当需要扩容时,需要手动进行配置,操作比较繁琐

环境准备:

一个正常运行的集群,集群版本最好 >= 1.21,低于1.21 版本兼容性可能会有问题

kube-prometheus stackKubernetes 1.21Kubernetes 1.22Kubernetes 1.23Kubernetes 1.24Kubernetes 1.25Kubernetes 1.26Kubernetes 1.27
release-0.9xx
release-0.10xx
release-0.11xx
release-0.12xx
mainx

1. 磁盘准备

从集群中选择一个节点,该节点独立挂载一块磁盘。磁盘最好是做一个磁盘阵列例如Raid50,提高磁盘的容错能力

2. 磁盘分区格式化

# 将sdb的空间都分给一个分区
parted /dev/sdb mkpart primary 0% 100%# 写入文件系统
mkfs -t ext4 /dev/sdb1# 获取磁盘的UUID,用于写入fstab实现开机自动挂载
blkid  /dev/sdb1# 创建挂载点
mkdir -p /monitoring# 查看fstab文件
cat /etc/fstab  | grep monitoring                                                                                                                                                                     
/dev/disk/by-uuid/93a76705-814a-4a5e-85f0-88fe03d7837c /monitoring ext4 defaults 0 1 # 挂载
mount -a 

local storage部署

1. 节点打标签

kubectl label node node156 prometheus=deploy

2. 创建local pv storageClass和prometheus-pv

cd /home/sunwenbo/local-pv 
kubectl apply -f local-pv-storage.yaml 
kubectl apply -f local-pv.yaml

local-pv-storage.yaml

kind: StorageClass                                                                                                                                                                                                                         
apiVersion: storage.k8s.io/v1                                                                                                                                                                                                              
metadata:                                                                                                                                                                                                                                  name: local-storage                                                                                                                                                                                                                      
provisioner: kubernetes.io/no-provisioner                                                                                                                                                                                                  
volumeBindingMode: WaitForFirstConsumer  
#reclaimPolicy: Retain            注:local pv不支持retain存储方式                                                                                                                                                                                                           
#volumeBindingMode: Immediate     注:不支持动态创建pv

local-pv.yaml

apiVersion: v1                                                                                                                                                                                                                             
kind: PersistentVolume                                                                                                                                                                                                                     
metadata:                                                                                                                                                                                                                                  name: prometheus-pv                                                                                                                                                                                                                      
spec:                                                                                                                                                                                                                                      capacity:                                                                                                                                                                                                                                storage: 200Gi                                                                                                                                                                                                                         volumeMode: Filesystem                                                                                                                                                                                                                   accessModes:                                                                                                                                                                                                                             - ReadWriteOnce                                                                                                                                                                                                                          persistentVolumeReclaimPolicy: Retain                                                                                                                                                                                                    #persistentVolumeReclaimPolicy: Delete                                                                                                                                                                                                 storageClassName: local-storage                                                                                                                                                                                                          local:                                                                                                                                                                                                                                   path: /monitoring/prometheus                                                                                                                                                                                                           nodeAffinity:                                                                                                                                                                                                                            required:                                                                                                                                                                                                                              nodeSelectorTerms:                                                                                                                                                                                                                   - matchExpressions:                                                                                                                                                                                                                  - key: prometheus                                                                                                                                                                                                                  operator: In                                                                                                                                                                                                                     values:                                                                                                                                                                                                                          - "deploy"    

解释一下:还记得我们上面打标签的步骤吧,这里配置nodeAffinity就是为了将pv创建在指定的节点上通过标签进行匹配

查看StorageClass

root@master01:/home/sunwenbo/local-pv# kubectl  get storageclasses.storage.k8s.io                                                                                                                                                          
NAME                   PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE                                                                                                                    
local-storage          kubernetes.io/no-provisioner   Delete          WaitForFirstConsumer   false                  17h                                                                                                                    
nfs-016                nfs.csi.k8s.io                 Retain          Immediate              false                  59d                                                                                                                    
nfs-018                nfs.csi.k8s.io                 Retain          Immediate              false                  44d                                                                                                                    
nfs-retain (default)   nfs.csi.k8s.io                 Retain          Immediate              false                  62d   

查看pv

注:正常pv的状态是Available,因为还有没有创建pvc,下面展示是我部署后的结果,可以看到prometheus-kube-prometheus-stack-prometheus-db-prometheus-kube-prometheus-stack-prometheus-0 绑定了prometheus-pv,至于这个pvc是怎么来的下面会介绍

root@master01:/home/sunwenbo/local-pv# kubectl  get pv | grep prometheus                                                                                                                                                                   
prometheus-pv                              200Gi      RWO            Retain           Bound    kube-prometheus/prometheus-kube-prometheus-stack-prometheus-db-prometheus-kube-prometheus-stack-prometheus-0           local-storage        23m 

Prometheus-stack部署

1. 下载helm chart包

wget https://github.com/prometheus-community/helm-charts/releases/download/kube-prometheus-stack-45.27.2/kube-prometheus-stack-45.27.2.tgz 
tar xf kube-prometheus-stack-45.27.2.tgz 
cd kube-prometheus-stack

2. values.yaml 参数解释

修改部分如下

  # alertmanager 持久化配置,使用nfs 存储空间为4Galertmanager:alertmanagerSpec:storage:                                                                                                                                                                                                                               volumeClaimTemplate:                                                                                                                                                                                                                 spec:                                                                                                                                                                                                                              storageClassName: nfs-retain                                                                                                                                                                                                     accessModes: ["ReadWriteOnce"]                                                                                                                                                                                                   resources:                                                                                                                                                                                                                       requests:                                                                                                                                                                                                                      storage: 4Gi # grafana 持久化存储配置及环境变量、plugin添加grafana:                                                                                                                                                                                                                                   enabled: true                                                                                                                                                                                                                            namespaceOverride: ""                                                                                                                                                                                                                                                                                                                                                                                                                                                       forceDeployDatasources: falsepersistence:                                                                                                                                                                                                                             type: pvc                                                                                                                                                                                                                              enabled: true                                                                                                                                                                                                                          storageClassName: nfs-retain                                                                                                                                                                                                           accessModes:                                                                                                                                                                                                                           - ReadWriteOnce                                                                                                                                                                                                                      size: 2Gi                                                                                                                                                                                                                              finalizers:                                                                                                                                                                                                                            - kubernetes.io/pvc-protection env:                                                                                                                                                                                                                                     GF_AUTH_ANONYMOUS_ENABLED: "true"                                                                                                                                                                                                      GF_AUTH_ANONYMOUS_ORG_NAME: "Main Org."                                                                                                                                                                                                GF_AUTH_ANONYMOUS_ORG_ROLE: Viewer                                                                                                                                                                                                                                                                                                                                                                                                                                    plugins:                                                                                                                                                                                                                                 - grafana-worldmap-panel                                                                                                                                                                                                               - grafana-piechart-panel    # grafana service 暴露配置service:                                                                                                                                                                                                                                 portName: http-web                                                                                                                                                                                                                     port: 30080                                                                                                                                                                                                                            externalIPs: ["10.1.2.15"]# 监控数据保留15天prometheus: retention: 15d  
# prometheus 部署节点使用node亲和性标签匹配affinity:                                                                                                                                                                                                                              nodeAffinity:                                                                                                                                                                                                                         requiredDuringSchedulingIgnoredDuringExecution:                                                                                                                                                                                     nodeSelectorTerms:                                                                                                                                                                                                                - matchExpressions:                                                                                                                                                                                                               - key: prometheus                                                                                                                                                                                                               operator: In                                                                                                                                                                                                                  values:                                                                                                                                                                                                                       - deploy  
# prometheus 设置内存、cpu的reqeust和limit     resources:                                                                                                                                                                                                                             requests:                                                                                                                                                                                                                             memory: 10Gi                                                                                                                                                                                                                        cpu: 10                                                                                                                                                                                                                             limits:                                                                                                                                                                                                                               memory: 50Gi                                                                                                                                                                                                                        cpu: 10 # prometheus 使用外部ip暴露service:externalIPs: ["10.1.2.15"]  # prometheus数据持久化存储使用local-storage      storageSpec:                                                                                                                                                                                                                           ## Using PersistentVolumeClaim                                                                                                                                                                                                         #                                                                                                                                                                                                                              volumeClaimTemplate:                                                                                                                                                                                                                 spec:                                                                                                                                                                                                                              storageClassName: local-storage                                                                                                                                                                                                  accessModes: ["ReadWriteOnce"]                                                                                                                                                                                                   resources:                                                                                                                                                                                                                       requests:                                                                                                                                                                                                                      storage: 200Gi  # 增加gpu-metrics     additionalScrapeConfigs:                                                                                                                                                                                                               - job_name: gpu-metrics                                                                                                                                                                                                              scrape_interval: 1s                                                                                                                                                                                                                metrics_path: /metrics                                                                                                                                                                                                             scheme: http                                                                                                                                                                                                                       kubernetes_sd_configs:                                                                                                                                                                                                             - role: endpoints                                                                                                                                                                                                                namespaces:                                                                                                                                                                                                                    names:                                                                                                                                                                                                                       - nvidia-device-plugin                                                                                                                                                                                                     relabel_configs:                                                                                                                                                                                                                   - source_labels: [__meta_kubernetes_pod_node_name]                                                                                                                                                                               action: replace                                                                                                                                                                                                                target_label: kubernetes_node 

全量的values.yaml已经上传到csdn不需要积分就可以下载了

https://download.csdn.net/download/weixin_43798031/88046678icon-default.png?t=N658https://download.csdn.net/download/weixin_43798031/88046678

3. 部署prometheus-stack

helm upgrade -i kube-prometheus-stack -f values.yaml . -n kube-prometheus

4. 查看部署情况

root@master01:/home/sunwenbo/kube-prometheus-stack# kubectl  get deployments.apps  -n kube-prometheus                                                                                                                                      
NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE                                                                                                                                                            
kube-prometheus-stack-grafana              1/1     1            1           123m                                                                                                                                                           
kube-prometheus-stack-kube-state-metrics   1/1     1            1           123m                                                                                                                                                           
kube-prometheus-stack-operator             1/1     1            1           123m                                                                                                                                                           
root@master01:/home/sunwenbo/kube-prometheus-stack# kubectl  get daemonsets.apps -n kube-prometheus                                                                                                                                        
NAME                                             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE                                                                                                                  
kube-prometheus-stack-prometheus-node-exporter   148       148       148     148          148                   123m                                                                                                                 
root@master01:/home/sunwenbo/kube-prometheus-stack# kubectl  get statefulsets.apps  -n kube-prometheus                                                                                                                                     
NAME                                              READY   AGE                                                                                                                                                                              
alertmanager-kube-prometheus-stack-alertmanager   1/1     123m                                                                                                                                                                             
prometheus-kube-prometheus-stack-prometheus       1/1     123m   

service

root@master01:/home/sunwenbo/kube-prometheus-stack# kubectl  get svc -n kube-prometheus                                                                                                                                                    
NAME                                             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE                                                                                                               
alertmanager-operated                            ClusterIP   None                     9093/TCP,9094/TCP,9094/UDP   123m                                                                                                              
kube-prometheus-stack-alertmanager               ClusterIP   10.111.20.147            9093/TCP                     123m                                                                                                              
kube-prometheus-stack-grafana                    ClusterIP   10.104.171.223   10.1.2.15     30080/TCP                    123m                                                                                                              
kube-prometheus-stack-kube-state-metrics         ClusterIP   10.107.110.116           8080/TCP                     123m                                                                                                              
kube-prometheus-stack-operator                   ClusterIP   10.107.180.72            443/TCP                      123m                                                                                                              
kube-prometheus-stack-prometheus                 ClusterIP   10.102.115.147   10.1.2.15     9090/TCP                     123m                                                                                                              
kube-prometheus-stack-prometheus-export          ClusterIP   10.109.169.13    10.1.2.15     30081/TCP                    3d5h                                                                                                              
kube-prometheus-stack-prometheus-node-exporter   ClusterIP   10.101.152.90            9100/TCP                     123m                                                                                                              
prometheus-operated                              ClusterIP   None                     9090/TCP                     123m 

pv、pvc

root@master01:/home/sunwenbo/kube-prometheus-stack# kubectl  get pv | grep prometh                                                                                                                                                         
prometheus-pv                              200Gi      RWO            Retain           Bound    kube-prometheus/prometheus-kube-prometheus-stack-prometheus-db-prometheus-kube-prometheus-stack-prometheus-0           local-storage        127m                                                                                                                                                                                                                                   
pvc-43823533-9a35-4ace-b0a3-5853e3b4099e   4Gi        RWO            Retain           Bound    kube-prometheus/alertmanager-kube-prometheus-stack-alertmanager-db-alertmanager-kube-prometheus-stack-alertmanager-0   nfs-retain           60d                                                                                                                                                                                                                                    
pvc-cef3dd98-7090-47ac-8cec-c52c78e9237f   2Gi        RWO            Retain           Bound    kube-prometheus/kube-prometheus-stack-grafana                                                                          nfs-retain           129m root@master01:/home/sunwenbo/kube-prometheus-stack# kubectl  get pvc -n kube-prometheus                                                                                                                                                    
NAME                                                                                                   STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS    AGE                                   
alertmanager-kube-prometheus-stack-alertmanager-db-alertmanager-kube-prometheus-stack-alertmanager-0   Bound    pvc-43823533-9a35-4ace-b0a3-5853e3b4099e   4Gi        RWO            nfs-retain      60d                                   
kube-prometheus-stack-grafana                                                                          Bound    pvc-cef3dd98-7090-47ac-8cec-c52c78e9237f   2Gi        RWO            nfs-retain      127m                                  
prometheus-kube-prometheus-stack-prometheus-db-prometheus-kube-prometheus-stack-prometheus-0           Bound    prometheus-pv                              200Gi      RWO            local-storage   127m                                  

解释一下:使用volumeClaimTemplate 会动态的给我们创建出来一个pvc,由于之前已经创建pv了,这个pvc会自动和pv进行绑定

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

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

相关文章

Baichuan-13B:130亿参数的开源语言模型,引领中文和英文benchmark

Baichuan-13B: 一个强大的开源大规模语言模型 标题:Baichuan-13B:130亿参数的开源语言模型,引领中文和英文benchmark Baichuan-13B是由百川智能开发的一个开源大规模语言模型项目,包含了130亿参数。该模型在中文和英文的权威ben…

mybatis学习笔记之核心配置文件详解

文章目录 核心配置文件内容多环境事务管理器对数据源的剖析JNDIPOOLED和UNPOOLED的区别配置具体的数据库连接池参数 propertiesproperties和mapper标签的url属性 核心配置文件内容 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configura…

【广州华锐互动】VR地铁消防逃生路线演练系统

随着城市轨道交通的不断发展&#xff0c;事故应急演练的重要性也越来越受到重视。而VR技术的应用&#xff0c;为地铁消防逃生路线演练带来了许多亮点&#xff0c;包括以下几个方面&#xff1a; 首先&#xff0c;VR技术可以提供高度真实的模拟场景。在传统的事故应急演练中&…

常见的计算机网络协议

1 协议分类 1.1 网络层协议 IP 、 ICMP、IGMP、IS-IS、IPsec、 ARP、 RARP、RIP、VRRP等 1.2 传输层协议 TCP、 UDP、TLS、SSL、OSPF 等 1.3 应用层协议 DHCP 、DNS 、FTP、 HTTP、POP3、 SNMP 、SSH 、TELNET 、 BGP 、GLBP、HSRP等 2 协议详解 2.1 IP协议 IP指网际互…

vue监听dom元素的宽高变化和自定义指令监听dom元素的宽高变化

vue监听dom元素的宽高变化和自定义指令监听dom元素的宽高变化 1.监听dom元素的宽高变化 你可以使用Vue的指令v-on和v-bind来动态监听div的宽度。 首先&#xff0c;在Vue实例中声明一个data属性&#xff0c;用来存储div的宽度值。例如&#xff1a; data() {return {divWidth…

ipad可以使用其他品牌的手写笔吗?平价ipad手写笔推荐

我是一个拥有多年数码经验的爱好者&#xff0c;我知道一些关于电容笔的知识。我认为&#xff0c;苹果原装的电容笔与普通的电容笔最大的不同之处&#xff0c;就是其所带来的压感不同。由于“重力压感”的特殊性&#xff0c;我们能很快地把色彩填充到画面中。除此之外&#xff0…

亿发软件:数字化大中型制造企业生产管理应用,实现智慧工厂信息化

随着信息技术与制造业的深度协调&#xff0c;作为企业发展的趋势&#xff0c;大中型制造企业需要拥抱信息化建设。通过运用信息技术和数字化运营&#xff0c;大中型制造企业的生产、设计、经营、管理、后续服务等都实现自动化、智能化。大中型制造企业信息化建设解决方案&#…

uniapp中axios封装和环境配置

axios版本 最好锁定版本&#xff0c;避免bug axios-miniprogram-adapter这个依赖主要是适配小程序网络请求的适配器&#xff0c;为了解决uniapp 适配axios请求&#xff0c;避免报adapter is not a function错误 cnpm i axios0.26.0 axios-miniprogram-adapter 配置adapter函…

Cadence PCB 仿真Model Integrity专题

&#x1f3e1;《总目录》   &#x1f3e1;《宝典目录》 目录 1&#xff0c;内容概述2&#xff0c;内容目录 1&#xff0c;内容概述 本专题详细介绍Cadence的仿真建模工具 Model Integrity。 2&#xff0c;内容目录 Cadence PCB仿真 Model Integrity 功能详述与启动方法图文教…

bean的生命周期

生命周期&#xff1a;从生到死的过程。那么对于bean来说就是从创建到销毁的过程。 普通的Java对象的创建由我们new创建&#xff0c;然后在不用的时候&#xff0c;java回收机制会自动回收。那么bean呢&#xff1f; bean是spring中的对象&#xff0c;和普通对象不一样的就是bea…

基于Python+ResNet50算法实现一个图像识别系统案

题解 | #完全平方数的草料# class Solution {public: /** * 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可 * 新东方南昌学校招聘编程竞赛教练 工作职责&#xff1a;1、教学工作&#xff1a;为学员提供编程Python&#xf…

springboot-防止sql注入,xss攻击,cros恶意访问

1.sql注入 sql注入: 把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串&#xff0c;最终达到欺骗服务器执行恶意的SQL命令 解决方法&#xff1a; 1)无论是直接使用数据库还是使用如mybatis组件&#xff0c;使用sql的预编译&#xff0c;不要用拼接字符串。 2)后…

Unity游戏源码分享-Unity手游火柴忍者游戏StickmanDojo

Unity游戏源码分享-Unity手游火柴忍者游戏StickmanDojo 项目地址&#xff1a;https://download.csdn.net/download/Highning0007/88050234

蒲公英打包环境搭建碰到问题

一&#xff1a;证书那边选择手动&#xff0c;不要自动&#xff0c;——》debug配置dev证书&#xff0c;release配置ad-hoc证书 二&#xff1a;证书有时候不生效&#xff0c;删除重新下载。~/Library/MobileDevice/Provisioning Profiles 三&#xff1a;更新测试手机时&#…

Mysql索引与事务

目录 一、索引 1、概念 2、作用 3、副作用 二、事务 1、概念 2、ACID特点 原子性 一致性 隔离性 持久性 一、索引 1、概念 索引是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址&#xff08;类似于C语言的链表通过指针…

OpenCv色彩空间

目录 一、RGB 二、图像处理入门 三、色彩空间的转换 一、RGB 在表示图像时&#xff0c;有多种不同的颜色模型&#xff0c;但最常见的是红、绿、蓝(RGB) 模型RGB 模型是一种加法颜色模型&#xff0c;其中原色 (在RGB模型中&#xff0c;原色是红色 R、绿色 G 和蓝色 B)混合在…

设计模式之享元模式

写在前面 本文看下一种结构型设计模式&#xff0c;享元模式。 1&#xff1a;介绍 1.1&#xff1a;什么时候使用享元模式 当程序需要大量的重复对象&#xff0c;并且这些大量的重复对象只有部分属性不相同&#xff0c;其他都是相同的时候&#xff0c;就可以考虑使用享元设计…

PMP-项目风险管理学习要点

文章目录 前言PMP-项目风险管理学习要点1. 风险的含义2. 风险敞口3. 单个项目风险 VS 整个项目风险4. 变异性风险5. 模糊性风险6. 项目风险的分类6.1. 已知风险与未知风险6.2. 内部风险与外部风险6.3. 商业风险与可保险风险7. 影响相关方的风险态度的因素8. 识别风险的几种方式…

【天工Godwork精品教程】天工3.1.7安装教程(附Godwork完整版下载地址)

本文讲解天工3.1.7安装过程(附Godwork完整版网盘下载地址)。 文章目录 一、天工3.1.7安装教程1. 安装GodWork-AT 3.1.72. 安装GodWork-AT 3.1.7补丁3. 安装GodWork-EOS-Setup-2017B-12314. 安装GodWork-EOS补丁5. 运行godwokr软件6. 生成ZC码7. 输入ZC码8. eos插件调用二、天…

Linux·从 URL 输入到页面展现到底发生什么?

打开浏览器从输入网址到网页呈现在大家面前&#xff0c;背后到底发生了什么&#xff1f;经历怎么样的一个过程&#xff1f;先给大家来张总体流程图&#xff0c;具体步骤请看下文分解&#xff01; 总体来说分为以下几个过程: DNS 解析:将域名解析成 IP 地址TCP 连接&#xff1a…