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的步骤就已经执行完毕了,祝你们编码开心

相关推荐
云上艺旅11 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
ghostwritten13 小时前
Run Milvus in Kubernetes with Milvus Operator
容器·kubernetes·milvus
duration~15 小时前
K8S自定义CRD
容器·贪心算法·kubernetes
小马爱打代码18 小时前
Kubernetes 中部署 Ceph,构建高可用分布式存储服务
分布式·ceph·kubernetes
云上艺旅19 小时前
K8S学习之基础六十八:Rancher创建deployments资源
学习·云原生·容器·kubernetes·rancher
rider18919 小时前
【4】搭建k8s集群系列(二进制部署)之安装master节点服务(kube-apiserver)
云原生·容器·kubernetes
GreenMountainEcho1 天前
Kubernetes 入门篇之 Node 安装与部署
云原生·容器·kubernetes
ghostwritten1 天前
Rancher Backup
kubernetes·rancher
alden_ygq1 天前
k8s statefulset pod重启顺序
云原生·容器·kubernetes
ghostwritten1 天前
k8s黑科技:Linux+Vagrant+VirtualBox开启Kubernetes奇幻之旅
linux·科技·kubernetes