一、简介
1.1 Prometheus Operator工作原理
从概念上来讲Operator就是针对管理特定应用程序的,在Kubernetes基本的Resource和Controller的概念上,以扩展Kubernetes api的形式。帮助用户创建,配置和管理复杂的有状态应用程序。从而实现特定应用程序的常见操作以及运维自动化。
在Kubernetes中我们使用Deployment、DamenSet,StatefulSet来管理应用Workload,使用Service,Ingress来管理应用的访问方式,使用ConfigMap和Secret来管理应用配置。我们在集群中对这些资源的创建,更新,删除的动作都会被转换为事件(Event),Kubernetes的Controller Manager负责监听这些事件并触发相应的任务来满足用户的期望。这种方式我们成为声明式,用户只需要关心应用程序的最终状态,其它的都通过Kubernetes来帮助我们完成,通过这种方式可以大大简化应用的配置管理复杂度。
而除了这些原生的Resource资源以外,Kubernetes还允许用户添加自己的自定义资源(Custom Resource)。并且通过实现自定义Controller来实现对Kubernetes的扩展。
如下所示,是Prometheus Operator的架构示意图:
Prometheus的本质就是一组用户自定义的CRD资源以及Controller的实现,Prometheus Operator负责监听这些自定义资源的变化,并且根据这些资源的定义自动化地完成如Prometheus Server自身以及配置的自动化管理工作。
1.2 Prometheus Operator作用
要了解Prometheus Operator能做什么,其实就是要了解Prometheus Operator为我们提供了哪些自定义的Kubernetes资源,列出了Prometheus Operator目前提供的️4类资源:
- Prometheus:声明式创建和管理Prometheus Server实例;
- ServiceMonitor:负责声明式的管理监控配置;
- PrometheusRule:负责声明式的管理告警配置;
- Alertmanager:声明式的创建和管理Alertmanager实例。
简言之,Prometheus Operator能够帮助用户自动化的创建以及管理Prometheus Server以及其相应的配置。
二、实战配置
2.1部署Prometheus Operator
#github项目地址,直接使用git拉下来即可
https://github.com/prometheus-operator/kube-prometheus
[root@k8smaster ~]#git clone https://github.com/prometheus-operator/kube-prometheus
#主要使用项目目录为`manifests`
[root@k8smaster manifests]# pwd
/root/kube-prometheus/manifests
#开始创建所有服务
[root@k8smaster manifests]kubectl create -f ./setup
[root@k8smaster manifests]kubectl create -f .
#部署完成确认
[root@k8smaster manifests]# kubectl -n monitoring get all
NAME READY STATUS RESTARTS AGE
pod/alertmanager-main-0 2/2 Running 0 13d
pod/alertmanager-main-1 2/2 Running 0 13d
pod/alertmanager-main-2 2/2 Running 0 13d
pod/blackbox-exporter-6798fb5bb4-64knd 3/3 Running 0 13d
pod/grafana-77f997786c-4gbrh 1/1 Running 0 3h58m
pod/kube-state-metrics-bdb774b4d-mkrvk 3/3 Running 0 13d
pod/node-exporter-hn54g 2/2 Running 0 13d
pod/node-exporter-jjxmr 2/2 Running 0 13d
pod/node-exporter-qnppx 2/2 Running 0 13d
pod/prometheus-adapter-5b8db7955f-6s97n 1/1 Running 0 13d
pod/prometheus-adapter-5b8db7955f-bp9bb 1/1 Running 0 13d
pod/prometheus-k8s-0 2/2 Running 0 5h20m
pod/prometheus-k8s-1 2/2 Running 0 5h20m
pod/prometheus-operator-5685494db7-tphkp 2/2 Running 0 13d
.......
2.2 web界面查看
#通过查看server端口访问web界面
[root@k8smaster manifests]# kubectl get svc -n monitoring
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
prometheus-k8s NodePort 10.107.194.41 <none> 9090:32523/TC
所有监控都正常即可打开grafana查看服务自带的监控面板