概述

GitHub地址:https://github.com/prometheus-operator/prometheus-operator

Helm仓库:https://prometheus-community.github.io/helm-charts

安装prometheus-operator前置条件:

确保你有一个k8s集群

安装k8s集群可参考:使用sealos快速搭建kubernetes集群!!!

确保你安装了Helm

安装Helm可参考:安装Helm

实操

创建SC

我这里以NFS作为存储

配置NFS参考这篇文章:https://www.cnblogs.com/huangSir-devops/p/18802386

创建SC参考:https://www.cnblogs.com/huangSir-devops/p/18871414#_label4_2

创建grafana的存储

# 配置NFS
[root@master01 ~/volumes]# mkdir -p /data/nfs/grafana
[root@master01 ~/volumes]# echo '/data/nfs/grafana 10.0.0.0/24(rw,sync,no_root_squash,no_subtree_check)' >> /etc/exports
[root@master ~/volumes]# exportfs -ra # 定义资源清单
[root@master01 ~/volumes]# cat grafana-sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: grafana-sc # StorageClass名称,PVC通过该名称引用此存储类
provisioner: nfs.csi.k8s.io # 指定使用NFS CSI驱动作为存储供给器
parameters: # 传递给NFS CSI驱动的参数
server: 10.0.0.30 # NFS服务器的IP地址
share: /data/nfs/grafana # NFS服务器上的共享目录路径
# csi.storage.k8s.io/provisioner-secret is only needed for providing mountOptions in DeleteVolume
# csi.storage.k8s.io/provisioner-secret-name: "mount-options"
# csi.storage.k8s.io/provisioner-secret-namespace: "default"
reclaimPolicy: Retain # 回收策略:当PVC被删除时,PV保留不删除
volumeBindingMode: Immediate # 卷绑定模式:立即绑定,不需要等待Pod调度
allowVolumeExpansion: true # 允许卷扩容:支持通过修改PVC请求更大容量 [root@master ~]# kubectl apply -f grafana-sc.yaml [root@master ~]# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
grafana-sc nfs.csi.k8s.io Retain Immediate true 3m44s

创建Prometheus的存储

# 配置NFS
[root@master01 ~/volumes]# mkdir -p /data/nfs/prometheus
[root@master01 ~/volumes]# echo '/data/nfs/prometheus 10.0.0.0/24(rw,sync,no_root_squash,no_subtree_check)' >> /etc/exports
[root@master ~/volumes]# exportfs -ra [root@master01 ~/volumes]# cat prometheus-sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: prometheus-sc # StorageClass名称,PVC通过该名称引用此存储类
provisioner: nfs.csi.k8s.io # 指定使用NFS CSI驱动作为存储供给器
parameters: # 传递给NFS CSI驱动的参数
server: 10.0.0.30 # NFS服务器的IP地址
share: /data/nfs/prometheus # NFS服务器上的共享目录路径
# csi.storage.k8s.io/provisioner-secret is only needed for providing mountOptions in DeleteVolume
# csi.storage.k8s.io/provisioner-secret-name: "mount-options"
# csi.storage.k8s.io/provisioner-secret-namespace: "default"
reclaimPolicy: Retain # 回收策略:当PVC被删除时,PV保留不删除
volumeBindingMode: Immediate # 卷绑定模式:立即绑定,不需要等待Pod调度
allowVolumeExpansion: true # 允许卷扩容:支持通过修改PVC请求更大容量 [root@master ~/volumes]# kubectl apply -f prometheus-sc.yaml
storageclass.storage.k8s.io/prometheus-sc created
[root@master ~/volumes]# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
grafana-sc nfs.csi.k8s.io Retain Immediate true 3h40m
nfs-csi nfs.csi.k8s.io Delete Immediate true 175m
prometheus-sc nfs.csi.k8s.io Retain Immediate true 4s

配置operator

添加仓库

# 添加社区版仓库
[root@master ~]# helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
[root@master ~]# helm repo update
[root@master ~]# helm pull helm pull prometheus/kube-prometheus-stack --version 73.2.0 # 如果上面因为网络报错,可使用下面的
[root@master ~]# wget https://github.com/prometheus-community/helm-charts/releases/download/kube-prometheus-stack-73.2.0/kube-prometheus-stack-73.2.0.tgz

解压

[root@master ~]# tar -xvf kube-prometheus-stack-73.2.0.tgz
[root@master ~]# ll kube-prometheus-stack
total 228
drwxr-xr-x 4 root root 4096 Jun 7 15:27 ./
drwx------ 31 root root 4096 Jun 7 15:27 ../
-rw-r--r-- 1 root root 458 Jun 6 01:22 .helmignore
-rw-r--r-- 1 root root 615 Jun 6 01:22 Chart.lock
-rw-r--r-- 1 root root 2571 Jun 6 01:22 Chart.yaml
-rw-r--r-- 1 root root 19869 Jun 6 01:22 README.md
drwxr-xr-x 7 root root 4096 Jun 7 15:27 charts/
drwxr-xr-x 8 root root 4096 Jun 7 15:27 templates/
-rw-r--r-- 1 root root 182959 Jun 6 01:22 values.yaml

修改镜像源,防止镜像拉取失败

[root@master ~/kube-prometheus-stack]# sed -i s#registry.k8s.io#k8s.m.daocloud.io#g values.yaml
[root@master ~/kube-prometheus-stack]# sed -i s#quay.io#quay.m.daocloud.io#g values.yaml
[root@master ~/kube-prometheus-stack]# sed -i s#docker.io#docker.m.daocloud.io#g values.yaml
[root@master ~/kube-prometheus-stack]# sed -i s#registry.k8s.io#k8s.m.daocloud.io#g charts/kube-state-metrics/values.yaml

配置Grafana

[root@master ~]# vim ~/kube-prometheus-stack/charts/grafana/values.yaml
# 修改service,改成NodePort访问
231 service:
232 enabled: true
233 type: NodePort
234 nodePort: 30030 # 配置存储
417 persistence:
418 type: pvc
419 enabled: true
# sc的名称,和上面保持一致
420 storageClassName: grafana-sc
421 ## (Optional) Use this to bind the claim to an existing PersistentVolume (PV) by name.
422 volumeName: "" # 修改用户名密码 (可选)
[root@master ~]# vim ~/kube-prometheus-stack/values.yaml
1287 adminUser: admin
1288 adminPassword: prom-operator

配置Prometheus

[root@master ~]# vim ~/kube-prometheus-stack/values.yaml
3371 prometheus:
3372 enabled: true
# 修改service类型NodePort
3564 type: NodePort
# 端口可选配置
3551 nodePort: 30090
# 存储配置
4299 storageSpec:
4300 ## Using PersistentVolumeClaim
4301 ##
4302 volumeClaimTemplate:
4303 spec:
4304 storageClassName: prometheus-sc
4305 accessModes: ["ReadWriteOnce"]
4306 resources:
4307 requests:
4308 storage: 10Gi

创建Realsese

[root@master ~]# helm install prometheus kube-prometheus-stack --debug
# 出现以下内容即代表成功
NOTES:
kube-prometheus-stack has been installed. Check its status by running:
kubectl --namespace default get pods -l "release=prometheus" Get Grafana 'admin' user password by running: kubectl --namespace default get secrets prometheus-grafana -o jsonpath="{.data.admin-password}" | base64 -d ; echo Access Grafana local instance: export POD_NAME=$(kubectl --namespace default get pod -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=prometheus" -oname)
kubectl --namespace default port-forward $POD_NAME 3000 Visit https://github.com/prometheus-operator/kube-prometheus for instructions on how to create & configure Alertmanager and Prometheus instances using the Operator.

查看创建的资源

# 查看Pod
[root@master ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
alertmanager-prometheus-kube-prometheus-alertmanager-0 2/2 Running 0 70s
prometheus-grafana-55cbbf54b7-lmhnd 3/3 Running 0 70s
prometheus-kube-prometheus-operator-847fd659bc-scp4w 1/1 Running 0 70s
prometheus-kube-state-metrics-5fb66759db-nb242 1/1 Running 0 70s
prometheus-prometheus-kube-prometheus-prometheus-0 2/2 Running 0 70s
prometheus-prometheus-node-exporter-89xt7 1/1 Running 0 70s
prometheus-prometheus-node-exporter-cn8s4 1/1 Running 0 70s
prometheus-prometheus-node-exporter-llqgx 1/1 Running 0 70s # 查看svc
[root@master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 5m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5m
prometheus-grafana NodePort 10.96.1.173 <none> 80:30030/TCP 5m
prometheus-kube-prometheus-alertmanager ClusterIP 10.96.3.151 <none> 9093/TCP,8080/TCP 5m
prometheus-kube-prometheus-operator ClusterIP 10.96.2.62 <none> 443/TCP 5m
prometheus-kube-prometheus-prometheus NodePort 10.96.0.114 <none> 9090:30090/TCP,8080:31659/TCP 5m
prometheus-kube-state-metrics ClusterIP 10.96.1.88 <none> 8080/TCP 5m
prometheus-operated ClusterIP None <none> 9090/TCP 5m
prometheus-prometheus-node-exporter ClusterIP 10.96.0.191 <none> 9100/TCP 5m

访问测试

访问Grafana

http://10.0.0.30:30030/

  • 用户名:admin
  • 密码:prom-operator

用户名和密码是上面配置的

访问Prometheus

http://10.0.0.30:30090/targets

kube-prometheus-stack监控应用程序

kube-prometheus-stack通过PodMonitorServiceMonitor对象来监视示例应用程序的目标

参考这篇文章:https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/developer/getting-started.md

架构图

通过ServiceMonitor监控应用程序

示例:

省略,这块有时间补齐,可以先看官方文档

通过PodMonitor监控应用程序

示例:

省略,这块有时间补齐,可以先看官方文档

基于Helm部署kube-prometheus-stack的更多相关文章

  1. 基于 Helm 快速部署 Wordpress

    Helm 是 Kubernetes 中的一个开源软件包管理工具,Rainbond 从 5.3.1 版本开始支持部署 Helm 应用.实现 Helm 应用的便捷部署,访问控制.使 Rainbond 用户 ...

  2. 基于kubeasz部署高可用k8s集群

    在部署高可用k8s之前,我们先来说一说单master架构和多master架构,以及多master架构中各组件工作逻辑 k8s单master架构 提示:这种单master节点的架构,通常只用于测试环境, ...

  3. 用Helm部署Kubernetes应用,支持多环境部署与版本回滚

    1 前言 Helm是优秀的基于Kubernetes的包管理器.利用Helm,可以快速安装常用的Kubernetes应用,可以针对同一个应用快速部署多套环境,还可以实现运维人员与开发人员的职责分离.现在 ...

  4. 基于Helm和Operator的K8S应用管理

    https://blog.csdn.net/RancherLabs/article/details/79483013 大家好,今天我们分享的内容是基于Helm和Operator的K8S应用管理. 我们 ...

  5. 十九,基于helm搭建EFK日志收集系统

    目录 EFK日志系统 一,EFK日志系统简介: 二,EFK系统部署 1,EFK系统部署方式 2,基于Helm方式部署EFK EFK日志系统 一,EFK日志系统简介: 关于系统日志收集处理方案,其实有很 ...

  6. 053.集群管理-Helm部署及使用

    一 Helm概述 1.1 Helm介绍 Helm 是 Kubernetes 的软件包管理工具.包管理器类似 Ubuntu 中使用的apt.Centos中使用的yum 或者Python中的 pip 一样 ...

  7. [系统集成] 基于Kubernetes 部署 jenkins 并动态分配资源

    基于kubernetes 部署 jenkins master 比较简单,难点是为 jenkins 动态分配资源.基于kubernetes 为 jenkins 动态分配资源需要实现下述功能: 资源分配: ...

  8. Mininet实验 OpenFlow1.3协议基于Mininet部署与验证

    参照:OpenFlow1.3协议基于Mininet部署与验证 安装过程,参考原文. 实验 使用ifconfig查看本机IP地址:192.168.1.101 进入OpenDayLight界面,cd到bi ...

  9. 一些基本的操作,编译,构建,单元测试,安装,网站生成和基于Maven部署项目。

    一些基本的操作,编译,构建,单元测试,安装,网站生成和基于Maven部署项目. 使用Maven构建项目“mvn package” 来构建项目 使用Maven清理项目“mvn clean” 来清理项目 ...

  10. 基于Docker部署nodejs应用

    基于Docker部署nodejs应用 背景 公司基于Vue.js的项目最近需要部署到云端,因此需要先行在公司内部Docker环境下验证相关技术,因而有本文之前提. 本文展示在Docker容器中,应用部 ...

随机推荐

  1. 漏洞预警 | 明源地产ERP SQL注入漏洞

    0x00 漏洞编号 暂无 0x01 危险等级 高危 0x02 漏洞概述 明源地产ERP是一款专为房地产行业设计的企业资源计划管理系统,致力于为房地产开发企业提供全面的管理解决方案. 0x03 漏洞详情 ...

  2. 代码随想录第八天| Leecode 344. 反转字符串、Leecode 541 反转字符串 II

    Leecode 344 反转字符串 题目链接:https://leetcode.cn/problems/reverse-string/description/ 题目描述 编写一个函数,其作用是将输入的 ...

  3. 【MOOC】华中科技大学操作系统慕课答案-期末测试题

    文章目录 单选题 填空题 判断题 主观题 单选题 1 ‎当操作系统处理缺页中断的时候,CPU处在 . A. 用户态 √B. 核态 C. 不确定的状态 D. 空闲状态 2 ‌操作系统的用户界面可以分为两 ...

  4. Flex布局-margin 妙用技巧

    在 flex 布局 中, 通过对子项设置 margin-auto; 的方式去吃掉剩余空间, 这种小技巧在很多时候能极大简化我们的布局哦. 单元素水平垂直居中 如果父容器是 flex, 要实现元素水平垂 ...

  5. NOIP模拟赛(10.17):语言,色球,斐波,偶数

    语言 题面: 牛妹正在学习一种新的语言,在这种语言里,单词只有形容词(\(\texttt{A}\)),名词(\(\texttt{N}\))和动词(\(\texttt{V}\))三种词性.但是一个单词可 ...

  6. React-Native开发鸿蒙NEXT-一次审核闪退的排查思路

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  7. HarmonyOS运动开发:精准估算室内运动的距离、速度与步幅

    前言 在室内运动场景中,由于缺乏 GPS 信号,传统的基于卫星定位的运动数据追踪方法无法使用.因此,如何准确估算室内运动的距离.速度和步幅,成为了运动应用开发中的一个重要挑战.本文将结合鸿蒙(Harm ...

  8. CentOS-7 通过 NFS 实现服务器之间的文件(目录)共享

    1.概述 NFS(Network File System):是在 UNIX(Linux)系统中最流行的网络文件系统,其功能是通过网络让不同的机器(或操作系统)可以共享彼此的文件或目录. 2.相关依赖组 ...

  9. 《经验分享——在CSDN编写文章时如何实现空格、空行》

    经验分享--在CSDN编写文章时如何实现空格.空行 一.富文本编辑器: 1.空格: 按空格键 2.空行 先按Tab,再按回车键 二.Markdown编辑器: 1. 空格: 按空格键 2.空行: 输入& ...

  10. 阿里微服务解决方案-Alibaba Cloud之集成Nacos(服务注册与发现)(三)

    一.集成 Nacos(服务注册与发现) 1.1 下载 Nacos Nacos下载地址 1.2 下载后解压到本地 1.3 启动 Nacos 启动成功界面 输入 http://127.0.0.1:8848 ...