Kubernetes(k8s)上安装Prometheus和Grafana监控
Kubernetes上安装Prometheus和Grafana监控
- 环境准备
- Kubernetes准备
- 安装项目
- 开始安装
- 下载安装的项目
- 安装项目
- 替换镜像
- 替换kube-state-metrics
- 替换prometheus-adapter
- 修改Service
- 修改alertmanager-service.yaml
- 修改grafana-service.yaml
- 修改prometheus-service.yaml
- 执行这些yaml资源清单文件
- 访问Grafana
- 其他系统的访问
- Prometheus
- AlertManager
环境准备
Kubernetes准备
当然前提环境是你得先有一个Kubernetes集群,版本在v1.21.*~v1.27.*之间,当然我已经准备好了Kubernetes:
可以看到我准备的Kubernetes版本为1.21.14的,符合要求。本篇文章也以这个版本来进行安装,上面提到的版本安装步骤和这个版本大体相同,按照步骤来即可。
安装项目
因为在Kubernetes上安装Prometheus很麻烦,所以有一些大佬在Github上贡献了一些安装它们的项目,这次我推荐使用的项目是 kube-prometheus
,地址为:https://github.com/prometheus-operator/kube-prometheus,但是你要注意安装 kube-prometheus 的版本,版本的对应列表:
Kubernetes版本 | Kube-prometheus版本 |
---|---|
1.21.* | 0.9.0 |
1.22.* | 0.9.0、0.10.0 |
1.23.* | 0.10.0、0.11.0 |
1.24.* | 0.11.0、0.12.0 |
1.25.* | 0.12.0 |
1.26.* | main |
1.27.* | main |
如图:
要注意最好不要使用main分支的项目,因为还没有正式发版,所以建议使用1.25.*以下的Kubernetes
开始安装
下载安装的项目
来到这个网址:https://github.com/prometheus-operator/kube-prometheus/releases,选择对应版本的发行版本进行下载,因为我的Kubernetes安装的是1.21.*,所以我下载的是0.9.0版本:
下载之后如图:
安装项目
我们先将这个项目给解压:
tar -zxvf kube-prometheus-0.9.0.tar.gz
解压之后如图会出现一个 kube-prometheus-0.9.0
文件夹:
我们先去到 kube-prometheus-0.9.0/manifests
目录当中:
cd kube-prometheus-0.9.0/manifests/
替换镜像
因为有部分镜像是在 k8s.gcr.io
上拉取的,这个镜像是谷歌上的,国内拉取不下来,所以我们要修改一下拉取地址。因为dockerhub上已经有人提供了这个镜像的替代品,所以我们这里可以直接替换
替换kube-state-metrics
修改 ./kube-state-metrics-deployment.yaml
文件(在kube-prometheus-0.9.0/manifests/kube-state-metrics-deployment.yaml):
vim kube-state-metrics-deployment.yaml
在大概34行这个位置有 k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.1.1
镜像(版本号可能不同,不影响安装):
在dockerhub上查询收藏最多的:
选择相同的版本号(⚠️注意这个版本号没有v前缀):
所以我们将 k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.1.1
改为 docker.io/bitnami/kube-state-metrics:2.1.1
(加上docker.io前缀):
替换prometheus-adapter
修改 ./prometheus-adapter-deployment.yaml
文件(在kube-prometheus-0.9.0/manifests/prometheus-adapter-deployment.yaml):
vim ./prometheus-adapter-deployment.yaml
在大概34行这个位置有 k8s.gcr.io/prometheus-adapter/prometheus-adapter:v0.9.0
镜像(版本号可能不同,不影响安装):
我们在此来到dockerhub搜索,同样使用这个下载和收藏最多的:
同样注意版本号对应:
所以我们将 k8s.gcr.io/prometheus-adapter/prometheus-adapter:v0.9.0
改为 docker.io/willdockerhub/prometheus-adapter:v0.9.0
(加上docker.io前缀):
修改Service
因为有一些我们需要外部访问的Service设置的类型是ClusterIP,所以我们要将它改为NodePort或LoadBalancer
修改alertmanager-service.yaml
这个文件在 kube-prometheus-0.9.0/manifests/alertmanager-service.yaml
,我们直接修改:
vim alertmanager-service.yaml
按照图片提示修改,在 spec
下新增一行 type: NodePort
修改类型为 NodePort
,然后再在 spec.ports
下面新增一行 nodePort: 30093
修改nodePort端口为 30093
这个端口可以自行指定 30000~32767
之间的端口:
修改完成后保存并退出。
修改grafana-service.yaml
这个文件在 kube-prometheus-0.9.0/manifests/grafana-service.yaml
,我们直接修改:
vim grafana-service.yaml
操作步骤一样,这里不再过多赘述,但要注意端口号不要冲突:
修改prometheus-service.yaml
这个文件在 kube-prometheus-0.9.0/manifests/prometheus-service.yaml
,我们直接修改:
vim prometheus-service.yaml
操作步骤一样,这里不再过多赘述,但要注意端口号不要冲突:
执行这些yaml资源清单文件
先来到 kube-prometheus-0.9.0
目录:
然后执行下面几行命令:
kubectl apply --server-side -f manifests/setup
kubectl wait \--for condition=Established \--all CustomResourceDefinition \--namespace=monitoring
kubectl apply -f manifests/
执行结果如图,创建了一堆的资源:
我们使用以下命令查询是否创建成功:
watch kubectl get pod -o wide -n monitoring
当安装完成之后 STATUS
的值都是 Running
,并且 READY
的值也是全部没有问题的:
访问Grafana
使用这行命令查看grafana的端口:
kubectl get svc -o wide -n monitoring | grep grafana
可以看到grafana对外部访问的nodePort端口为 30300
,这也是我们之前设置的值:
我们直接通过浏览器访问任何一个节点的IP地址带上这个端口就可以访问到grafana了:
默认的用户名和密码是 admin/admin
,我们可以直接登陆,登陆之后要我们从新设置密码,为你们的admin用户从新设置一个新密码即可:
接下来我们就访问到Grafana的主页了:
按照我的提示点击 Dashboards
-> Manage
:
然后再展开这个Default:
可以看到有很多的 kube-prometheus
已经为我们准备好的Dashboard:
我们选择 Node Exporter/Nodes
的 Dashboard 进去:
这个里面可以看到各个节点的 CPU 和内存信息:
点击 Kubernetes/Networking/Cluster
进去:
可以看到各个命名空间下的网络访问情况;
好的,更多的Dashboard你们可以自己去查看
其他系统的访问
Prometheus
使用以下命令查看Prometheus的NodePort端口:
kubectl get svc -o wide -n monitoring | grep prometheus-k8s
可以看到Prometheus的NodePort端口是我们自己设置的 30090:
访问进来可以直接到达Prometheus的主页:
然后你可以对Prometheus做一些你想要的操作
AlertManager
我们可以直接通过以下命令查询 alertmanager 的NodePort端口:
kubectl get svc -o wide -n monitoring | grep alertmanager-main
可以看到端口依然是我们之前设置的30093:
同样访问我们任何一个节点的30093端口就能访问到AlertManager的主页:
好了,Kubernetes上搭建Prometheus和Grafana的步骤就已经执行完毕了,祝你们编码开心
相关文章:

Kubernetes(k8s)上安装Prometheus和Grafana监控
Kubernetes上安装Prometheus和Grafana监控 环境准备Kubernetes准备 安装项目开始安装下载安装的项目安装项目替换镜像替换kube-state-metrics替换prometheus-adapter 修改Service修改alertmanager-service.yaml修改grafana-service.yaml修改prometheus-service.yaml 执行这些ya…...

黑马 软件测试从0到1 常用分类 模型 流程 用例
课程内容: 1、软件测试基础 2、测试设计 3、缺陷管理 4、Web常用标签 5、项目实战 以终为始,由交付实战目标为终,推出所学知识;从认识软件及软件测试,到如何设计测试、缺陷标准及缺陷管理,最终以项目实战贯…...

面试中的商业思维:如何展示你对业务的理解
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...

Docker切换文件系统为VFS
一、介绍 Docker支持AUFS、Btrfs、Device Mapper、OverlayFS、VFS、ZFS六种不同的存储驱动。 1. AUFS AUFS是一种常见的存储驱动程序,它也使用了Linux内核的AUFS文件系统。它的优点是支持所有的Linux发行版,可以在不同的容器之间共享文件系统…...

Spring Security存在认证绕过漏洞 CVE-2021-22096
文章目录 0.前言1.参考文档2.基础介绍漏洞影响范围:官方说明:修复版本:漏洞利用步骤:修复方式: 3.解决方案 0.前言 背景:项目被扫到Spring Boot 的漏洞,严格的说应该是Spring Security 组件的漏…...

前端list列表自定义图标并设置大小
前端list列表自定义图标并设置大小 一、前端list列表基础知识回顾 前端公有两种列表,一种是有序列表(ol),一种是无序列表(ul),它们的子元素都是(li)。 1.1 有序列表&a…...

Multisim14.0仿真(五)三角波发生器
一、仿真原理图: 二、仿真效果:...

使用安全复制命令scp在Windows系统和Linux系统之间相互传输文件
现在已经有很多远程控制服务器的第三方软件平台,比如FinalShell,MobaXterm等,半可视化界面,使用起来非常方便和友好,两个系统之间传输文件直接拖就行,当然也可以使用命令方式在两个系统之间相互传递。 目录…...

SOC总线学习记录之ICB(Internal Chip Bus)
蜂鸟E203总线: 采用自定义总线协议 ICB(Internal Chip Bus),该总线用于蜂鸟 E203 内核内部使用,同时也可作为 SoC 中的总线使用。 ICB 总线的初衷是为了能够尽可能地结合 AXI 总线和 AHB 总线的优点,兼具高…...
rabbitMQ手动应答与自动应答
手动应答模式(manual) 解释: 手动应答:既是当消费者消费了队列中消息时需要给队列一个应答,告诉队列这条消息我已经消费了,可以删除了; 若是不应答,即使消费了 队列没收到消费成功的提示 所有消息会一直在队列中; 注意 注意 注意:重要的事情说三遍,下面说的…...

java对象创建的过程
1、检查指令的参数是否能在常量池中定位到一个类的符号引用 2、检查此符号引用代表的类是否已被加载、解析和初始化过。如果没有,就先执行相应的类加载过程 3、类加载检查通过后,接下来虚拟机将为新生对象分配内存。 4、内存分配完成之后,…...

WireShark流量抓包详解
目录 Wireshark软件安装Wireshark 开始抓包示例Wireshakr抓包界面介绍WireShark 主要界面 wireshark过滤器表达式的规则 Wireshark软件安装 软件下载路径:wireshark官网。按照系统版本选择下载,下载完成后,按照软件提示一路Next安装。 Wire…...
【密码学代码分享】突破ECDSA算法封装--JS无三方包纯手写ECDSA
ECDSA(Elliptic Curve Digital Signature Algorithm)是一种基于椭圆曲线密码学的数字签名算法。它用于确保数字数据的完整性和身份验证,通常在信息安全和加密通信中使用。在日常使用中,通常会使用一些函数库来实现完成这个算法的功…...

stable diffusion实践操作-文生图
本文专门开一节写文生图相关的内容,在看之前,可以同步关注: stable diffusion实践操作 正文 1 liblib SD1.5底模 lora(baihuaniang_1.0) 详细信息: 底模:SD 1.5 Lora:baihuaniang_1.0 正向提示词: Best …...

Spring容器及实例化
一、前言 Spring 容器是 Spring 框架的核心部分,它负责管理和组织应用程序中的对象(Bean)。Spring 容器负责创建、配置和组装这些对象,并且可以在需要时将它们提供给应用程序的其他部分。 Spring 容器提供了两种主要类型的容器&…...
# Go学习-Day9
文章目录 Channel声明存入取出一个简单的死锁分析 个人博客:CSDN博客 Channel Channel本质是一个队列多goroutine访问时不需要加锁,Channel天然线程安全channel有类型,只能写入相同类型channel是引用类型channel必须初始化才能写入数据&…...
chatGPT如何在Java中使用
ChatGPT是一个基于GPT模型的聊天机器人平台,它提供了API接口,可以通过HTTP请求与之交互。您可以使用Java编写程序,通过HTTP请求与ChatGPT进行交互,实现聊天机器人的功能。 具体步骤如下: 1、注册ChatGPT账号并创建应…...
vue+axios——创建多个实例共用请求拦截器和响应拦截器(403错误信息不提示bug解决)——基础积累
创建多个实例共用请求拦截器和响应拦截器:使用的是函数的继承,也就是call()方法,这个方法第一个参数就是this,后面的参数可以是一个也可以是多个。最后一定要记得要return出去,否则接口是拿不到数据的。 import axios from axios…...

全球免费编程教育网站:Code.org
全球免费编程教育网站:Code.org 官网地址注册使用 你还在为小朋友的编程教育而发愁吗? 你还在为小朋友放假无聊而头疼吗? 他来了他来了,全球免费编程教育网站来了。 2013年成立的Code.org是一个非营利组织。 它致力于为年轻女子、…...

构造函数与成员变量初始化
C自学精简教程 目录(必读) 1 为什么需要定义构造函数? 构造函数主要用来给成员变量初始化。 让类对象有一个良好的开始状态。 2 构造函数初始化成员变量 下面我们来完善上一篇文章中的几个构造函数。 让这些构造函数完成给成员变量初始化的职责。 为此&#…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...