Kubernetes集群监控,kube-prometheus安装教程,一键部署
Kube-prometheus介绍
Kube-prometheus 是一个用于监控 Kubernetes 集群的完整解决方案。它基于 Prometheus 生态系统,提供了一整套预配置的组件和配置文件,以便轻松地在 Kubernetes 上部署和运行 Prometheus 监控系统。
Kube-prometheus 主要包括以下组件:
Prometheus Operator:简化了 Prometheus 的部署和管理。它通过 Kubernetes CRD(自定义资源定义)来管理 Prometheus 实例和 Alertmanager 实例。
Prometheus:一个开源的系统监控和报警工具。它通过拉取方式收集时序数据,并提供一个灵活的查询语言(PromQL)来分析数据。
Alertmanager:处理来自 Prometheus 的警报,可以对警报进行分组、路由和通知。
Grafana:一个开源的分析平台,用于可视化数据,支持多种数据源。它可以用来创建和分享仪表板(Dashboards)。
Node Exporter:一个收集主机硬件和操作系统指标的工具。
Kube-state-metrics:从 Kubernetes API 服务器收集集群状态数据的工具。
Prometheus Adapter:将 Prometheus 的自定义指标暴露给 Kubernetes 的 Horizontal Pod Autoscaler (HPA) 使用。
Kube-prometheus 的主要特点和优势包括:
- 预配置:提供了一整套预先配置好的 Prometheus、Alertmanager 和 Grafana 的配置文件,开箱即用。
- 集成性强:所有组件都紧密集成,可以方便地一起使用。
- 可扩展性:基于 Kubernetes 的部署方式,使得监控系统能够方便地扩展和升级。
- 社区支持:作为一个被广泛使用的项目,有着良好的社区支持和文档。
要使用 Kube-prometheus,通常通过 Helm Chart 或者直接使用项目中的 Kubernetes 清单文件来部署。部署完成后,你可以访问 Grafana 来查看集群的监控指标和预定义的仪表板,同时通过 Prometheus 和 Alertmanager 来管理和处理监控数据和警报。
Kube-prometheus安装部署
拉取镜像
git clone https://mirror.ghproxy.com/https://github.com/prometheus-operator/kube-prometheus.git
将目录更改为清单 manifests
cd kube-prometheus/manifests
修改Grafana服务YAML
修改为NodePort类型,集群外可以访问
sed -i "/ports:/i \ \ type: NodePort" grafana-service.yaml
#下面这个也可以不执行,自动生成随机的端口
sed -i "/targetPort: http/i \ \ \ \ nodePort: 31100" grafana-service.yaml
修改Prometheus服务YAML
修改为NodePort类型,集群外可以访问
sed -i "/ports:/i \ \ type: NodePort" prometheus-service.yaml
#下面这个也可以不执行,自动生成随机的端口
sed -i "/targetPort: web/i \ \ \ \ nodePort: 31101" prometheus-service.yaml
安装CRD
kubectl create -f setup/
安装prometheus, alertmanager, grafana, kube-state-metrics, node-exporter等资源
kubectl apply -f .
安装成功,查看pod,svc
kubectl get pod,svc -n monitoring -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/alertmanager-main-0 2/2 Running 6 (18m ago) 4d16h 10.244.1.183 slave1 <none> <none>
pod/alertmanager-main-1 2/2 Running 6 (18m ago) 4d16h 10.244.1.176 slave1 <none> <none>
pod/alertmanager-main-2 2/2 Running 6 (18m ago) 4d16h 10.244.1.173 slave1 <none> <none>
pod/blackbox-exporter-6fc96d64db-687gh 3/3 Running 9 (18m ago) 4d17h 10.244.1.165 slave1 <none> <none>
pod/grafana-85c87f8769-xqlq5 1/1 Running 3 (18m ago) 4d17h 10.244.1.166 slave1 <none> <none>
pod/kube-state-metrics-6d79c8794-tpbtr 3/3 Running 9 (18m ago) 4d17h 10.244.1.164 slave1 <none> <none>
pod/node-exporter-2dz4d 2/2 Running 14 (18m ago) 7d19h 192.168.10.22 slave1 <none> <none>
pod/node-exporter-rqplj 2/2 Running 10 (18m ago) 7d19h 192.168.10.21 main <none> <none>
pod/prometheus-adapter-9f76d56cc-47qgh 1/1 Running 5 (18m ago) 4d17h 10.244.1.170 slave1 <none> <none>
pod/prometheus-adapter-9f76d56cc-zt64q 1/1 Running 5 (18m ago) 4d17h 10.244.1.179 slave1 <none> <none>
pod/prometheus-k8s-0 2/2 Running 7 (18m ago) 4d16h 10.244.1.175 slave1 <none> <none>
pod/prometheus-k8s-1 2/2 Running 7 (18m ago) 4d16h 10.244.1.181 slave1 <none> <none>
pod/prometheus-operator-84978f59d-jf5cn 2/2 Running 6 (18m ago) 4d17h 10.244.1.169 slave1 <none> <none>NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/alertmanager-main ClusterIP 10.100.61.145 <none> 9093/TCP,8080/TCP 7d19h app.kubernetes.io/component=alert-router,app.kubernetes.io/instance=main,app.kubernetes.io/name=alertmanager,app.kubernetes.io/part-of=kube-prometheus
service/alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 7d19h app.kubernetes.io/name=alertmanager
service/blackbox-exporter ClusterIP 10.107.213.75 <none> 9115/TCP,19115/TCP 7d19h app.kubernetes.io/component=exporter,app.kubernetes.io/name=blackbox-exporter,app.kubernetes.io/part-of=kube-prometheus
service/grafana NodePort 10.102.185.87 <none> 3000:31100/TCP 7d19h app.kubernetes.io/component=grafana,app.kubernetes.io/name=grafana,app.kubernetes.io/part-of=kube-prometheus
service/kube-state-metrics ClusterIP None <none> 8443/TCP,9443/TCP 7d19h app.kubernetes.io/component=exporter,app.kubernetes.io/name=kube-state-metrics,app.kubernetes.io/part-of=kube-prometheus
service/node-exporter ClusterIP None <none> 9100/TCP 7d19h app.kubernetes.io/component=exporter,app.kubernetes.io/name=node-exporter,app.kubernetes.io/part-of=kube-prometheus
service/prometheus-adapter ClusterIP 10.101.25.109 <none> 443/TCP 7d19h app.kubernetes.io/component=metrics-adapter,app.kubernetes.io/name=prometheus-adapter,app.kubernetes.io/part-of=kube-prometheus
service/prometheus-k8s NodePort 10.107.214.35 <none> 9090:31101/TCP,8080:30323/TCP 7d19h app.kubernetes.io/component=prometheus,app.kubernetes.io/instance=k8s,app.kubernetes.io/name=prometheus,app.kubernetes.io/part-of=kube-prometheus
service/prometheus-operated ClusterIP None <none> 9090/TCP 4d18h app.kubernetes.io/name=prometheus
service/prometheus-operator ClusterIP None <none> 8443/TCP 7d19h app.kubernetes.io/component=controller,app.kubernetes.io/name=prometheus-operator,app.kubernetes.io/part-of=kube-prometheus
访问
prometheus-k8s在slave1上面,用slave1的ip加prometheus-k8s的端口http://192.168.10.21:31101/访问
grafana也在slave1上面,用slave1的ip加grafana的端口http://192.168.10.21:31100/访问 ,默认账户密码:admin:admin
一键部署shell脚本
#!/bin/bash# Clone the repository
git clone https://mirror.ghproxy.com/https://github.com/prometheus-operator/kube-prometheus.git# Change directory to manifests
cd kube-prometheus/manifests# Prompt the user to enter Grafana NodePort
echo "Enter the Grafana NodePort (default is 31100):"
read grafana_nodeport
grafana_nodeport=${grafana_nodeport:-31100} # Default to 31100 if user doesn't provide any input# Modify Grafana service YAML
sed -i "/ports:/i \ \ type: NodePort" grafana-service.yaml
sed -i "/targetPort: http/i \ \ \ \ nodePort: $grafana_nodeport" grafana-service.yaml# Prompt the user to enter Prometheus NodePort
echo "Enter the Prometheus NodePort (default is 31101):"
read prometheus_nodeport
prometheus_nodeport=${prometheus_nodeport:-31101} # Default to 31101 if user doesn't provide any input# Modify Prometheus service YAML
sed -i "/ports:/i \ \ type: NodePort" prometheus-service.yaml
sed -i "/targetPort: web/i \ \ \ \ nodePort: $prometheus_nodeport" prometheus-service.yamlkubectl create -f setup/kubectl wait \--for condition=Established \--all CustomResourceDefinition \--namespace=monitoring# Apply the Kubernetes manifests
kubectl apply -f .相关文章:
Kubernetes集群监控,kube-prometheus安装教程,一键部署
Kube-prometheus介绍 Kube-prometheus 是一个用于监控 Kubernetes 集群的完整解决方案。它基于 Prometheus 生态系统,提供了一整套预配置的组件和配置文件,以便轻松地在 Kubernetes 上部署和运行 Prometheus 监控系统。 Kube-prometheus 主要包括以下组…...
【Gradio】快速入门
https://www.gradio.app/ Gradio 是一个开源 Python 软件包https://github.com/gradio-app/gradio ,可以让你快速为机器学习模型、API 或任何任意 Python 函数创建一个演示或网络应用程序。然后,您就可以使用 Gradio 内置的分享功能,在几秒钟…...
深度学习Day-19:DenseNet算法实战与解析
🍨 本文为:[🔗365天深度学习训练营] 中的学习记录博客 🍖 原作者:[K同学啊 | 接辅导、项目定制] 要求: 根据 Pytorch 代码,编写出 TensorFlow 代码研究 DenseNet 与 ResNetV 的区别改进思路是…...
基于openssl实现AES ECB加解密
AES加密,全称高级加密标准(Advanced Encryption Standard),是一种广泛使用的对称加密算法,用于保护电子数据的安全。以下是AES加密的基本原理和特点: 基本概念 对称加密:AES是一种对称加密算法…...
Git:从配置到合并冲突
目录 1.前言 2.Git的下载与初始化配置 3.Git中新建仓库 4.Git的工作区域和文件状态 5.Git中查看操作和提交记录 6.Git中添加和提交文件 7.Git中回退提交版本 8.Git中查看版本间的差异 9.Git中删除文件 10.Git中忽略指定文件 11.Git中配置SSH密钥 12.Git中关联克隆仓库 13.Git中…...
leetcode hot100 之 最长公共子序列
题目 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(…...
短剧APP开发,新的“财富”
在数字化时代,开发短剧APP不仅是顺应潮流的必然选择,更是抓住市场机遇的关键所在。为确保短剧APP能有效地吸引并留住用户,以下是一些主要功能及其介绍: 1、短剧搜索 关键词搜索:用户可以通过输入关键词(如…...
Uniapp与第三方应用数据通讯
首先说明一点,这个只是uniapp代码编写的应用之间相互传递数据,uniapp编写的与其他语言编写的我尚不知道能不能传递。 应用1: plus.runtime.launchApplication({pname: "应用的appid",// extra 中可以自定数据,url和da…...
AI大模型战场:通用大模型与垂直大模型的角逐
随着人工智能技术的迅猛发展,AI大模型已成为推动科技进步的重要力量。然而,在AI大模型的战场上,通用大模型与垂直大模型之间的分化日益明显。两者各有其独特的优势和潜力,在不同的应用场景中发挥着重要作用。那么,在这…...
linux的一些知识点分享-------关于操作维护的一些知识点
Apache服务器的监听端口,默认为() Apache服务器的监听端口,默认为80。 vsftpd中,可以不需提供账号密码就能进行访问的用户是( ) 在vsftpd(Very Secure FTP Daemon)中,可以不需要提供账号密码就能进行访问的用户通常是匿名用户。…...
Python使用tkinter库设置背景图片、label显示位置和label设置显示图片
tkinter 设置背景图片 label显示位置 label设置显示图片 from tkinter import * import tkinter as tk from PIL import ImageTk from PIL import Imagedef get_img(filename, width, height):im Image.open(filename).resize((width, height))im ImageTk.PhotoImage(im)…...
OpenStack是什么?
OpenStack是一个开源的云计算管理平台项目,它是一系列软件开源项目的组合。该项目由美国国家航空航天局(NASA)和Rackspace合作研发并发起,旨在提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack不仅是一个软…...
2024下《系统规划与管理师》50个高频考点汇总!背就有效
2024上半年软考考试已经结束,有不少小伙伴已经开始准备下半年软考了,但是大家要注意:今年高项仅考上半年一次,下半年考的高级科目只有系规难度相对较低,系规需要学习的内容比高项少很多,高项第四版教程731页…...
软件游戏提示msvcp140.dll丢失的原因分析及解决方法
在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“计算机缺失msvcp140.dll”。那么,这个错误是什么意思呢?它会造成哪些问题?小编将从以下几个方面进行详细解析。 一,了解msvcp140.dll是什么 …...
备战 清华大学 上机编程考试-冲刺前50%,倒数第3天
T1:水滴 - 模拟 这是一个经典的游戏。 在一个 𝑛𝑚 的棋盘上,每一个格子中都有一些水滴。 玩家的操作是,在一个格子中加一滴水。 当一个格子中的水滴数超过了 4,这一大滴水就会因格子承载不住而向外扩散。扩散的规…...
docker的安装及docker常用命令
目录 环境介绍docker卸载docker安装docker镜像命令查看docker可用的镜像查看docker可安装的镜像安装镜像删除镜像 docker容器命令查看容器启动容器启动示例进入容器内部停止容器删除容器容器和主机之间的文件复制 docker网络命令创建docker网络查看docker网络删除docker网络 do…...
Dell服务器根据GPU温度调整风扇转速
前言 dell服务器自动风扇是根据CPU温度来调速的,我跑AI的时候cpu温度不高但是GPU温度很高导致显卡卡死PVE虚拟机直接挂起无法运行,我看了下也没有基于显卡温度调速的脚本,于是我就自己写了一个 基于ipmi工具 乌班图等linux先安装ipmi apt …...
快捷键专栏 IDEA、Navicat、电脑、Excle、Word等
标题 电脑篇windowsR 配合以下常用命令连上公司网线WiFi速度变慢问题解决Windows10 设置鼠标右键在此处打开cmd和Powershell窗口、关机打开电脑诊断工具系统设置常用设置查看电脑出场日期 systeminfo删除文件显示已在另一个程序打开?找回回收站删除的文件WindowsR输…...
卸载MySQL5.0,安装MySQL8.0
卸载MySQL 1、以管理员身份运行cmd,删除MySQL服务 2、卸载MySQL 3、删除残余文件 4、清楚注册表 winR -> regedit 5、删除环境变量 安装MySQL步骤 官方下载地址 https://www.mysql.com/downloads/ 以上步骤即完成MySQL数据库安装。...
苹果WWDC重磅发布的IOS 18、Apple Intelligence背后的技术分析!
2024年6月10日,在2024年WWDC全球开发者大会上,苹果推出了Apple Intelligence,这是深度集成到iOS 18、iPadOS 18和macOS Sequoia中的个人智能系统。 为了让大模型能在 iPhone 端侧跑,苹果还是做了很多事情的。接下来就跟大家介绍一…...
28:L构建AI Agent安全:蓝队的智能代理防御
作者: HOS(安全风信子) 日期: 2026-03-19 主要来源平台: GitHub 摘要: AI Agent的发展为安全防御带来了新的可能性,但也带来了新的安全挑战。基拉等对手可能利用AI Agent进行攻击。L深入研究AI Agent安全技术ÿ…...
通用GUI编程技术——Win32 原生编程实战(十八)——GDI 设备上下文(HDC)完全指南
通用GUI编程技术——Win32 原生编程实战(十八)——GDI 设备上下文(HDC)完全指南 前面一系列文章我们聊了对话框、控件、资源这些内容,我们的窗口已经能够显示各种控件了。但你可能已经发现了一个问题:我们所…...
AI 模型推理框架性能分析与对比
AI模型推理框架性能分析与对比 随着人工智能技术的快速发展,AI模型推理框架成为支撑各类应用落地的核心工具。无论是计算机视觉、自然语言处理还是推荐系统,高效的推理框架直接影响模型的响应速度、资源占用和部署成本。本文将从多个维度对比主流AI推理…...
RTX4090D显存优化:OpenClaw+Qwen3-32B-Chat批量处理千页PDF
RTX4090D显存优化:OpenClawQwen3-32B-Chat批量处理千页PDF 1. 为什么需要显存优化 当我第一次尝试用OpenClaw对接Qwen3-32B-Chat处理PDF文档时,遇到了一个棘手的问题——显存爆炸。当时只是处理一个200页的PDF,显存占用就飙到了22GB&#x…...
宁波小程序公司提供专业的小程序开发服务
在宁波小程序公司的服务中,我们致力于为客户提供清晰的内容结构和流畅的表达。我们通过深入的需求分析,确保每个项目都能符合客户特定的期望和市场需求。设计阶段注重市场调研,力求在视觉和功能上都能满足用户的使用习惯和偏好。开发过程中&a…...
LVGL 7.11.0 Chart控件实战:5分钟搞定动态心率折线图(附完整代码)
LVGL 7.11.0 Chart控件实战:5分钟搞定动态心率折线图(附完整代码) 在嵌入式设备上实现流畅的数据可视化一直是开发者的痛点。LVGL作为轻量级图形库,其Chart控件能完美解决这一问题。本文将手把手教你用LVGL 7.11.0的Chart控件&am…...
用Python+Control库实现倒立摆LQR控制:从建模到仿真全流程
用PythonControl库实现倒立摆LQR控制:从建模到仿真全流程 倒立摆问题一直是控制理论中的经典案例,它不仅能帮助我们理解线性二次调节器(LQR)的核心思想,还能锻炼我们解决实际工程问题的能力。本文将带你从零开始&#…...
零基础入门:用eNSP搭建USG5500防火墙IPsec虚拟专用网实验环境
从零构建企业级安全隧道:eNSP模拟USG5500防火墙IPsec实战指南 当你第一次听说"IPsec"这个词时,可能会联想到那些科技电影中黑客们建立的加密通道。实际上,IPsec技术离我们并不遥远——它正默默保护着每天数以亿计的企业数据传输。本…...
3步释放华硕笔记本潜能:G-Helper轻量化控制工具的极致优化指南
3步释放华硕笔记本潜能:G-Helper轻量化控制工具的极致优化指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models …...
利用快马平台快速生成PyTorch图像分类原型,十分钟验证模型思路
最近在尝试用PyTorch做图像分类的原型验证时,发现从零开始搭建环境、写基础代码特别耗时。后来尝试用InsCode(快马)平台生成项目模板,十分钟就完成了模型验证。这里分享下用PyTorch快速构建MNIST分类器的关键步骤和踩坑经验。 数据准备环节 平台生成的代…...
