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

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 .
http://www.lryc.cn/news/370721.html

相关文章:

  • 【Gradio】快速入门
  • 深度学习Day-19:DenseNet算法实战与解析
  • 基于openssl实现AES ECB加解密
  • Git:从配置到合并冲突
  • leetcode hot100 之 最长公共子序列
  • 短剧APP开发,新的“财富”
  • Uniapp与第三方应用数据通讯
  • AI大模型战场:通用大模型与垂直大模型的角逐
  • linux的一些知识点分享-------关于操作维护的一些知识点
  • Python使用tkinter库设置背景图片、label显示位置和label设置显示图片
  • OpenStack是什么?
  • 2024下《系统规划与管理师》50个高频考点汇总!背就有效
  • 软件游戏提示msvcp140.dll丢失的原因分析及解决方法
  • 备战 清华大学 上机编程考试-冲刺前50%,倒数第3天
  • docker的安装及docker常用命令
  • Dell服务器根据GPU温度调整风扇转速
  • 快捷键专栏 IDEA、Navicat、电脑、Excle、Word等
  • 卸载MySQL5.0,安装MySQL8.0
  • 苹果WWDC重磅发布的IOS 18、Apple Intelligence背后的技术分析!
  • Linux基础IO【II】
  • DevExpress学习系列文章
  • 在大数据时代:为何硬盘仍是数据中心存储的核心
  • 安装TrinityCore NPCBot(尝试中)
  • Java SE LTS版本商用收费,有那些开源的替代方案?
  • Win系统 锁屏自动暂停音乐
  • ffmpeg实现视频播放 ----------- Javacv
  • 解决更新Android Studio后下载Gradle超时
  • 智能合约漏洞类型
  • 6.7.31 使用端到端训练的基于 EfficientNet 的卷积网络在双视图乳房 X 线摄影中进行乳腺癌诊断
  • 访问方法(反射)