• Kubernetes(k8s)上安装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版本:
    在这里插入图片描述

    下载之后如图:
    在这里插入图片描述

    安装项目

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

    tar -zxvf kube-prometheus-0.9.0.tar.gz
    
    • 1

    解压之后如图会出现一个 kube-prometheus-0.9.0 文件夹:
    在这里插入图片描述

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

    cd kube-prometheus-0.9.0/manifests/
    
    • 1

    替换镜像

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

    替换kube-state-metrics

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

    vim kube-state-metrics-deployment.yaml
    
    • 1

    在大概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):

    vim ./prometheus-adapter-deployment.yaml
    
    • 1

    在大概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 ,我们直接修改:

    vim alertmanager-service.yaml
    
    • 1

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

    修改完成后保存并退出。

    修改grafana-service.yaml

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

    vim grafana-service.yaml
    
    • 1

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

    修改prometheus-service.yaml

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

    vim prometheus-service.yaml
    
    • 1

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

    执行这些yaml资源清单文件

    先来到 kube-prometheus-0.9.0 目录:
    在这里插入图片描述

    然后执行下面几行命令:

    kubectl apply --server-side -f manifests/setup
    kubectl wait \
    	--for condition=Established \
    	--all CustomResourceDefinition \
    	--namespace=monitoring
    kubectl apply -f manifests/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    执行结果如图,创建了一堆的资源:
    在这里插入图片描述

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

    watch kubectl get pod -o wide -n monitoring
    
    • 1

    当安装完成之后 STATUS 的值都是 Running ,并且 READY 的值也是全部没有问题的:
    在这里插入图片描述

    访问Grafana

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

    kubectl get svc -o wide -n monitoring | grep grafana
    
    • 1

    可以看到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端口:

    kubectl get svc -o wide -n monitoring | grep prometheus-k8s
    
    • 1

    可以看到Prometheus的NodePort端口是我们自己设置的 30090:
    在这里插入图片描述

    访问进来可以直接到达Prometheus的主页:
    在这里插入图片描述

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

    AlertManager

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

    kubectl get svc -o wide -n monitoring | grep alertmanager-main
    
    • 1

    可以看到端口依然是我们之前设置的30093:
    在这里插入图片描述

    同样访问我们任何一个节点的30093端口就能访问到AlertManager的主页:
    在这里插入图片描述

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

  • 相关阅读:
    基于Docker和MongoDB部署NodeBB论坛系统
    docker容器内网用不了vi
    java网上拍卖系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    ros_serial库
    leetcode_17电话号码的组合
    Ubuntu20.04换源教程、解决主机与虚拟机之间进行文本复制粘贴问题
    Java多线程编程
    iOS代码混淆-从入门到放弃
    计算机网络(7)----应用层
    Django应用部署实战:从开发到生产,全程解析
  • 原文地址:https://blog.csdn.net/m0_51510236/article/details/132601350