当前位置: 首页 > news >正文

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发行版,可以在不同的容器之间共享文件系统&#xf…...

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 构造函数初始化成员变量 下面我们来完善上一篇文章中的几个构造函数。 让这些构造函数完成给成员变量初始化的职责。 为此&#…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

git: early EOF

macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...