10分钟在K8s中部署目前最热门的监控系统
创始人
2025-07-09 14:31:44
0

前言

K8s本身不包含内置的监控工具,所以市场上有不少这样监控工具来填补这一空白,但是没有一个监控工具有k8s全家桶使用率高,因为它由 CNCF维护,已经成为了监控 k8s 集群的事实上的行业标准,下面介绍一下如何在K8s快速部署一个kube-prometheus项目,来实现对k8s 相关资源监控与告警

kube-prometheus介绍

图片图片

kube-prometheus是一个完整的监控解决方案,可以轻松地将其部署到 Kubernetes 集群中,它包括以下内容

1. Prometheus 用于度量收集

2. Alertmanager 用于指标警报和通知

3. Grafana 用于图形用户界面

4. 一组特定于K8s的exporters,用作指标收集代理

5. 使用 Prometheus Operator 来简化和自动化该堆栈的设置

快速安装

在将 kube-prometheus部署到 k8s 集群之前,先确认与你的 k8s匹配的是版本,然后在下载

图片图片

下载

执行kubectl version 查看k8s 版本,下载对应版本

图片图片

由于本人的 k8s 版本为 v1.25.13,所以下载kube-prometheus-0.12.0

wget https://github.com/prometheus-operator/kube-prometheus/archive/refs/tags/v0.12.0.zip

解压

tar -zxvf kube-prometheus-0.12.0.zip & cd kube-prometheus-0.12.0

修改镜像地址

由于网络原因,kube-state-metrics和prometheus-adapter镜像地址,在国内无法下载,因此需要修改以下地址:

vi manifests/kubeStateMetrics-deployment.yaml

image: bitnami/kube-state-metrics:2.7.0

vi manifests/prometheusAdapter-deployment.yaml

image: cloveropen/prometheus-adapter:v0.10.0

访问配置

为了可以从外部访问 Prometheus、Grafana、Alertmanager,需要修改 service 类型为 NodePort 类型。

修改 Prometheus 的 service

vi manifests/prometheus-service.yaml

# 设置对外访问端口,增加如下两行
type: NodePort
nodePort: 31922

图片图片

修改 Grafana 的 service

vi manifests/grafana-service.yaml

# 设置对外访问端口,增加如下两行
type: NodePort
nodePort: 30300

图片图片

修改 Alertmanager 的 service

vi manifests/alertmanager-service.yaml

# 设置对外访问端口,增加如下两行
type: NodePort
nodePort: 30200

图片图片

安装

在kube-prometheus-0.12.0目录下执行以下命令进行安装

kubectl apply --server-side -f manifests/setup
kubectl apply -f manifests/

执行完成以后,访问monitoring 空间,查看部署状态,可以看到启动成功,并且都是高可用部署

kubectl get pods -n monitoring

图片图片

验证

Prometheus验证

选一台 node 节点ip+31922,即可访问prometheus的 Web UI

图片图片

Alertmanager验证

选一台 node 节点ip+30200,即可访问alertmanager的 Web UI,可以看到有一些报警,由于alertmanager的报警配置比较复杂同时对国内的通讯工具支持有限,因此可以使用PrometheusAlert进行告警配置

图片图片

Grafana验证

选一台 node 节点ip+30300,即可访问grafana的 Web UI,默认用户名密码:admin/admin,登录会提示更改密码,登录以后,可以看到已经内置了不少监控大盘

集群资源监控集群资源监控

图片图片

节点资源监控,可以看到当前节点部署了哪些 pod,以及对应的负载是多少

图片图片

卸载

执行以下命令即可卸载相关组件

kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup

存在的问题

持久存储

以上我们安装未使用持久化存储,所以如果Prometheus或者Grafana重启,那么采集的数据和自定义的仪表盘等数据会丢失,因此如果考虑在生产环境使用,需要把数据使用存储卷挂载至文件系统。

Grafana显示时间问题

由于grafana默认时区是UTC,比中国时间慢了8小时,很不便于日常监控查看,需要进行修改,如下图

图片图片

因此需要调整成中国时间,utc+8,替换grafana-dashboardDefinitions.yaml

sed -i '' 's/utc/utc+8/g' grafana-dashboardDefinitions.yaml
sed -i '' 's/UTC/UTC+8/g' grafana-dashboardDefinitions.yaml
grep -i timezone grafana-dashboardDefinitions.yaml

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...