Kubernetes(k8s)上安装Prometheus和Grafana监控

Kubernetes上安装Prometheus和Grafana监控

环境准备

Kubernetes准备

当然前提环境是你得先有一个Kubernetes集群,版本在v1.21.*~v1.27.*之间,当然我已经准备好了Kubernetes:

可以看到我准备的Kubernetes版本为1.21.14的,符合要求。本篇文章也以这个版本来进行安装,上面提到的版本安装步骤和这个版本大体相同,按照步骤来即可。

安装项目

因为在Kubernetes上安装Prometheus很麻烦,所以有一些大佬在Github上贡献了一些安装它们的项目,这次我推荐使用的项目是 kube-prometheus ,地址为:https://github.com/prometheus-operator/kube-prometheus,但是你要注意安装 kube-prometheus 的版本,版本的对应列表:

Kubernetes版本 Kube-prometheus版本
1.21.* 0.9.0
1.22.* 0.9.0、0.10.0
1.23.* 0.10.0、0.11.0
1.24.* 0.11.0、0.12.0
1.25.* 0.12.0
1.26.* main
1.27.* main

如图:

要注意最好不要使用main分支的项目,因为还没有正式发版,所以建议使用1.25.*以下的Kubernetes

开始安装

下载安装的项目

来到这个网址:https://github.com/prometheus-operator/kube-prometheus/releases,选择对应版本的发行版本进行下载,因为我的Kubernetes安装的是1.21.*,所以我下载的是0.9.0版本:

下载之后如图:

安装项目

我们先将这个项目给解压:

bash 复制代码
tar -zxvf kube-prometheus-0.9.0.tar.gz

解压之后如图会出现一个 kube-prometheus-0.9.0 文件夹:

我们先去到 kube-prometheus-0.9.0/manifests 目录当中:

bash 复制代码
cd kube-prometheus-0.9.0/manifests/

替换镜像

因为有部分镜像是在 k8s.gcr.io 上拉取的,这个镜像是谷歌上的,国内拉取不下来,所以我们要修改一下拉取地址。因为dockerhub上已经有人提供了这个镜像的替代品,所以我们这里可以直接替换

替换kube-state-metrics

修改 ./kube-state-metrics-deployment.yaml 文件(在kube-prometheus-0.9.0/manifests/kube-state-metrics-deployment.yaml):

bash 复制代码
vim kube-state-metrics-deployment.yaml

在大概34行这个位置有 k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.1.1 镜像(版本号可能不同,不影响安装):

在dockerhub上查询收藏最多的:

选择相同的版本号(⚠️注意这个版本号没有v前缀):

所以我们将 k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.1.1 改为 docker.io/bitnami/kube-state-metrics:2.1.1 (加上docker.io前缀):

替换prometheus-adapter

修改 ./prometheus-adapter-deployment.yaml 文件(在kube-prometheus-0.9.0/manifests/prometheus-adapter-deployment.yaml):

bash 复制代码
vim ./prometheus-adapter-deployment.yaml

在大概34行这个位置有 k8s.gcr.io/prometheus-adapter/prometheus-adapter:v0.9.0 镜像(版本号可能不同,不影响安装):

我们在此来到dockerhub搜索,同样使用这个下载和收藏最多的:

同样注意版本号对应:

所以我们将 k8s.gcr.io/prometheus-adapter/prometheus-adapter:v0.9.0 改为 docker.io/willdockerhub/prometheus-adapter:v0.9.0 (加上docker.io前缀):

修改Service

因为有一些我们需要外部访问的Service设置的类型是ClusterIP,所以我们要将它改为NodePort或LoadBalancer

修改alertmanager-service.yaml

这个文件在 kube-prometheus-0.9.0/manifests/alertmanager-service.yaml ,我们直接修改:

bash 复制代码
vim alertmanager-service.yaml

按照图片提示修改,在 spec 下新增一行 type: NodePort 修改类型为 NodePort,然后再在 spec.ports 下面新增一行 nodePort: 30093 修改nodePort端口为 30093 这个端口可以自行指定 30000~32767 之间的端口:

修改完成后保存并退出。

修改grafana-service.yaml

这个文件在 kube-prometheus-0.9.0/manifests/grafana-service.yaml ,我们直接修改:

bash 复制代码
vim grafana-service.yaml

操作步骤一样,这里不再过多赘述,但要注意端口号不要冲突:

修改prometheus-service.yaml

这个文件在 kube-prometheus-0.9.0/manifests/prometheus-service.yaml ,我们直接修改:

bash 复制代码
vim prometheus-service.yaml

操作步骤一样,这里不再过多赘述,但要注意端口号不要冲突:

执行这些yaml资源清单文件

先来到 kube-prometheus-0.9.0 目录:

然后执行下面几行命令:

bash 复制代码
kubectl apply --server-side -f manifests/setup
kubectl wait \
	--for condition=Established \
	--all CustomResourceDefinition \
	--namespace=monitoring
kubectl apply -f manifests/

执行结果如图,创建了一堆的资源:

我们使用以下命令查询是否创建成功:

bash 复制代码
watch kubectl get pod -o wide -n monitoring

当安装完成之后 STATUS 的值都是 Running ,并且 READY 的值也是全部没有问题的:

访问Grafana

使用这行命令查看grafana的端口:

bash 复制代码
kubectl get svc -o wide -n monitoring | grep grafana

可以看到grafana对外部访问的nodePort端口为 30300,这也是我们之前设置的值:

我们直接通过浏览器访问任何一个节点的IP地址带上这个端口就可以访问到grafana了:

默认的用户名和密码是 admin/admin ,我们可以直接登陆,登陆之后要我们从新设置密码,为你们的admin用户从新设置一个新密码即可:

接下来我们就访问到Grafana的主页了:

按照我的提示点击 Dashboards -> Manage

然后再展开这个Default:

可以看到有很多的 kube-prometheus 已经为我们准备好的Dashboard:

我们选择 Node Exporter/Nodes 的 Dashboard 进去:

这个里面可以看到各个节点的 CPU 和内存信息:

点击 Kubernetes/Networking/Cluster 进去:

可以看到各个命名空间下的网络访问情况;

好的,更多的Dashboard你们可以自己去查看

其他系统的访问

Prometheus

使用以下命令查看Prometheus的NodePort端口:

bash 复制代码
kubectl get svc -o wide -n monitoring | grep prometheus-k8s

可以看到Prometheus的NodePort端口是我们自己设置的 30090:

访问进来可以直接到达Prometheus的主页:

然后你可以对Prometheus做一些你想要的操作

AlertManager

我们可以直接通过以下命令查询 alertmanager 的NodePort端口:

bash 复制代码
kubectl get svc -o wide -n monitoring | grep alertmanager-main

可以看到端口依然是我们之前设置的30093:

同样访问我们任何一个节点的30093端口就能访问到AlertManager的主页:

好了,Kubernetes上搭建Prometheus和Grafana的步骤就已经执行完毕了,祝你们编码开心

相关推荐
tb_first7 小时前
k8sday11服务发现(2/2)
docker·云原生·容器·kubernetes·k8s
zxcxylong9 小时前
almalinux9.6系统:k8s可选组件安装(1)
云原生·容器·kubernetes·metrics·almalinux·hpa·vpa
一个天蝎座 白勺 程序猿13 小时前
Apache IoTDB(4):深度解析时序数据库 IoTDB 在Kubernetes 集群中的部署与实践指南
数据库·深度学习·kubernetes·apache·时序数据库·iotdb
xiao-xiang15 小时前
redis-集成prometheus监控(k8s)
数据库·redis·kubernetes·k8s·grafana·prometheus
MANONGMN21 小时前
Kubernetes(K8s)常用命令全解析:从基础到进阶
云原生·容器·kubernetes
Johny_Zhao1 天前
基于 Docker 的 LLaMA-Factory 全流程部署指南
linux·网络·网络安全·信息安全·kubernetes·云计算·containerd·yum源·系统运维·llama-factory
陈陈CHENCHEN1 天前
【Kubernetes】在 K8s 上部署 Prometheus
kubernetes·prometheus
郝同学的测开笔记1 天前
从漏洞到防护:如何为你的CronJob添加RBAC安全层?
云原生·kubernetes·测试
deeper_wind2 天前
k8s-单主机Master集群部署+单个pod部署lnmp论坛服务(小白的“升级打怪”成长之路)
云原生·容器·kubernetes
zhenshanrenhao2 天前
#买硬盘欲安装k8s记
云原生·容器·kubernetes