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

相关推荐
水宝的滚动歌词8 小时前
K8S单节点部署及集群部署
云原生·容器·kubernetes
yohoo菜鸟10 小时前
kubernetes简单入门实战
云原生·容器·kubernetes
狂奔solar13 小时前
分享个好玩的,在k8s上部署web版macos
前端·macos·kubernetes
@东辰18 小时前
【golang-技巧】-自定义k8s-operator-by kubebuilder
开发语言·golang·kubernetes
小安运维日记18 小时前
CKA认证 | Day3 K8s管理应用生命周期(上)
运维·云原生·容器·kubernetes·云计算·k8s
陈小肚18 小时前
k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储
docker·容器·kubernetes
politeboy20 小时前
关于k8s中镜像的服务端口被拒绝的问题
云原生·容器·kubernetes
weixin_4381973820 小时前
K8S创建云主机配置docker仓库
linux·云原生·容器·eureka·kubernetes
皮锤打乌龟1 天前
(干货)Jenkins使用kubernetes插件连接k8s的认证方式
运维·kubernetes·jenkins
ggaofeng1 天前
通过命令学习k8s
云原生·容器·kubernetes