环境准备
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
解压之后如图会出现一个 kube-prometheus-0.9.0 文件夹:
我们先去到 kube-prometheus-0.9.0/manifests 目录当中:
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):
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):
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 ,我们直接修改:
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 ,我们直接修改:
vim grafana-service.yaml
操作步骤一样,这里不再过多赘述,但要注意端口号不要冲突:
修改prometheus-service.yaml
这个文件在 kube-prometheus-0.9.0/manifests/prometheus-service.yaml ,我们直接修改:
vim prometheus-service.yaml
操作步骤一样,这里不再过多赘述,但要注意端口号不要冲突: