标签:抽象 使用方法 集合 selector 利用 container 知识 数据接口 metadata
Operator
是由CoreOS公司开发的,用来扩展 Kubernetes API,特定的应用程序控制器,它用来创建、配置和管理复杂的有状态应用,如数据库、缓存和监控系统。Operator
基于 Kubernetes 的资源和控制器概念之上构建,但同时又包含了应用程序特定的一些专业知识,比如创建一个数据库的Operator
,则必须对创建的数据库的各种运维方式非常了解,创建Operator
的关键是CRD
(自定义资源)的设计。
CRD
是对 Kubernetes API 的扩展,Kubernetes 中的每个资源都是一个 API 对象的集合,例如我们在YAML文件里定义的那些spec
都是对 Kubernetes 中的资源对象的定义,所有的自定义资源可以跟 Kubernetes 中内建的资源一样使用 kubectl 操作。
Operator
是将运维人员对软件操作的知识给代码化,同时利用 Kubernetes 强大的抽象来管理大规模的软件应用。目前CoreOS
官方提供了几种Operator
的实现,其中就包括我们今天的主角:Prometheus Operator
,Operator
的核心实现就是基于 Kubernetes 的以下两个概念:
当然我们如果有对应的需求也完全可以自己去实现一个Operator
,接下来我们就来给大家详细介绍下Prometheus-Operator
的使用方法。
首先我们先来了解下Prometheus-Operator
的架构图:
上图是Prometheus-Operator
官方提供的架构图,其中Operator
是最核心的部分,作为一个控制器,他会去创建Prometheus
、ServiceMonitor
、AlertManager
以及PrometheusRule
4个CRD
资源对象,然后会一直监控并维持这4个资源对象的状态。
主要部分:
其中创建的prometheus
这种资源对象就是作为Prometheus Server
存在,而ServiceMonitor
就是exporter
的各种抽象,exporter
前面我们已经学习了,是用来提供专门提供metrics
数据接口的工具,Prometheus
就是通过ServiceMonitor
提供的metrics
数据接口去 pull 数据的,当然alertmanager
这种资源对象就是对应的AlertManager
的抽象,而PrometheusRule
是用来被Prometheus
实例使用的报警规则文件。
这样我们要在集群中监控什么数据,就变成了直接去操作 Kubernetes 集群的资源对象了,是不是方便很多了。上图中的 Service 和 ServiceMonitor 都是 Kubernetes 的资源,一个 ServiceMonitor 可以通过 labelSelector 的方式去匹配一类 Service,Prometheus 也可以通过 labelSelector 去匹配多个ServiceMonitor。
采用 helm chart 方式安装
官网地址:https://github.com/coreos/prometheus-operator
$kubectl create ns monitoring helm repo add coreos https://s3-eu-west-1.amazonaws.com/coreos-charts/stable/ helm install coreos/prometheus-operator --name prometheus-operator --namespace monitoring
kube-prometheus
官网地址:https://github.com/coreos/kube-prometheus
helm install coreos/kube-prometheus --name kube-prometheus --namespace monitoring # 采用域名方式访问,添加 grafana 的 ingress cat>grafana-ingress.yaml<<EOF apiVersion: extensions/v1beta1 kind: Ingress metadata: name: kube-prometheus-grafana namespace: monitoring spec: rules: - host: grafana.domain.com http: paths: - path: / backend: serviceName: kube-prometheus-grafana servicePort: 80 EOF kubectl apply -f grafana-ingress.yaml #deployments kube-prometheus-exporter-kube-state 的images无法下载,改为国内镜像 #将 images 地址前缀为 registry.cn-hangzhou.aliyuncs.com/google_containers kubectl edit deploy kube-prometheus-exporter-kube-state -n monitoring #关闭 grafana 匿名身份验证 kubectl edit deploy kube-prometheus-grafana -n monitoring #将env GF_AUTH_ANONYMOUS_ENABLED改到false - name: GF_AUTH_ANONYMOUS_ENABLED value: "false"
prometheus-operator监控Kubernetes
标签:抽象 使用方法 集合 selector 利用 container 知识 数据接口 metadata
原文地址:https://www.cnblogs.com/Dev0ps/p/11126942.html