什么是 Operator?
Operator
是由CoreOS
公司开发的,用来扩展kubernetes APi
的特定的应用程序控制器,Operator
基于Kubernetes的资源和控制器概念之上构建,但同时又包含了对相应应用程序特定的一些专业知识。创建operator
的关键是 CRD(CustomResourceDefinition)
的设计。
Prometheus Operator
Prometheus Operator
是CoreOS公司提供的基于Prometheus及其相关监视组件对Kubernetes集群组件的管理,该Operator目的是简化和自动化针对Kubernetes集群的基于Prometheus的管理及配置。
Prometheus Operator架构组件
- Operator:作为Prometheus Operator的核心组件,也即是自定义的控制器,用来监视和部署管理Prometheus Operator CRD资源对象,监控并维持CRD资源状态。
- Prometheus Server:Operator 根据自定义资源 Prometheus 类型中定义的内容而部署的Prometheus Cluster
- Prometheus Operator CRD:
Prometheus
:以CRD资源提供给Operator的类似于Pod资源清单定位的资源。ServiceMonitor
:声明定义对Kubernetes Services资源进行监控,使用标签选择器来选择所需配置的监控,后端是Service的Endpoint,通过Service标签选择器获取EndPoint对象。PodMonitor
:使用标签选择器,选择对匹配Pod进行监控Alertmanager
:声明定义了Alertmanager在Kubernetes中运行所提供的配置。PrometheusRule
: 声明定义了Prometheus在Kubernetes中运行所需的Rule配置。
reference
Prometheus Operator监控二进制kubernetes
查看兼容性列表选择对应的版本来下载,此处kubernetes集群为1.8.10 。
对应地址为 https://github.com/prometheus-operator/kube-prometheus.git
,可以在域名后添加.cnpmjs.org
访问中国的github加速。
|
|
资源清单在项目目录 manifests
CRD在 manifests/setup
需要先安装CRD 和 Operator 对象
kube-controller-manager 和 kube-scheduler 无监控数据
二进制部署的Kubernetes集群中部署Prometheus Operator,会发现在prometheus server
的页面上发现kube-controller
和kube-schedule
的target为0/0。匹配不到节点信息,这是因为serviceMonitor
是根据label
去选取svc
的。此处svc并没有kube-controller
和kube-schedule
需要手动创建。
|
|
此处需要注意的是:需要修改对应的Prometheus Operator资源清单的值一直才能获取到目标
Service.spec.ports.name
要和ServiceMonitor.spec.endpoints.port
的名称对应。
Service.metadata.namespace
要和ServiceMonitor.namespaceSelector.matchNames
对应
Service.metadata.labels
的key要和ServiceMonitor.JobLabel
对应
Service.metadata.labels
要和 ServiceMonitor.selector.matchLabels
对应
监控第三方的服务及自定义servicemonitor
一、查看 Etcd 信息
这里的etcd采用二进制方法安装,可以直接访问 host:2379/metrics
获得。
二、将证书存入 Kubernetes
创建secret
|
|
三、将证书挂入 PrometheusServer
方法1: kubectl edit prometheus k8s -n monitoring
方法2:修改 prometheus-prometheus.yaml
文件
增加内容:
|
|
挂入后的证书保存在目录 /etc/prometheus/secrets/{secret_name}/
下。
四、创建 Etcd Service & Endpoints
|
|
五、创建 ServiceMonitor
|
|