windows 部署Prometheus+Node-expoter

Prometheus v3.2.1 离线部署方式

通过helm部署prometheus会自动部署Node-expoter只需要添加prometheus的抓取规则!!

删除: 清除之前安装的 Prometheus 如果你之前已经安装了 Prometheus,需要清除原有的 Prometheus 安装,确保新的安装不受干扰。可以使用 helm uninstall 来卸载 Prometheus。

helm uninstall prometheus --namespace <your-namespace>

如果你不记得安装时使用的命名空间,可以先列出所有命名空间:

kubectl get namespaces

1.预备工作:准备 Helm Chart 和镜像

1.1 在外网环境中下载 Prometheus Helm Chart 和相关镜像

在外网环境中拉取 Prometheus 镜像(v3.2.1)

拉取 Prometheus 3.2.1 镜像并保存为 tar 文件:

docker pull prom/prometheus:v3.2.1
docker save prom/prometheus:v3.2.1 -o prometheus-v3.2.1.tar

同样,如果你还需要拉取其他镜像(如 Alertmanager、Prometheus Operator),也可以执行类似的操作:

拉取 Alertmanager 镜像:

docker pull prom/alertmanager:v0.21.0
docker save prom/alertmanager:v0.21.0 -o alertmanager-v0.21.0.tar

拉取 Prometheus Operator 镜像:

docker pull quay.io/coreos/prometheus-operator:v0.38.1
docker save quay.io/coreos/prometheus-operator:v0.38.1 -o prometheus-operator-v0.38.1.tar

下载 Prometheus Helm Chart

在外网环境中,首先添加 Prometheus Helm 仓库并拉取 Helm Chart:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm fetch prometheus-community/kube-prometheus-stack --version 17.0.0 --untar

这样,你就会在当前目录下得到一个 kube-prometheus-stack 文件夹,它包含了所有 Helm Chart 的文件。

1.2 将文件拷贝到内网环境

将以下文件拷贝到内网环境:

镜像 tar 文件: prometheus-v3.2.1.tar,alertmanager-v0.21.0.tar,prometheus-operator-v0.38.1.tar

Prometheus Helm Chart 文件夹: kube-prometheus-stack

可以使用 USB 驱动、局域网文件共享、SFTP 等方式将文件传输到内网。

2.在内网环境中加载镜像

在内网环境中,你需要将上面下载并传输的镜像加载到每个 Kubernetes 节点上。

加载 Prometheus 镜像
​
docker load -i prometheus-v3.2.1.tar
加载 Alertmanager 镜像
​
docker load -i alertmanager-v0.21.0.tar
加载 Prometheus Operator 镜像
​
​
docker load -i prometheus-operator-v0.38.1.tar
确保每个 Kubernetes 节点都加载了这些镜像,尤其是在多节点环境下。

3.配置 Helm 使用本地镜像

修改 values.yaml 文件,以便 Helm 使用你已经加载到内网环境的镜像。

打开 kube-prometheus-stack 文件夹中的 values.yaml,修改镜像部分指向本地镜像。以下是一个示例:

prometheus:image:repository: prom/prometheustag: v3.2.1pullPolicy: IfNotPresent  # 如果内网环境已加载镜像,这样 Helm 会避免从外网拉取镜像
​
alertmanager:image:repository: prom/alertmanagertag: v0.21.0pullPolicy: IfNotPresent
​
prometheusOperator:image:repository: quay.io/coreos/prometheus-operatortag: v0.38.1pullPolicy: IfNotPresent

4.安装 Helm Chart

确保你已经安装了 Helm,并且 Kubernetes 环境已经配置好。然后进入 kube-prometheus-stack 文件夹(即你下载并解压的 Helm Chart 目录):

cd /path/to/kube-prometheus-stack
安装 Prometheus Stack,使用修改后的 values.yaml 文件:
​
helm install prometheus ./kube-prometheus-stack -f values.yaml --namespace <your-namespace> --create-namespace
helm install prometheus ./kube-prometheus-stack -f D:\KTKJ\Prometheus\kube-prometheus-stack\values.yaml --namespace monitoring --create-namespace
如果你已经安装过 Prometheus,可以使用 helm upgrade 命令来更新:
​
helm upgrade prometheus ./kube-prometheus-stack -f values.yaml --namespace <your-namespace>
helm upgrade prometheus ./kube-prometheus-stack -f D:\KTKJ\Prometheus\kube-prometheus-stack\values.yaml --namespace monitoring  --set prometheus-node-exporter.enabled=false

5.验证安装

安装完成后,可以通过以下方式验证 Prometheus 是否安装成功:

5.1 检查 Pods 状态

使用 kubectl get pods 命令查看所有 Pods 是否正常运行:

kubectl get pods -n <your-namespace> 确保 prometheus-operated、alertmanager 和其他相关 Pods 都处于 Running 状态。

5.2 访问 Prometheus Web UI

使用 kubectl port-forward 将 Prometheus 的 Web UI 映射到本地端口:

kubectl port-forward -n <your-namespace> svc/prometheus-operated 9090:9090 然后在浏览器中访问 http://localhost:9090 来查看 Prometheus Web UI。

5.3 查看 Prometheus 日志

如果 Prometheus 没有正常启动,可以查看其日志以便调试:

kubectl logs -n <your-namespace> <prometheus-pod-name> 总结 这是在 没有外网访问的内网环境 中安装 Prometheus 3.2.1 的完整步骤:

在外网环境中:

下载 Prometheus 镜像、Alertmanager 镜像、Prometheus Operator 镜像,并保存为 tar 文件。

下载 Prometheus Helm Chart。

将文件传输到内网环境:

通过 USB 或其他方式将下载的文件传输到内网。

在内网环境中:

使用 docker load 命令加载所有 Docker 镜像。

修改 Helm Chart 中的 values.yaml 文件,指向本地镜像。

使用 Helm 安装 Prometheus。

验证:

使用 kubectl get pods 检查 Pods 是否正常运行。

使用 kubectl port-forward 访问 Prometheus Web UI。

查看日志以排除潜在问题。

这样,你就可以在没有外网的情况下成功部署并运行 Prometheus。

-----------------------------------------------------------问题处理------------------------------------------------------

更改yaml配置文件: nodeExporter: image: repository: <your-registry>/prom/node-exporter tag: v1.3.1 我的yaml文件没有这些信息,我要新增嘛?怎么新增?

ChatGPT 说: 是的,你需要在 values.yaml 文件中 新增 nodeExporter 的配置,来指定使用你私有镜像仓库中的镜像。如果你的 values.yaml 文件没有相关的 nodeExporter 配置,你可以手动添加这一部分。

步骤:如何新增 nodeExporter 镜像配置 找到 values.yaml 文件: 通常,values.yaml 文件位于你通过 Helm 安装的 Prometheus chart 包中。你可以在 kube-prometheus-stack Chart 中找到该文件。

在 values.yaml 文件中新增 nodeExporter 配置: 你可以按照以下方式添加或修改 nodeExporter 部分,确保 Kubernetes 使用你的私有仓库镜像。

nodeExporter: image: repository: <your-registry>/prom/node-exporter # 修改为你私有仓库的地址 tag: v1.3.1 # 修改为你需要的镜像标签 pullPolicy: IfNotPresent # 如果你已经将镜像加载到本地节点,设置为 IfNotPresent 避免重新拉取 repository:这里是你私有仓库的地址,比如:<your-registry>/prom/node-exporter。

tag:这里是你需要的镜像版本,例如 v1.3.1。

pullPolicy:建议设置为 IfNotPresent,这样 Kubernetes 在没有找到本地镜像时才会尝试拉取。设置为 Always 会强制每次启动时都拉取镜像。

如果没有找到 nodeExporter 配置: 如果你的 values.yaml 中根本没有 nodeExporter 相关的配置,不用担心,你只需将上面这段代码添加到文件中,放到适当的位置。通常,nodeExporter 配置会在 prometheus 配置部分下:

prometheus: nodeExporter: image: repository: <your-registry>/prom/node-exporter tag: v1.3.1 pullPolicy: IfNotPresent 如果没有该部分,可以直接加在文件的最下面,确保其格式正确。

保存并重新安装 Prometheus: 修改完 values.yaml 文件后,重新执行 Helm 安装或升级命令,确保新配置生效:

helm upgrade --install prometheus ./kube-prometheus-stack -f values.yaml --namespace <your-namespace> 总结: 是的,你需要新增 nodeExporter 配置,在 values.yaml 文件中明确指定 nodeExporter 镜像的位置,尤其是在内网环境中需要使用私有镜像仓库时。

修改后的配置示例:

nodeExporter: image: repository: <your-registry>/prom/node-exporter tag: v1.3.1 pullPolicy: IfNotPresent 这样配置之后,Prometheus 会使用你私有镜像仓库中的 node-exporter 镜像,而不会尝试从外部拉取镜像。如果其他组件(如 Prometheus、Alertmanager 等)也需要这样配置,记得按相同方式修改。


从输出中可以看到, docker-desktop 节点的操作系统标签是 kubernetes.io/os=linux,并没有 kubernetes.io/os=windows 的标签。这意味着你的集群中没有标记为 Windows 的节点,所有节点都是 Linux 节点。 解决方案: 如果你希望在 Windows 上运行 node-exporter,你需要在 Kubernetes 集群中引入 Windows 节点。以下是一些步骤和选项来解决这个问题:

  1. 确保集群支持 Windows 节点 目前,Windows 节点和 Linux 节点通常可以混合部署,但是你需要确保 Kubernetes 集群正确配置以支持 Windows 节点。Docker Desktop 默认情况下只包含 Linux 节点,因此你需要额外的步骤来启用 Windows 节点。

  2. 在 Kubernetes 集群中加入 Windows 节点 如果你希望使用 Windows 节点,你需要确保你有一个 Windows 节点可以加入到集群。你可以设置一个支持 Windows 的 Kubernetes 节点环境。以下是一般的步骤:

在 Windows 上安装 Kubernetes 节点:

你需要在一个支持 Windows 节点的环境中安装 Kubernetes。你可以使用 Windows Server 2019 或 Windows 10 版本,确保启用了 Hyper-V 和容器支持。

如果你使用的是 Docker Desktop,可以启用 Windows 容器模式并将其加入到集群中。要实现这一点,你需要在 Docker Desktop 设置中切换到 "Windows Containers" 模式。

将 Windows 节点加入 Kubernetes 集群:

在安装并配置好 Windows 节点后,你可以通过 kubeadm 或其他 Kubernetes 管理工具将 Windows 节点加入到集群中。Windows 节点将自动带有 kubernetes.io/os=windows 标签。

  1. 修改 DaemonSet 配置 一旦你的 Windows 节点被成功加入到 Kubernetes 集群并且标记为 kubernetes.io/os=windows,你可以更新 DaemonSet 来调度 node-exporter 到 Windows 节点。

如前所述,使用以下命令编辑 DaemonSet:

kubectl edit daemonset prometheus-prometheus-node-exporter -n monitoring 然后将 nodeSelector 更新为:

nodeSelector: kubernetes.io/os: windows

  1. 验证 DaemonSet 部署 完成这些操作后,使用以下命令检查 node-exporter 是否在 Windows 节点上正确运行:

kubectl get daemonsets -n monitoring 确保 node-exporter 的 DESIRED 和 CURRENT 都显示为 1,并且它被调度到 Windows 节点上。

总结: 你的当前节点(docker-desktop)是 Linux 节点,因此 node-exporter 只会在 Linux 节点上运行。

要在 Windows 上运行 node-exporter,需要确保集群中有 Windows 节点,并将其正确标记为 kubernetes.io/os=windows。

一旦 Windows 节点加入集群,可以修改 DaemonSet 的配置,将 node-exporter 调度到 Windows 节点上。

kubectl edit daemonset prometheus-prometheus-node-exporter -n monitoring nodeSelector: kubernetes.io/os: windows

-- kubectl delete daemonset node-exporter -n monitoring -- kubectl apply -f D:\KTKJ\Prometheus\node-exporter-daemonset.yaml -- kubectl get daemonset node-exporter-daemonset -n monitoring

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

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

相关文章

HTMLCSS实现网页轮播图

网页中轮播图区域的实现与解析 在现代网页设计中&#xff0c;轮播图是一种常见且实用的元素&#xff0c;能够在有限的空间内展示多个内容&#xff0c;吸引用户的注意力。下面将对上述代码中轮播图区域的实现方式进行详细介绍。 一、HTML 结构 <div class"carousel-c…

Linux:进程的概念

基本概念 课本概念&#xff1a;程序的一个可执行实例&#xff0c;正在执行的程序。 内核观点&#xff1a;担当分配系统资源实体。 当操作系统要执行程序时&#xff0c;也就是说操作系统要执行代码&#xff0c;但一个操作系统需要执行多个程序&#xff0c;而CPU只有一块&#xf…

前端基础之《Vue(10)—过滤器》

一、过滤器 1、作用 用于数据处理。 2、全局过滤器 使用Vue.filter(名称, val>{return newVal})定义。 在任何组件中都可以直接使用。 3、局部过滤器 使用选项&#xff0c;filters: {}定义&#xff0c;只能在当前组件中使用。 4、过滤器在Vue 3.0中已经淘汰了 5、过滤器…

平板电脑做欧盟网络安全法案(EU)2022/30

平板电脑做欧盟网络安全法案&#xff08;EU&#xff09;2022/30 平板电脑做EN18031,平板电脑做无障碍法规EU2019/882 欧盟委员会于2022年通过补充授权法案 &#xff08;EU&#xff09; 2022/30&#xff0c;明确要求无线电设备需满足网络安全、隐私保护及反欺诈要求。 新规时间轴…

Unity中打可选择的AssetBundle,以及URP中加载AssetBundle包Shader丢失问题显示洋红色的解决方案

在上一篇打AssetBundle中已经实现了简单的打AB包和加载,《Unity中打包AssetBundle并加载》,本篇笔记是进一步上一篇最后提出的问题,进行优化。 一、打可选择的AssetBundle 每次打包都会把设置了AssetBundle名称和后缀的所有文件都打包,这也是现在网上教学最多的 但是有时…

解决cannot find attribute `serde` in this scope记录

问题描述&#xff1a; 在Rust中使用serde做json序列化&#xff0c;需要对一个字段指定序列化方法&#xff0c;添加serde注解后报错: error: cannot find attribute serde in this scope --> src\models\order_model.rs:38:7 | 38 | #[serde(deserialize_with &qu…

基于whisper和ffmpeg语音转文本小程序

目录 一、环境准备 ✅ 第一步&#xff1a;安装并准备 Conda 环境 ✅ 第二步&#xff1a;创建 Whisper 专用的 Conda 虚拟环境 ✅ 第三步&#xff1a;安装 GPU 加速版 PyTorch&#xff08;适配 RTX 4060&#xff09; ✅ 第四步&#xff1a;安装 Whisper 和 FFMPEG 依赖 ✅…

Linux GPIO驱动开发实战:Poll与异步通知双机制详解

1. 引言 在嵌入式Linux开发中&#xff0c;GPIO按键驱动是最基础也最典型的案例之一。本文将基于一个支持poll和异步通知双机制的GPIO驱动框架&#xff0c;深入剖析以下核心内容&#xff1a; GPIO中断与防抖处理环形缓冲区设计Poll机制实现异步通知(SIGIO)实现应用层交互方式 …

【最新版】西陆健身系统源码全开源+uniapp前端

一.系统介绍 一款基于UniappThinkPHP开发健身系统&#xff0c;支持多城市、多门店&#xff0c;包含用户端、教练端、门店端、平台端四个身份。有团课、私教、训练营三种课程类型&#xff0c;支持在线排课。私教可以通过上课获得收益&#xff0c;在线申请提现功能&#xff0c;无…

济南国网数字化培训班学习笔记-第二组-6-输电线路现场教学

输电线路现场教学 杆塔组装 角钢塔 角钢-连扳-螺栓 螺栓&#xff08;M&#xff09;&#xff1a; 脚钉-螺栓&#xff08;螺栓头-无扣长-螺纹-螺帽&#xff09;-垫片-螺帽/防盗帽/防松帽M20*45 表示直径20mm&#xff0c;长度45mm螺栓级别由一个类似浮点数表示&#xff0c;如…

抖音的逆向工程获取弹幕(websocket和protobuf解析)

目录 声明前言第一节 获取room_id和ttwid值第二节 signture值逆向python 实现signature第三节 Websocket实现长链接请求protubuf反序列化pushFrame反序列化Response解压和反序列化消息体Message解析应答ack参考博客声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的…

反射,枚举,lambda表达式

目录 反射枚举的使用Lambda表达式函数式接口语法Lambda表达式语法精简 变量捕获Lambda在集合List中的使用 反射 作用&#xff1a;在Java代码中&#xff0c;让一个对象认识到自己 比如一个类的名字&#xff0c;里面的方法&#xff0c;属性等 让程序运行的过程&#xff0c;某个对…

鸿蒙移动应用开发--渲染控制实验

任务&#xff1a;使用“对象数组”、“ForEach渲染”、“Badge角标组件”、“Grid布局”等相关知识&#xff0c;实现生效抽奖卡案例。如图1所示&#xff1a; 图1 生肖抽奖卡实例图 图1(a)中有6张生肖卡可以抽奖&#xff0c;每抽中一张&#xff0c;会通过弹层显示出来&#xf…

webpack基础使用了解(入口、出口、插件、加载器、优化、别名、打包模式、环境变量、代码分割等)

目录 1、webpack简介2、简单示例3、入口(entry)和输出(output)4、自动生成html文件5、打包css代码6、优化&#xff08;单独提取css代码&#xff09;7、优化&#xff08;压缩过程&#xff09;8、打包less代码9、打包图片10、搭建开发环境&#xff08;webpack-dev-server&#xf…

Java快速上手之实验4(接口回调)

1&#xff0e;编写接口程序RunTest.java&#xff0c;通过接口回调实现多态性。解释【代码4】和【代码6】的执行结果为何不同&#xff1f; interface Runable{ void run(); } class Cat implements Runable{ public void run(){ System.out.println("猫急上树.."…

Volcano 实战快速入门 (一)

一、技术背景 随着大型语言模型&#xff08;LLM&#xff09;的蓬勃发展&#xff0c;其在 Kubernetes (K8s) 环境下的训练和推理对资源调度与管理提出了前所未有的挑战。这些挑战主要源于 LLM 对计算资源&#xff08;尤其是 GPU&#xff09;的巨大需求、分布式任务固有的复杂依…

Qwen2.5简要全流程以及QA

1 输入prompt 得到input id input id&#xff1a; [B,L] # batch size , lenth 2 embeding之后得到 input_embeds: [B,L,D] # demensions 3 进入Transformer层 先通过linear层得到shape不变的 QKV 多头注意力 分割Dimension &#xff0c; kv变成 [B,H,L,head_dim] h是…

爬虫学习——Item封装数据与Item Pipeline处理数据

一、Item封装数据 对于有字段的数据&#xff0c;最好的数据结构维护方法为字典类型(dict)&#xff0c;但是由于字典不便于携带元数据和传递给其他组件使用&#xff0c;故可以使用Item类封装爬取到的数据。 这里涉及两个类&#xff1a;Item基类和Field类 两者的使用关系如下&…

【React】状态管理 Context API \ MobX \ Redux

Context APIMobXRedux React有自己状态管理&#xff0c;周边生态也有很多状态管理 Context API 直接从react中引入并调用即可&#xff0c;context包含两个东西&#xff1a; Provider&#xff1a;提供商&#xff08;翻译&#xff09;&#xff0c;提供数据&#xff1b;属性&…

RK3588上编译opencv 及基于c++实现图像的读入

参考博文&#xff1a; https://blog.csdn.net/qq_47432746/article/details/147203889 一、安装依赖包 sudo apt install build-essential cmake git pkg-config libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpe…