Kubernetes监控方案之普罗米修斯操作符(十九)

  

一、普罗米修斯介绍

  

普罗米修斯算子是CoreOS开发的基于普罗米修斯的Kubernetes监控方案,也可能是目前功能最全面的开源方案。
普罗米修斯运营商通过Grafana展示监控数据,预定义了一系列的仪表板

  

1.1,普罗米修斯架构

  

普罗米修斯是一个非常优秀的监控工具。准确的说,应该是监控方案.Prometheus提供了数据搜集,存储,处理,可视化和告警一套完整的解决方案.Prometheus的架构如下图所示:
 Kubernetes监控方案之普罗米修斯运营商(十九)

  

<强>普罗米修斯服务器
普罗米修斯服务器负责从出口国拉取和存储监控数据,并提供一套灵活的查询语言(PromQL)供用户使用。

  

<强>出口国
出口国负责收集目标对象(主机、集装箱…)的性能数据,并通过HTTP接口供普罗米修斯服务器获取。

  

<强>可视化组件
监控数据的可视化展现对于监控方案至关重要。以前普罗米修斯自己开发了一套工具,不过后来废弃了,因为开源社区出现了更为优秀的产品Grafana.Grafana能够与普罗米修斯无缝集成,提供完美的数据展示能力。

  

<强> Alertmanager
用户可以定义基于监控数据的告警规则,规则会触发告警。一旦Alermanager收到告警,会通过预定义的方式发出告警通知。支持的方式包括邮件,PagerDuty Webhook等。

  

1.2,普罗米修斯运营商架构

  

普罗米修斯运营商目前功能最全面的开源监控方案。能够监控节点端口,并支持集群的各种管理组件,如API服务器,调度程序、控制器等经理。

  

普罗米修斯运营商的目标是尽可能简化在Kubernetes中部署和维护普罗米修斯的工作,其架构如下图所示:
 Kubernetes监控方案之普罗米修斯运营商(十九)

  

图上的每一个对象都是Kubernetes中运行的资源。

  

<强>操作符
操作符即普罗米修斯运营商在Kubernetes中以部署运行。其职责是部署和管理普罗米修斯服务器,根据ServiceMonitor动态更新普罗米修斯服务器的监控对象。

  

<强>普罗米修斯服务器
普罗米修斯服务器会作为Kubernetes应用部署到集群中。为了更好地在Kubernetes中管理普罗米修斯CoreOS的开发人员专门定义了一个命名为普罗米修斯类型的Kubernetes定制化资源。我们可以把普罗米修斯看作是一种特殊的部署,它的用途就是专门部署普罗米修斯服务器。

  

<强>服务
这里的服务就是集群中服务的资源,也是普罗米修斯要监控的对象,在普罗米修斯中叫做目标。每个监控对象都有一个对应的服务。比如要监控Kubernetes调度器,就得有一个与调度器对应的服务。当然,Kubernetes集群默认是没有这个服务的,普罗米修斯操作员会负责创建。

  

<强> ServiceMonitor
操作符能够动态更新普罗米修斯的目标列表,ServiceMonitor就是目标的抽象。比如想监控Kubernetes调度程序,用户可以创建一个与调度程序服务相映射的ServiceMonitor对象.Operator则会发现这个新的ServiceMonitor,并将调度程序的目标添加到普罗米修斯的监控列表中。

  

ServiceMonitor也是普罗米修斯运营商专门开发的一种Kubernetes定制化资源类型。

  

<强> Alertmanager
除了普罗米修斯和ServiceMonitor, Alertmanager是运营商开发的第三种Kubernetes定制化资源。我们可以把Alertmanager看作是一种特殊的部署,它的用途就是专门部署Alertmanager组件。

  

二,执掌安装部署

  

舵有两个重要的概念:图表和释放。
图表是创建一个应用的信息集合,包括各种Kubernetes对象的配置模板,参数定义,依赖关系,文档说明等.chart是应用部署的自包含逻辑单元。可以将图表想象成apt,百胜中的软件安装包。
释放是图表的运行实例,代表了一个正在运行的应用。当图被安装到Kubernetes集群,就生成一个release.chart能够多次安装到同一个集群,每次安装都是一个释放。

  

2.1,执掌客户端安装

  

在<代码> https://github.com/helm/helm/releases 下载最新的版本。

  
 <代码> root@master ~ # tar xf helm-v2.12.1-linux-amd64.tar.gz
  (root@master ~) # cp linux-amd64/舵/usr/local/bin/root@master ~ #执掌版本
  客户:,version.Version {SemVer:“v2.12.1 GitCommit:“02 a47c7249b1fc6d8fd3b94e6b4babf9d818144e GitTreeState:“清洁”}
  错误:找不到舵柄

Kubernetes监控方案之普罗米修斯操作符(十九)