基于 Operator 部署 Prometheus 监控 k8s 集群

目录

一、环境准备

1.1 选择版本

1.2 过滤镜像

1.3 修改 yaml 镜像

1.4 移动 *networkPolicy*.yaml

1.5 修改 service 文件

1.6 提前下载镜像并推送到私有镜像仓库

1.7 修改镜像(可选)

二、执行创建

三、查看 pod 状态

四、访问 prometheus、grafana 页面

4.1 访问 prometheus

4.2 访问 grafana

4.2.1 获取可编辑权限


 

        operator 部署是基于已经编写好的 yaml 文件,可以将 prometheus server、altermanager、grafana、node-exporter 等组件一键批量部署。

此次是部署在 k8s-v1.25.4 环境。

一、环境准备

1.1 选择版本

kube-prometheus 官方地址:https://github.com/prometheus-operator/kube-prometheus

选择与 k8s 对应的版本:

1.2 过滤镜像

#1. 克隆项目到本地
[root@k8s-master1 ~]# git clone -b release-0.12 https://github.com/prometheus-operator/kube-prometheus.git#2. 过滤需要的镜像
[root@k8s-master1 ~]# cd kube-prometheus/manifests
[root@k8s-master1 ~/kube-prometheus/manifests]# grep image: ./* -R

1.3 修改 yaml 镜像

        有两个镜像地址为 registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.7.0、registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.10.0 是下载不到的,我们得修改下对应的 yaml 文件:

[root@k8s-master1 ~/kube-prometheus/manifests]# vim kubeStateMetrics-deployment.yamlimage: bitnami/kube-state-metrics:2.7.0name: kube-state-metrics[root@k8s-master1 ~/kube-prometheus/manifests]# vim prometheusAdapter-deployment.yamlimage: registry.cn-hangzhou.aliyuncs.com/ialso/prometheus-adapter:v0.10.0livenessProbe:failureThreshold: 5

1.4 移动 *networkPolicy*.yaml

[root@k8s-master1 ~/kube-prometheus/manifests]# mkdir networkPolicy.bak
[root@k8s-master1 ~/kube-prometheus/manifests]# mv *networkPolicy*.yaml networkPolicy.bak/

1.5 修改 service 文件

#1. 暴露 grafana 的 NodePort 端口
[root@k8s-master1 ~/kube-prometheus/manifests]# vim grafana-service.yaml 
spec:type: NodePortports:- name: httpport: 3000targetPort: httpnodePort: 30300#2. 暴露 prometheus 的 NodePort 端口
[root@k8s-master1 ~/kube-prometheus/manifests]# vim prometheus-service.yaml 
spec:type: NodePortports:- name: webport: 9090targetPort: webnodePort: 30900- name: reloader-webport: 8080targetPort: reloader-webnodePort: 30800

1.6 提前下载镜像并推送到私有镜像仓库

PS:也可以直接使用我已经上传到阿里云的镜像!

# 使用脚本执行下载镜像并推送
[root@k8s-master1 ~/kube-prometheus]# vim images.sh 
#!/bin/bash# 定义目录变量
MANIFESTS_DIR="/root/kube-prometheus/manifests"
ALIYUN_REPO="registry.cn-hangzhou.aliyuncs.com/kube-prometheus_v012/kube-prometheus_v012"# 登录阿里云容器镜像仓库
echo -e "\033[36m开始登录阿里云容器镜像仓库...\033[0m"
if ! sudo docker login --username=zfhxxx registry.cn-hangzhou.aliyuncs.com --password-stdin <<< "xxx."; thenecho -e "\033[31m登录失败,请检查密码的正确性。\033[0m"exit 1
fi# 过滤并提取镜像名称
echo -e "\033[36m正在提取镜像列表...\033[0m"
images=$(grep -ohr "image: \S*" $MANIFESTS_DIR | awk '{print $2}' | sort | uniq)# 成功下载的镜像列表
successful_images=()# 检查并下载镜像
for image in $images; doif [ ! -z "$image" ]; thenecho -e "\033[36m正在下载镜像: $image\033[0m"if docker pull $image; thenecho -e "\033[32m成功下载镜像: $image\033[0m"successful_images+=($image)elseecho -e "\033[31m镜像下载失败: $image\033[0m"continuefifi
done# 处理成功下载的镜像
for image in "${successful_images[@]}"; do# 修改镜像格式,将 ":" 替换为 "-"image_name_with_version=$(echo $image | sed 's|.*/||;s|:|-|')new_image="$ALIYUN_REPO:$image_name_with_version"docker tag $image $new_imageecho -e "\033[36m正在推送镜像: $new_image\033[0m"if ! docker push $new_image; thenecho -e "\033[31m镜像推送失败: $new_image\033[0m"exit 1fi
done# 替换 yaml 文件中的镜像名称
echo -e "\033[36m正在更新 yaml 文件中的镜像名称...\033[0m"
for image in "${successful_images[@]}"; do# 修改原镜像名称格式,将 ":" 替换为 "-"image_name=$(echo $image | sed 's|.*/||')version=$(echo $image_name | sed 's|.*:||;s|:|-|')name=$(echo $image_name | sed "s|:$version||")new_image_format="$ALIYUN_REPO:$name-$version"find $MANIFESTS_DIR -type f -name '*.yaml' -exec sed -i "s|$image|$new_image_format|g" {} +
doneecho -e "\033[32m处理完成。\033[0m"[root@k8s-master1 ~/kube-prometheus]# chmod +x images.sh 
[root@k8s-master1 ~/kube-prometheus]# sh images.sh 

1.7 修改镜像(可选)

如果是在内网环境下,则需要执行此步骤!

        如果是在内网环境,会发现 alertmanager 和 prometheus 起不来,查看详细信息会发现还需要额外拉取一个镜像:quay.io/prometheus-operator/prometheus-config-reloader:v0.62.0

[root@idc-master-01 ~]# kubectl get pods -n monitoring [root@idc-master-01 ~]# kubectl get statefulsets.apps -n monitoring 
NAME                READY   AGE
alertmanager-main   0/3     16h
prometheus-k8s      0/2     16h[root@idc-master-01 ~]# kubectl describe pods -n monitoring alertmanager-main-0
[root@idc-master-01 ~]# kubectl describe pods -n monitoring prometheus-k8s-0 

#1. 下载镜像并推送至私有 Harbor 仓库
[root@idc-master-01 ~]# docker pull quay.io/prometheus-operator/prometheus-config-reloader:v0.62.0
[root@idc-master-01 ~]# docker images |grep prometheus-config
quay.io/prometheus-operator/prometheus-config-reloader                        v0.62.0                                              e31159f5e80c   15 months ago   12.5MB
[root@idc-master-01 ~]# docker tag e31159f5e80c 10.0.x.xxx/google_containers/prometheus-config-reloader:v0.62.0
[root@idc-master-01 ~]# docker push 10.0.x.xxx/google_containers/prometheus-config-reloader:v0.62.0#2. 查找这个镜像实在哪个文件里
[root@idc-master-01 ~]# grep -Rl "quay.io/prometheus-operator/prometheus-config-reloader:v0.62.0" /root/kube-prometheus/manifests
/root/kube-prometheus/manifests/prometheusOperator-deployment.yaml#3. 修改镜像名称
[root@idc-master-01 ~]# vim /root/kube-prometheus/manifests/prometheusOperator-deployment.yamlcontainers:- args:- --kubelet-service=kube-system/kubelet- --prometheus-config-reloader=10.0.x.xxx/google_containers/prometheus-config-reloader:v0.62.0image: 10.0.4.145/google_containers/prometheus-operator:v0.62.0name: prometheus-operator

二、执行创建

注意:每个 kube-prometheus 版本的执行部署命令可能有差异,具体看官方 github!

#1. 先创建资源
[root@k8s-master1 ~/kube-prometheus]# kubectl apply --server-side -f manifests/setup#2. 创建服务
[root@k8s-master1 ~/kube-prometheus]# kubectl apply -f manifests/# 卸载
# kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup

三、查看 pod 状态

[root@k8s-master1 ~/kube-prometheus]# kubectl get pods -n monitoring 
NAME                                  READY   STATUS    RESTARTS        AGE
alertmanager-main-0                   2/2     Running   1 (2m43s ago)   2m56s
alertmanager-main-1                   2/2     Running   1 (2m19s ago)   2m56s
alertmanager-main-2                   2/2     Running   1 (2m43s ago)   2m56s
blackbox-exporter-5d65c768db-79m2p    3/3     Running   0               3m48s
grafana-8444df4945-mqqr5              1/1     Running   0               3m47s
kube-state-metrics-565d4b86d6-frmj2   3/3     Running   0               3m47s
node-exporter-8qb4p                   2/2     Running   0               3m46s
node-exporter-pb5wq                   2/2     Running   0               3m46s
node-exporter-w6bqp                   2/2     Running   0               3m46s
prometheus-adapter-74648d74c7-f2ffp   1/1     Running   0               3m45s
prometheus-adapter-74648d74c7-n8k5j   1/1     Running   0               3m45s
prometheus-k8s-0                      2/2     Running   0               2m54s
prometheus-k8s-1                      2/2     Running   0               2m54s
prometheus-operator-69f4bff8-ppbv9    2/2     Running   0               3m45s[root@k8s-master1 ~/kube-prometheus]# kubectl get svc -n monitoring 
NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                         AGE
alertmanager-main       ClusterIP   10.99.205.58     <none>        9093/TCP,8080/TCP               4m14s
alertmanager-operated   ClusterIP   None             <none>        9093/TCP,9094/TCP,9094/UDP      3m21s
blackbox-exporter       ClusterIP   10.110.84.60     <none>        9115/TCP,19115/TCP              4m14s
grafana                 NodePort    10.107.147.245   <none>        3000:30300/TCP                  112s
kube-state-metrics      ClusterIP   None             <none>        8443/TCP,9443/TCP               4m12s
node-exporter           ClusterIP   None             <none>        9100/TCP                        4m11s
prometheus-adapter      ClusterIP   10.109.105.103   <none>        443/TCP                         4m11s
prometheus-k8s          NodePort    10.99.213.212    <none>        9090:30900/TCP,8080:30800/TCP   37s
prometheus-operated     ClusterIP   None             <none>        9090/TCP                        3m19s
prometheus-operator     ClusterIP   None             <none>        8443/TCP                        4m10s

四、访问 prometheus、grafana 页面

4.1 访问 prometheus

访问连接:http://192.168.170.141:30900/

4.2 访问 grafana

访问连接:http://192.168.170.141:30300/

账号:admin

密码:admin

里面已经定义好大量的模板:

4.2.1 获取可编辑权限

里面有些模版是没有 Edit 编辑按钮的:

解决办法:

点击右上角的设置:

点击 Make editable:

回到模板页面,重新点击模块,出现 Edit 按钮:

上一篇文章:【云原生 | Kubernetes 实战】01、K8s-v1.25集群搭建和部署基于网页的 K8s 用户界面 Dashboard_kubeadm1.25需要最低配置是啥-CSDN博客

下一篇文章:搭建 Hadoop 生态集群大数据监控告警平台_监控hadoop并实现自动告警-CSDN博客

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

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

相关文章

Ceph [OSDI‘06]论文阅读笔记

原论文&#xff1a;Ceph: A Scalable, High-Performance Distributed File System (OSDI’06) Ceph简介及关键技术要点 Ceph是一个高性能、可扩展的分布式文件系统&#xff0c;旨在提供出色的性能、可靠性和可扩展性。为了最大化数据和元数据管理的分离&#xff0c;它使用了一…

2024年第十五届蓝桥杯C/C++B组复盘(持续更新)

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 试题A&#xff1a;握手问题问题描述思路 试题B&#xff1a;小球反弹问题描述思路…

一个令人惊艳的图片高清化重绘神器:SUPIR来了!

今天给大家分享一个将模糊图片还原为照片级高清图像的AI项目&#xff1a;SUPIR。这个项目以尖端的大规模人工智能革新图像恢复技术&#xff0c;通过文本驱动、智能修复&#xff0c;将AI技术与创新思维相结合&#xff0c;赋予每张图像全新的生命力。这个项目的修复能力本质上是一…

AI的说服力如人类?Anthropic最新研究揭秘机器的辩论能力|TodayAI

人们常常对人工智能模型在对话中的说服力表现持怀疑态度。长久以来&#xff0c;社会上一直存在一个疑问&#xff1a;人工智能是否会达到人类那样&#xff0c;在对话中具有改变他人想法的能力&#xff1f; 直到最近&#xff0c;这一领域的实证研究相对有限&#xff0c;对于人工…

零基础使用FlexLua打造LoRa无线气体流量计,硬件轻松快速开发。

在工业领域&#xff0c;对气体流量进行准确监测和管理是保障生产安全和提高效率的重要环节。而LoRa&#xff08;长距离低功耗无线技术&#xff09;作为一种适用于远距离、低功耗的通信技术&#xff0c;为无线传感器网络的建设提供了可靠的解决方案。结合气体流量传感技术&#…

畅游网络:构建C++网络爬虫的指南

概述 随着信息时代的来临&#xff0c;网络爬虫技术成为数据采集和网络分析的重要工具。本文旨在探讨如何运用C语言及其强大的cpprestsdk库构建一个高效的网络爬虫&#xff0c;以便捕捉知乎等热点信息。为了应对IP限制的挑战&#xff0c;我们将引入亿牛云爬虫代理服务&#xff…

NPU流式输出-torch_npu和transformers框架-多线程Streamer-昇腾910B-EE1001

前情提要 torch_npu框架不支持多线程自动set_device 报错详情 直接使用transformers的TextIteratorStreamer进行流式推理&#xff0c;会报错 Exception in thread Thread-6: Traceback (most recent call last):File "/root/anaconda3/envs/AI/lib/python3.9/threadin…

《springcloud alibaba》 六 微服务链路跟踪skywalking

目录 准备调整配置接入多个微服务网关项目调整order-seata项目stock-seata项目测试 接入网关微服务 skywalking持续化到mysql自定义链路跟踪pom .xmlorderControllerOrderServiceOrderDaoOrderTblMapper.xml测试 性能剖析日志tid打印pom.xmllogback-spring.xml日志收集启动项目…

OSI七层网络模型 —— 筑梦之路

在信息技术领域&#xff0c;OSI七层模型是一个经典的网络通信框架&#xff0c;它将网络通信分为七个层次&#xff0c;每一层都有其独特的功能和作用。为了帮助记忆这七个层次&#xff0c;有一个巧妙的方法&#xff1a;将每个层次的英文单词首字母组合起来&#xff0c;形成了一句…

TensorFlow-GPU安装

第一步&#xff1a;安装Anaconda、cuda以及对应的cudNN&#xff0c;其中TensorFlow-GPU对应版本如下图所示&#xff1a; 想看最新的话&#xff0c;可以看官方链接&#xff1a;https://www.tensorflow.org/install/source_windows?hlzh-cn 第二步&#xff1a;创建对应的虚拟环…

在Windows上安装Go编译器并配置Golang开发环境

文章目录 1、安装Go语言编译程序1.1、下载GoLang编译器1.2、安装GoLang编译器 2、配置Golang IDE运行环境2.1、配置GO编译器2.1.1、GOROOT 概述2.1.2、GOROOT 作用2.1.2、配置 GOROOT 2.2、配置GO依赖管理2.2.1、Module管理依赖2.2.2、GOPATH 管理依赖 2.3、运行GO程序2.3.1、创…

【面试经典 150 | 数学】直线上最多的点数

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;枚举直线遍历统计方法二&#xff1a;枚举斜率哈希统计 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并…

改进的注意力机制的yolov8和UCMCTrackerDeepSort的多目标跟踪系统

基于yolov8和UCMCTracker/DeepSort的注意力机制多目标跟踪系统 本项目是一个强大的多目标跟踪系统&#xff0c;基于[yolov8]链接和[UCMCTracker/DeepSot]/链接构建。 &#x1f3af; 功能 多目标跟踪&#xff1a;可以实现对视频中的多目标进行跟踪。目标检测&#xff1a;可以实…

在 VS Code 中使用 GitHub Copilot

Code 结合使用。 GitHub Copilot 是什么 GitHub Copilot 是一个可以帮助你更简单、更快速地编写代码的工具&#xff0c;由 GPT-3 提供支持。你只需编写所需代码的描述——例如&#xff0c;编写一个函数来生成一个随机数&#xff0c;或对一个数组进行排序——Copilot 就会为你…

【Docker】docker原理及使用-1

Docker目录 1️⃣概念2️⃣使用容器的好处2️⃣docker和普通软件启动方式的区别2️⃣docker和传统虚拟机的区别 1️⃣下载安装2️⃣安装步骤 1️⃣必须要掌握的核心概念1️⃣命令2️⃣例子2️⃣练习题目2️⃣进入一下python环境(简洁) 1️⃣解释一下 redis1️⃣docker底层隔离机…

L3 【哈工大_操作系统】操作系统启动

本节要点&#xff1a; 1、理解 OS 启动过程发生了什么&#xff0c;理解 OS 与 硬件 与 应用 之间的关系 2、本节讲解了 setup 模块 和 system 模块实现的功能 1、计算机上电时&#xff0c;操作系统在硬盘&#xff08;磁盘&#xff09;上&#xff0c;为了“取指执行”&#xff0…

康姿百德床垫抗干扰设计,保证你和伴侣睡眠不受影响

康姿百德官网价格公开透明&#xff0c;床垫价格合理质量安全可靠 在我们的一生中&#xff0c;睡眠的时间占据我们生活的大部分。在繁忙的一天结束时&#xff0c;没有什么比沉浸在舒适床垫的温柔拥抱中更让人期待的&#xff0c;让您在睡眠过程中释放一整天的疲惫。康姿百德床垫…

第十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组

试题 C: 好数 时间限制 : 1.0s 内存限制: 256.0MB 本题总分&#xff1a;10 分 【问题描述】 一个整数如果按从低位到高位的顺序&#xff0c;奇数位&#xff08;个位、百位、万位 &#xff09;上 的数字是奇数&#xff0c;偶数位&#xff08;十位、千位、十万位 &…

基于Spring Boot的入职匹配推荐系统设计与实现

基于Spring Boot的入职匹配推荐系统设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 管理员登录界面&#xff0c;登录成功后进入到系统操…

面试经典150题——二叉树的最大深度

1. 题目描述 ​ 2. 题目分析与解析 这个题目有过一定基础的都应该知道&#xff0c;采用递归解决问题&#xff0c;因为要求一个二叉树的深度&#xff08;也就是高度&#xff09;&#xff0c;其实上就是根节点的左子树和右子树中高度最高的那个。因此这个问题就可以拆解为&…