kubernetes v1.22.9部署prometheus-operator
一. prometheus-operator模块介绍

1、Operator是最核心的部分,作为一个控制器,他会去创建Prometheus、PodMonitor、ServiceMonitor、AlertManager以及PrometheusRule这5个CRD资源对象,然后会一直监控并维持这5个资源对象的状态。
2、其中创建的Prometheus这种资源对象就是作为Prometheus Server存在,而PodMonitor和ServiceMonitor就是exporter的各种抽象,是用来提供专门提供metrics数据接口的工具,Prometheus就是通过PodMonitor和ServiceMonitor提供的metrics数据接口去pull数据的,当然alertmanager这种资源对象就是对应的AlertManager的抽象,而PrometheusRule是用来被Prometheus实例使用的报警规则文件。
3、这样我们要在集群中监控什么数据,就变成了直接去操作 Kubernetes 集群的资源对象了,是不是方便很多了。上图中的 Service 和 ServiceMonitor 都是 Kubernetes 的资源,一个 ServiceMonitor 可以通过 labelSelector 的方式去匹配一类 Service,Prometheus 也可以通过 labelSelector 去匹配多个ServiceMonitor。
二. 部署prometheus-operator
- 已有的kubernetes集群

- 项目官网下载地址
选择需要的版本下载(本次使用0.10.0)
https://github.com/prometheus-operator/kube-prometheus.git
- 替换镜像源
sed -i s#k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.3.0#bitnami/kube-state-metrics:2.3.0#g /opt/kubernetes/kube-prometheus-0.10.0/manifests/kube-prometheuskubeStateMetrics-deployment.yaml
sed -i s#k8s.gcr.io/prometheus-adapter/prometheus-adapter:v0.9.1#willdockerhub/prometheus-adapter:v0.9.1#g /opt/kubernetes/kube-prometheus-0.10.0/manifests/prometheusAdapter-deployment.yaml
- 为了后续方便管理对yaml文件进行分类
cd /opt/kubernetes/kube-prometheus-0.10.0/manifests
mkdir Adapter alertmanager blackboxExporter grafana kubeStateMetrics nodeExporter Operator prometheus serviceMonitor
mv prometheusAdapter-* Adapter/
mv alertmanager-* alertmanager/
mv blackboxExporter-* blackboxExporter/
mv grafana-* grafana/
mv kubeStateMetrics-* kubeStateMetrics/
mv nodeExporter-* nodeExporter/
mv prometheusOperator-* Operator/
mv prometheus-* prometheus/
mv *-serviceMonitor* serviceMonitor/
-
更改prometheus,alertmanager,grafana的service类型为nodeport
修改
prometheus/prometheus-service.yaml
grafana/grafana-service.yaml
alertmanager/alertmanager-service.yaml

其他两个同理 -
prometheus和grafana数据持久化
增加nfs持久化存储(nfs-storageclass动态供给)
cat prometheus/prometheus-prometheus.yaml

grafana持久化存储
创建grafana的pvc
cat grafana-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: grafana-pvc
namespace: monitoring
annotations:
volume.beta.kubernetes.io/storage-class: "managed-nfs-storage"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4G
kubectl apply -f grafana-pvc.yaml
cat grafana/grafana-deployment.yaml

7. 部署prometheus-operator
cd /opt/kubernetes/kube-prometheus-0.10.0/manifests
kubectl create -f setup/
kubectl apply -f Adapter/
kubectl apply -f alertmanager/
kubectl apply -f blackboxExporter/
kubectl apply -f grafana/
kubectl apply -f kubeStateMetrics/
kubectl apply -f nodeExporter/
kubectl apply -f Operator/
kubectl apply -f prometheus/
kubectl apply -f serviceMonitor/
这两个为prometheus rule规则,
kubectl apply -f kubePrometheus-prometheusRule.yaml
kubectl apply -f kubernetesControlPlane-prometheusRule.yaml
查看部署情况

三. 页面访问URL
prometheus
http://宿主机ip:nodePort端口

grafana
prometheus-operator自带了很多grafana模板可以使用

grafana导入官方的模板13105

完成
本文介绍了如何在已有Kubernetes集群上部署Prometheus-Operator,包括Operator的作用、核心组件及其工作原理。通过替换镜像源、分类yaml文件、修改服务类型和设置持久化存储,详细阐述了部署过程。最后,提供了访问Prometheus和Grafana的URL,以及导入Grafana的官方模板。

2219

被折叠的 条评论
为什么被折叠?



