Prometheus Operator部署
传统的Prometheus监控Kubernetes集群,有所缺陷,比如Prometheus、Alertmanager等组件的高可用,虽然可以通过自定义的方式实现,但是不够灵活。那么Prometheus Operator是一种更高级,更云原生的Kubernetes集群监控方式。其项目地址为:https://github.com/prometheus-operator/kube-prometheus
Operator是由Coreos公司开发,用于扩展Kubernetes API的特定应用程序控制器,用来创建、配置和管理复杂的有状态应用,例如数据库、缓存和监控系统。Prometheus Operator就是基于Operator框架开发的管理Prometheus集群的控制器。
目前,CoreOS官方提供了集中Operator的代码实现,其中就包括了Prometheus Opeartor。其官方的架构图如下:
其中,Operator是核心部分,作为一个控制器。Operator会创建Prometheus、ServiceMonitor、AlertManager及PrometheusRule这4个CRD资源对象,然后监控并维持这4个CRD资源对象的状态。
- Prometheus资源对象是作为Prometheus Server存在的。
- ServiceMonitor资源对象是专门提供metrics数据接口的exporter的抽象。
- Alertmanager资源对象是对应AlertManager组件的抽象
- PrometheusRule资源对象是被Prometheus实例使用的告警规则文件的抽象。
通过以上的4个资源对象,就可以直接对Kubernetes集群直接操作了,上图的Service和ServiceMonitor都是Kubernetes的资源。一个ServiceMonitor可以通过labelSelector匹配一类Service,Prometheus也可以通过labelSelector匹配多个ServiceMonitor,而且Prometheus和AlertManager都是自动感知监控告警配置的变化,需要人为的进行reload操作。Prometheus Operator才是Kubernetes集群监控的终极武器。
Don't forget the beginner's mind