(k8s)Kubernetes部署Promehteus

news2024/9/19 14:07:32

转载:Kubernetes(k8s)部署Promehteus

 

一、概述

在1.8版本以后heapster由metrics-server替代;从k8s的v1.11版本开始已经全面转向以Prometheus为核心的新监控体系架构;kube-prometheus 中包含了 prometheus 监控所用到的所有组件,当然也包含 prometheus-operator。

Helm中心仓库的PrometheusOperator Chart,在2020年9月已经不维护了,新的Chart在Prometheus Community的Repo中,叫 kube-prometheus-stack,使用时需要先添加该Repo。

heapster-》metrics-server-》prometheus-operator -》kube-prometheus-》kube-prometheus-stack

  • prometheus-operator GitHub地址

  • kube-prometheus GitHub地址

  • kube-prometheus-stack GitHub地址

1)metrics-server简介

metrics-server 通过kubelet(cAdvisor)获取监控数据,主要作用是为kube-scheduler,HPA等k8s核心组件,以及kubectl top命令和Dashboard等UI组件提供数据来源。

【注意】如果要部署prometheus,就不用部署了metrics-server了,否则冲突,推荐只部署prometheus,所以这里也只讲prometheus的部署。

2)Prometheus简介

Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包。从2012年开始,许多公司和组织开始使用Prometheus。

Prometheus的主要特征有:

  • 多维度数据模型

  • 灵活的查询语言

  • 不依赖分布式存储,单个服务器节点是自主的

  • 以HTTP方式,通过pull模型拉去时间序列数据

  • 也通过中间网关支持push模型

  • 通过服务发现或者静态配置,来发现目标服务对象

  • 支持多种多样的图表和界面展示,grafana也支持它

组件
Prometheus生态包括了很多组件,它们中的一些是可选的:

  • 主服务Prometheus Server负责抓取和存储时间序列数据

  • 客户库负责检测应用程序代码

  • 支持短生命周期的PUSH网关

  • 基于Rails/SQL仪表盘构建器的GUI

  • 多种导出工具,可以支持Prometheus存储数据转化为HAProxy、StatsD、Graphite等工具所需要的数据存储格式

  • 警告管理器

  • 命令行查询工具

  • 其他各种支撑工具

3)Prometheus Operator

Prometheus Operator的本职就是一组用户自定义的CRD资源以及Controller的实现,Prometheus Operator负责监听这些自定义资源的变化,并且根据这些资源的定义自动化的完成如Prometheus Server自身以及配置的自动化管理工作。以下是Prometheus Operator的架构图:

4)metrics-server&Promehteus对比&特性

  • 使用metric-server收集数据给k8s集群内使用,如kubectl,hpa,scheduler等

  • 使用prometheus-operator部署prometheus,存储监控数据

  • 使用kube-state-metrics收集k8s集群内资源对象数据

  • 使用node_exporter收集集群中各节点的数据

  • 使用prometheus收集apiserver,scheduler,controller-manager,kubelet组件数据

  • 使用alertmanager实现监控报警

  • 使用grafana实现数据可视化

5)Prometheus Operator VS kube-prometheus

最开始是Heapster+cAdvisor方式监控,这是Prometheus Operator出现之前的k8s监控方案。后来出现了Prometheus Operator,但是目前Prometheus Operator已经不包含完整功能,完整的解决方案已经变为kube-prometheus。

  • Prometheus Operator 是CoreOS的一个开源项目,用来增强Prometheus在Kubernetes中的管理运维能力。利用Kubernetes的自定义资源定义 (Custom Resource Definition)的特性,实现声明式管理运维Prometheus监控告警系统。

  • kube-prometheus 为基于 Prometheus 和 Prometheus Operator 的完整集群监控堆栈提供示例配置。这包括部署多个 Prometheus 和 Alertmanager 实例、指标导出器(例如用于收集节点指标的 node_exporter)、抓取将 Prometheus 链接到各种指标端点的目标配置,以及用于通知集群中潜在问题的示例警报规则。

  • 两个项目的关系:前者只包含了Prometheus Operator,后者既包含了Operator,又包含了Prometheus相关组件的部署及常用的Prometheus自定义监控,具体包含下面的组件

    1. The Prometheus Operator:创建CRD自定义的资源对象

    2. Highly available Prometheus:创建高可用的Prometheus

    3. Highly available Alertmanager:创建高可用的告警组件

    4. Prometheus node-exporter:创建主机的监控组件

    5. Prometheus Adapter for Kubernetes Metrics APIs:创建自定义监控的指标工具(例如可以通过nginx的request来进行应用的自动伸缩)

    6. kube-state-metrics:监控k8s相关资源对象的状态指标

    7. Grafana:进行图像展示

二、安装kube-prometheus

前面我们学习了Heapster+cAdvisor方式监控,这是Prometheus Operator出现之前的k8s监控方案。后来出现了Prometheus Operator,但是目前Prometheus Operator已经不包含完整功能,完整的解决方案已经变为kube-prometheus。项目地址为:https://github.com/coreos/kube-prometheus。

1)安装git

$ yum install -y git

2)下载kube-prometheus

# 下载
$ git clone https://github.com/prometheus-operator/kube-prometheus.git
$ cd kube-prometheus/manifests
# yaml文件比较多,下面进行归档
$ mkdir -p serviceMonitor prometheus adapter node-exporter blackbox kube-state-metrics grafana alertmanager operator other/{nfs-storage,ingress}
$ mv alertmanager-* alertmanager/ && mv blackbox-exporter-* blackbox/ &&  mv grafana-* grafana/ && mv kube-state-metrics-* kube-state-metrics/ && mv node-exporter-*  node-exporter/ && mv prometheus-adapter-* adapter/ && mv prometheus-* prometheus/ && mv kubernetes-serviceMonitor* serviceMonitor/
$ 

3)修改镜像源

国外镜像源某些镜像无法拉取,我们这里修改prometheus-operator,prometheus,alertmanager,kube-state-metrics,node-exporter,prometheus-adapter的镜像源为国内镜像源。我这里使用的是中科大的镜像源。

# 查找
$ grep -rn 'quay.io' *
# 批量替换
$ sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' `grep "quay.io" -rl *`
# 再查找
$ grep -rn 'quay.io' *
$ grep -rn 'image: ' *

4)修改类型为NodePort

为了可以从外部访问prometheus,alertmanager,grafana,我们这里修改promethes,alertmanager,grafana的service类型为NodePort类型。

1、修改prometheus的service
# 设置对外访问端口:30080
$ cat prometheus-service.yaml

2、修改grafana的service
# 设置对外访问端口:30081
$ cat grafana-service.yaml

3、修改alertmanager的service
# 设置对外访问端口:30082
$ cat alertmanager-service.yaml

4、安装CRD和prometheus-operator

【温馨提示】CustomResourceDefinition:自定义资源

$ kubectl apply -f setup/

下载prometheus-operator镜像需要花费几分钟,这里等待几分钟,直到prometheus-operator变成running状态

$ kubectl get pod -n monitoring

5、安装prometheus, alertmanager, grafana, kube-state-metrics, node-exporter等资源
$ kubectl apply -f .

稍等一段时间再查看,查看命名空间monitoring下面的pod状态,直到monitoring命名空间下所有pod都变为running状态,就大功告成了。

$ kubectl get pod -n monitoring

如果上面下载镜像失败,可以使用以下地址下载,当然也可以去hub.docker.com下载。

链接:https://pan.baidu.com/s/1JUx_m-JAJ8gUeJE-Gmhzig
提取码:8888

6、工作流程

Prometheus Server定期从配置好的Exporters/Jobs中拉metrics,或者来着pushgateway发过来的metrics,或者其它的metrics,收集完后运行定义好的alert.rules,记录时间序列或者向Alertmanager推送警报。

7、组件说明
  • node_exporter:用来监控运算节点上的宿主机的资源信息,需要部署到所有运算节点

  • kube-state-metric:prometheus采集k8s资源数据的exporter,能够采集绝大多数k8s内置资源的相关数据,例如pod、deploy、service等等。同时它也提供自己的数据,主要是资源采集个数和采集发生的异常次数统计

  • blackbox_exporter:监控业务容器存活性

  • prometheus-adapter:由于本身prometheus属于第三方的 解决方案,原生的k8s系统并不能对Prometheus的自定义指标进行解析,就需要借助于k8s-prometheus-adapter将这些指标数据查询接口转换为标准的Kubernetes自定义指标。

8、验证
$ kubectl get svc -n monitoring

浏览器访问
prometheus:http://192.168.0.113:30080/

grafana:http://192.168.0.113:30081/login
默认账号/密码:admin/admin

alertmanager:http://192.168.0.113:30082/

9、Grafana添加数据源

1、修改prometheus地址

10、导入DashBoards

dashboards地址:https://grafana.com/grafana/dashboards/
1)从官网下载模板,导入模板

2)kubernetes模板导入(k8s模板)

三、使用Helm3安装kube-prometheus-stack

# 添加repo
$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
$ helm repo update
$ helm search repo prometheus-community/prometheus

1)下载kube-prometheus-stack包

# 拉包
$ helm pull prometheus-community/kube-prometheus-stack
# 解包
$ tar -xf kube-prometheus-stack-19.2.3.tgz

查看所需要的镜像,最好提前下载镜像,要不然很大可能会因为下载镜像失败而安装失败。

$ grep -A3 'image:' kube-prometheus-stack/values.yaml

这里提供镜像下载地址,当前也可以去hub.docker.com网站上下载,或者其它地方下载,如果下载不到对应的版本号,可以下载最新的,然后tag一个就行了。

链接:https://pan.baidu.com/s/1NDHckhvVgDngq98BXlHLFw
提取码:8888

2)导入镜像(所有节点都执行)

$ docker image load -i k8s.gcr.io-ingress-nginx-kube-webhook-certgen-v1.0.tar
$ docker image load -i quay.io-prometheus-alertmanager-v0.22.2.tar
$ docker image load -i quay.io-prometheus-operator-prometheus-operator-v0.50.0.tar
$ docker image load -i quay.io-prometheus-prometheus-v2.28.1.tar

3)安装kube-prometheus-stack

# 创建命名空间
$ kubectl create ns kube-prometheus-stack
$ helm install mykube-prometheus-stack kube-prometheus-stack \
  -n kube-prometheus-stack \
  --set prometheus-node-exporter.hostRootFsMount=false \
  --set prometheus.ingress.enabled=true \
  --set prometheus.ingress.hosts='{prometheus.k8s.local}' \
  --set prometheus.ingress.paths='{/}' \
  --set prometheus.ingress.pathType=Prefix \
  --set alertmanager.ingress.enabled=true \
  --set alertmanager.ingress.hosts='{alertmanager.k8s.local}' \
  --set alertmanager.ingress.paths='{/}' \
  --set alertmanager.ingress.pathType=Prefix \
  --set grafana.ingress.enabled=true \
  --set grafana.ingress.hosts='{grafana.k8s.local}' \
  --set grafana.ingress.paths='{/}' \
  --set grafana.ingress.pathType=Prefix

这里我没跑起来,机器跑的东西太多,已经不能支撑跑kube-prometheus-stack了,有兴趣的小伙伴可以试试~

发现K8s v1.21+,PSP已经被废弃,不建议使用,完全移除在v1.25版本。再不学习它就学不到了。PSP官方讲解

4)清理

$ helm uninstall mykube-prometheus-stack -n kube-prometheus-stack

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

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

相关文章

Sui Builder House锦集,原生USDC和CCTP即将登陆Sui

在9月17日新加坡Sui Builder House活动上,我们度过了充满知识分享和社区建设的精彩一天!感谢数百位参会的开发者,一同庆祝Sui社区,并了解最新的动态! 在过去的24小时内,发布了以下重要消息,不容…

C语言 | Leetcode C语言题解之第416题分割等和子集

题目&#xff1a; 题解&#xff1a; bool canPartition(int* nums, int numsSize) {if (numsSize < 2) {return false;}int sum 0, maxNum 0;for (int i 0; i < numsSize; i) {sum nums[i];maxNum fmax(maxNum, nums[i]);}if (sum & 1) {return false;}int tar…

网络封装分用

目录 1,交换机 2,IP 3,接口号 4,协议 分层协议的好处: 5,OSI七层网络模型. 6,TCP/IP五层网络模型(主流): [站在发送方视角] [接收方视角] 1,交换机 交换机和IP没有关系,相当于是对路由器接口的扩充,这时相当于主机都与路由器相连处于局域网中,把越来越多的路由器连接起…

月入10000+,蓝海项目!少儿英语赛道

一、项目原理 少儿英语赛道的话&#xff0c;我们主要通过英语小短文&#xff0c;来让孩子学习英语&#xff0c;虽然现在有很多英语的课程&#xff0c;但针对少儿的英语是比较少的&#xff0c;所以这个赛道还是很吃香的。 整体流程也简单&#xff0c;先用AI写出故事&#xff0…

axure的下载,激活,汉化全过程,多图

1.前言 下载地址&#xff1a;https://pan.baidu.com/s/12xo1mJer2hmBK7QrYM5v-Q?pwd0107#list/path%2Fcsdn%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6 源文章&#xff1a;https://blog.csdn.net/iwanttostudyc/article/details/123773796?ops_request_misc%257B%2522request%25…

基于SpringBoot+Vue的篮球馆会员信息管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

高中数学:立体几何-平面的定义与公理

文章目录 一、平面定义及画法1、定义2、表示方法 二、公理1、公理12、公理23、公理3 一、平面定义及画法 1、定义 平面是向四周无限延展的。 2、表示方法 我们常用矩形的直观图&#xff0c;即平行四边形表示平面&#xff0e; 我们常用希腊字母α&#xff0c;β&#xff0c…

docker创建rabbitmq容器

创建rabbitmq容器 1.docker导入镜像 2.写docker-compose文件 并创建容器 3.访问15672端口 账号和密码都是guest

资产市场的战争-基于资产的媒体矩阵宣传和IP打造

在资产市场的战争中,基于资产的媒体矩阵宣传和IP打造是提升品牌竞争力、增强市场影响力的重要手段。 不同类型的媒体平台 以下是对这两个方面的详细分析: 一、基于资产的媒体矩阵宣传 1. 媒体矩阵的构建 平台选择:根据资产的特点和目标受众,选择合适的媒体平台进行宣传。…

TMS320F28335的GPIO

1 TMS320F28335 GPIO 介绍 1.1 GPIO 概念 1.2 GPIO 结构框图

neo4j安装为服务+配置环境变量

目录 neo4j安装为服务 windows services 参照JDK&#xff0c;将neo4j加入到环境变量 neo4j安装为服务 windows services 我的上一篇文章详细写明了如何安装启动neo4j《neo4j安装启动教程对应的jdk配置》&#xff0c;文末的启动neo4j是通过cmd命令行访问bin目录&#xff0c;这…

【设计模式-适配】

Adapter Pattern&#xff08;适配器模式&#xff09; 是一种结构型设计模式&#xff0c;其主要目的是让不兼容的接口能够协同工作。适配器模式通过引入一个适配器类&#xff0c;转换一个类的接口&#xff0c;使得原本不兼容的接口可以互相配合&#xff0c;从而实现接口的兼容性…

国庆旅游高峰期,景区如何利用可视化大屏保障游客安全?

国庆假期即将来临&#xff0c;中国文化和旅游部发布的数据显示&#xff0c;今年国庆期间国内旅游市场将迎来爆发式增长&#xff0c;预计出游人次将达到8.96亿&#xff0c;同比增长86%&#xff0c;旅游收入预计将达到7825亿元人民币&#xff0c;同比增长138%。这一繁荣景象无疑给…

使用Apache SeaTunnel高效集成和管理SftpFile数据源

本文为Apache SeaTunnel已经支持的SftpFile Source Connector使用文档&#xff0c;旨在帮助读者理解如何高效地使用SFTP文件源连接器&#xff0c;以便轻松地使用Apache SeaTunnel集成和管理您的SftpFil数据源。 SftpFile 是指通过 SFTP&#xff08;Secure File Transfer Proto…

CC工具箱1.3.6更新_免费_120+工具

CC工具箱1.3.6更新【2024.9.11】 使用环境要求&#xff1a;ArcGIS Pro 3.0 一、下载链接 https://pan.baidu.com/s/1OJmO6IPtMfX_vob3bMtvEg?pwduh5r 二、使用方法 1、在下载链接中下载安装文件【CC工具箱1.3.6.esriAddinX】&#xff0c;直接点击安装即可。 2、安装好后打…

诸葛智能助力唐山银行、三峡媒体斩获「数智卓越企业」大奖

近日&#xff0c;2024爱分析第六届数据智能高峰论坛在北京成功举办&#xff0c;旨在深入探讨AI大模型与数据要素在企业智能化转型中的重要作用&#xff0c;分享前沿技术成果与头部企业实践经验。 诸葛智能作为数智化转型的优秀厂商&#xff0c;携手同样走在行业转型前沿的先锋…

网络爬虫的最佳实践:结合 set_time_limit() 与 setTrafficLimit() 抓取云盘数据

在数据爬取领域&#xff0c;百度云盘作为国内领先的云存储服务平台&#xff0c;拥有海量的用户和数据资源。因此&#xff0c;对于技术开发者而言&#xff0c;如何高效、稳定地对百度云盘中的公开资源进行数据抓取成为了一个值得探讨的课题。本文将结合 PHP 的 set_time_limit()…

PVE虚拟机被锁定locked解决方法

打开pve节点的shell&#xff0c;执行以下命令 qm unlock <VMID> 示例&#xff1a; qm unlock 112

Mobile net V系列详解 理论+实战(1)

Mobilenet 系列 论文精讲部分0.摘要1. 引文2. 引文3. MobileNet 模型架构3.0 卷积个人理解3.1 深度可分离卷积3.2 网络结构和训练3.3 宽度乘数&#xff1a;更细的模型 α3.4 分辨率乘数&#xff1a;降低表示的维度ρ 4. 实验4.1 模型选择4.2. 模型缩减超参数4.3. 细粒度识别4.4…

YOLOv9改进策略【卷积层】| HWD,引入`Haar小波变换`到下采样模块中,减少信息丢失

一、本文介绍 本文记录的是利用Haar小波下采样对YOLOv9网络进行改进的方法研究。传统的卷积神经网络中常用的最大池化、平均池化和步长为2的卷积等操作进行下采样可能会导致信息丢失&#xff0c;为了解决信息丢失问题&#xff0c;HWD作者受无损信息变换方法的启发&#xff0c;…