k8s搭建kube-prometheus

发布于:2025-03-24 ⋅ 阅读:(23) ⋅ 点赞:(0)

后续再补一个k8s集群搭建的博客,从0开始搭建k8s集群。使用kube-prometheus非常方便,主要问题只在于拉取镜像。除了拉取镜像外其他时间5分钟即可。耐心等待拉取镜像。

一.kube-prometheus简介

kube-prometheus 是一个专为 Kubernetes 设计的开源监控解决方案,基于 Prometheus 生态构建,旨在简化集群监控组件的部署和管理。

仓库地址:https://github.com/prometheus-operator/kube-prometheus/tree/main

组件与架构

  • Prometheus Operator
    • 自动化管理 Prometheus、Alertmanager 等资源的控制器,通过 Kubernetes 自定义资源(CRD)定义监控规则和服务发现逻辑,动态生成配置文件
    • 支持高可用部署(如 StatefulSet)和数据持久化(Persistent Volume)
  • Prometheus Server
    • 核心时序数据库,负责指标采集、存储和告警规则评估
    • 支持动态服务发现(如 Kubernetes 节点、ServiceMonitor)和静态配置
  • ​Alertmanager
    • 集中处理告警信息,提供去重、分组、路由(邮件/Webhook)等功能
  • Grafana
    • 可视化平台,内置预配置的 Kubernetes 监控仪表盘(如节点资源使用、Pod 状态等)
  • ServiceMonitor
    • 自定义资源,定义 Prometheus 如何从 Kubernetes Service 抓取指标(如选择器匹配标签、端口配置)
  • ​辅助组件
    • ​Node Exporter:采集节点级指标(CPU/内存/磁盘)
    • ​kube-state-metrics:转换 Kubernetes 资源状态为 Prometheus 可识别的指标(如 Deployment 副本数)
    • ​Thanos Sidecar/Query:实现长期存储和跨集群查询(高可用场景)

二. 前置环境

1.操作系统配置

三台centos7.9的服务器

在这里插入图片描述

2.k8s集群

搭建部分可以看另一个文章。

版本为1.20.9
在这里插入图片描述

只需要配置网络插件即可,不用配ingress

在这里插入图片描述

三.拉取仓库以及apply yaml文件

1.git拉取仓库

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查阅资料发现1.20的版本对应的是release-0.8的版本,直接加-b拉取对应版本即可

git clone https://github.com/prometheus-operator/kube-prometheus.git -b release-0.8

下完后有如下文件

在这里插入图片描述

2. apply配置文件

直接在github官网拿去配置命令即可,注意不同的release版本命令不太一样。我的是0.8版本

第二行代码要进入setup文件执行,再cd…出来运行第三行代码

# Create the namespace and CRDs, and then wait for them to be available before creating the remaining resources
kubectl create -f manifests/setup
until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
kubectl create -f manifests/

这里创建的东西都会在monitoring这个命名空间里,查询容器时注意加命名空间,拉取时间比较长,耐心等待20分钟。

在这里插入图片描述

其实执行完这两个步骤如果能够全部runing起来就很容易了,但是大部分情况下有部分容器会拉取不到。所以可以使用dockerhub来拉起镜像

3.拉取不到镜像的解决办法

在这里插入图片描述

假设我这个pod拉取不下来,处于rollback状态之类的状态,我们可以直接进入menifests文件夹找到这个名字的deployment.yaml

在这里插入图片描述

vim进入该文件后找到image,把它改成一个可以使用的,原本是一个k8s.io的image,我找到的是图片中的这个image地址,改完保存出来apply后下载起来就快了

apply -f kube-state-metrics-deployment.yaml  

在这里插入图片描述

4.dockerhub上查询images

如何找到上面的image网址呢?可以直接上浏览器打开dockerhub.com,最好使用梯子

在这里插入图片描述

search栏直接搜索你要的镜像,比如我要的镜像是kube-state-metrics的2.0.0版本

那就直接搜索kube-state-metrics即可

在这里插入图片描述

点进去点击tag再查询跟你一样的版本即可,注意选择版本号就行,不带其他字符

在这里插入图片描述

四.修改部分服务TYPE使其对外部可见

需要将alertmanger-main,grafana和node-exporter的type修改为nodeport,才能够在浏览器中访问

在这里插入图片描述

1.修改alertmanger-service.yaml

在spec中加入type

在这里插入图片描述

执行

kubectl apply -f alertmanager-service.yaml

改完后再次查看svc,可以看到alertmanger-main的type已经变成了NodePort,并且其端口号映射到了32104

在这里插入图片描述

这时我们访问主机的32104端口号就可以进入alertmanger的界面了

在这里插入图片描述

2.修改grafana-service.yaml

同上在spce中加入type字段

在这里插入图片描述

再执行

kubectl apply -f grafana-service.yaml 

可以看到grafana也变成了nodeport,同时其端口也对外暴露了

在这里插入图片描述

在浏览器中打开32667端口,能够正常进入界面

在这里插入图片描述

3.修改prometheus-service.yaml

同上在spce中加入type字段
在这里插入图片描述

再执行

kubectl apply -f prometheus-service.yaml

可以看到prometheus-k8s的type变为了nodeport,同时暴露其端口

在这里插入图片描述

在浏览器中打开31695端口,能够正常进入界面

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到