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

news2024/12/28 8:21:56

目录

背景:

环境准备:

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 存储空间为4G
  alertmanager:
    alertmanagerSpec:
      storage:                                                                                                                                                                                                                               
        volumeClaimTemplate:                                                                                                                                                                                                                 
          spec:                                                                                                                                                                                                                              
            storageClassName: nfs-retain                                                                                                                                                                                                     
            accessModes: ["ReadWriteOnce"]                                                                                                                                                                                                   
            resources:                                                                                                                                                                                                                       
              requests:                                                                                                                                                                                                                      
                storage: 4Gi 
 # grafana 持久化存储配置及环境变量、plugin添加
 grafana:                                                                                                                                                                                                                                   
  enabled: true                                                                                                                                                                                                                            
  namespaceOverride: ""                                                                                                                                                                                                                                                                                                                                                                                                                                                       
  forceDeployDatasources: false
  persistence:                                                                                                                                                                                                                             
    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.coloradmin.cn/o/754395.html

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

相关文章

运行软件plotsr时报错:“ImportError: Incomplete genomic information”

为了对 syri.out (assembly的变异检测结果)进行可视化处理,本人选择了plotsr软件对其基因组重排现象进行可视化: (base) [hgzhonghead01 08.assembly_calling]$ plotsr --sr syri.out --genomes ../data/Sc_R64.fasta --genomes …

什么是搜索引擎?2023 年搜索引擎如何运作?

目录 什么是搜索引擎?搜索引擎的原理什么是搜索引擎爬取?什么是搜索引擎索引?什么是搜索引擎检索?什么是搜索引擎排序? 搜索引擎的目的是什么?搜索引擎如何赚钱?搜索引擎如何建立索引?网页抓取文本处理建…

全网最细,接口自动化测试-数据库操作与日志模块,一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 进行接口测试时&a…

Unity Shader - SV_POSITION 和 TEXCOORD[N] 的varying 在 fragment shader 中输出的区别

起因 因另一个TA同学问了一个问题 我抱着怀疑的心态,测试了一下 发现 varying 中的 sv_position 和 texcoord 的值再 fragment shader 阶段还真的不一样 而且 sv_position 还不是简单的 clipPos/clipPos.w 的操作 因此我自己做了一个试验: 结果还是不一…

Ext4文件系统介绍 - 实战篇

本文主要通过dd,hexdump和dumpe2fs工具分析ext4的磁盘二进制数据,加深对ext4文件系统的印象,要想理解本建议先阅读下Ext4文件系统介绍 - 理论篇_nginux的博客-CSDN博客。 磁盘超级块数据分析 根据理论篇我们知道ext4 layout中前1024字节是x…

Flask 使用Flask的session来保存用户登录状态例子

使用Python的Flask库实现的登录接口、查询金额接口和注销接口的示例。 当用户发送POST请求到/login接口时,代码会获取请求中的用户名和密码。如果用户名和密码匹配(在示例中是admin和admin123),则会将用户名保存在session中&…

Scratch 放置建筑

Scratch 放置建筑 本程序的功能是放置和删除建筑。点击鼠标时建筑会复制并从初始位置向鼠标指针移动,每次复制都更换外观,距离鼠标指针较近时停止移动并调至垂直方向,延时0.5秒。延时过后鼠标指针接触到建筑每隔0.1秒进行判断,3次…

HOT62-N皇后

leetcode原题链接:N皇后 题目描述 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返…

灵活用工服务平台是怎样的?

灵活用工服务平台是为企业提供灵活用工人员招募、管理和支付等服务的平台。这些平台通常会建立一套在线系统,帮助企业发布岗位需求,筛选和招募合适的灵活用工人员,管理他们的工作时间和报酬。 企业选择做灵活用工的原因有这些: 1…

虚幻插件Landscaping Landscaping Mapbox

虚幻插件Landscaping & Landscaping Mapbox Landscaping offers an easy way to import GIS data as single Landscape or World Composition (UE4) or World Partition (UE5) or Procedural/Static Mesh. 提供了一种非常简单的方式来导入GIS数据,可以生成Lands…

力扣C++|一题多解之数学题专场(1)

目录 7. 整数反转 9. 回文数 12. 整数转罗马数字 13. 罗马数字转整数 29. 两数相除 7. 整数反转 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 -如果反转后整数超过 32 位的有符号整数的范围 [2^31, 2^31 -1] ,就返回 0。…

springboot项目中添加自定义日志

文章目录 当前项目使用的springboot为 2.2.2.release。低版本的话logging下的子标签有可能不是这样的。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.2.2.RELE…

vue 项目优化

去除冗余的css 消除框架中未使用的CSS,初步达到按需引入的效果 使用背景&#xff1a;vue2.x, webpack3.x 使用插件&#xff1a;purifycss-webpack 安装&#xff1a; npm i purifycss-webpack purify-css glob-all -D安装后各个插件的版本&#xff1a; “glob-all”: “^3.3.…

基于linux下的高并发服务器开发(第一章)- GDB调试(3)1.15

04 / GDB命令&#xff1a;断点操作 其中num代表断点编号&#xff0c;Type&#xff08;类型&#xff09;为断点&#xff08;breakpoint&#xff09;&#xff0c;Disp为断点状态&#xff0c;Enb是yes代表为有效断点&#xff0c;adress为断点地址&#xff0c;What说明断点的在那个…

APACHE KAFKA本机Hello World教程

目标 最近想要简单了解一下Apache Kafka&#xff0c;故需要在本机简单打个Kafka弄一弄Hello World级别的步骤。 高手Kafka大佬们&#xff0c;请忽略这里的内容。 步骤 Apacha Kafka要求按照Javak8以上版本的环境。从官网下载kafka并解压。 启动 # 生产kafka集群随机ID KA…

游戏AI的崛起:腾讯、网易等企业引领行业变革

随着游戏AI技术的迅猛发展&#xff0c;游戏行业正在经历一场前所未有的变革。在这个数字化时代&#xff0c;腾讯、网易等行业领先企业正以惊人的步伐在游戏AI领域取得重要进展。他们已经进入了游戏AI的2.0阶段&#xff0c;实现了内容多元化和行为智能化。尤其引人瞩目的是&…

SOLIDWORKS PDM—文件类别的限定

SOLIDWORKS产品数据管理 (PDM) 解决方案可帮助您控制设计数据&#xff0c;并且从本质上改进您的团队就产品开发进行管理和协作的方式。使用 SOLIDWORKS PDM Professional&#xff0c;您的团队能够&#xff1a;1. 安全地存储和索引设计数据以实现快速检索&#xff1b;2. 打消关于…

【GUI】基于开关李雅普诺夫函数的非线性系统稳定(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

superset安装

1、拖动安装包 sh Miniconda3-latest-Linux-x86_64.sh安装路径&#xff1a; /usr/local/miniconda3 2、配置环境变量 在/etc/profile中添加两句 export CONDA_HOME/usr/local/miniconda3 export PATH$PATH:$CONDA_HOME/bin重新加载环境变量 source /etc/profile3、取消激活…

javascript循环数组有什么方法

javascript循环数组的方法 1、循环遍历数组 问题&#xff1a;想要很容易地访问数组的所有元素。 for循环可以用来访问数组的每一个元素。数组从0开始&#xff0c;而且数组属性length用来设定循环结束。 2、按顺序存储和访问值 问题&#xff1a;想要以这样一种方式来存储值&a…