一、Prometheus Operator & Kube-Prometheus & Helm chart 部警区别

Prometheus Operator是 Kubernete 原生的工具,它通过 Prometheus 资源定义为 Kubernete 对象 (CRD) 来简化 Prometheus 集理的管理,它自动化了在 Kubernetes 中配置和扩展 Prometheus 实例时涉及的常见任务,并提供了在 Kubernetes 环境中部、配置和管理 Prometheus 的简单方式。

1.通过 kubectl 或 Kubernetes APl 创 Prometheus Operator Custom Resource Definition (CRD). 0 o

2使用 kubectl或YAML 文件创理 Prometheus 实例的定义

3.Prometheus Operator 观察配置更改并创建、更新或别除 Prometheus 实例 

官方安装文档: https://prometheldev/docs/userguides/getting-started/ 需要Kubernetes版本至少在v1.16.x以上

官方Github地址: operator/promerheus.operator

kube-prometheus提供其于Prometheus & Prometheus Operator完数的集的监控置示例,包括多实例Prometheus & Alertmanaer部要与配置及nod exporter的metrics采集,以及scrape Prometheus target各种不同的metrics endpoints,并提供Alerting rules-些示例,发告警集群潜在的问题,

1.使用YAML文件或 Helm chart 安装 Kube-Prometheus. 

2,Kube-Prometheus 部署 Prometheus、Alertmanager、Grafana和 Pushgateway等组性.

3.使用 Prometheus Operator 观家和管理 Prometheus 和相关组件  。

官方安装文档: https://prometheus/prologue/quick-start/

安装要求:  https://eithub.com/promet s.operator/kube.prometheusfcompatibillity

官方Githubbit:  https://eithub.com/prometheus-operator/kube.prometheus helm chart orometheus-communiy/kub prometheus-stack 提供类似

kube:prometheus的功能,但是该项目是由Prometheus-community来维护

1.安装 Helm 并添加 Prometheus Helm chart 存储库

2.使用Helm 安装Prometheus chart,包括Prometheus、Alertmanager和Pushgateway等组件 。

https//eithub,com/orometheus community/helm-charts/ree/main/tharts/kube.prometheus stack#kube prometheus stack

总结:三者部署 Prometheus 的区别

Prometheus Operator 可以更加自动化的管理 Prometheus 集群

Kube-Prometheus 则提供了更加全面的监控解决方案,包活 Prometheus、Grafana和Alertmanager 等组件:

Helm chart 则通过一个命令即可快速部署 Prometheus 及其相关组件,但无法方便地进行各个组件的管理

Kube-Prometheus:目前是k8s集监控的主流项目,主要使用Prometheus做集就监控使用Prometheus Operator做监按的运管理,也就是以上二者的结合

二、Prometheus-Operator CRD资源

2.1、CRD 全称是 Custom Resource Definition

什么是CRD?

以 Deplovment 为实例,Deplvment 没有置接创 POd,而是管现 RS,而 RS 管现Pod,这就是控制器港式,控制图模式允许基于已有的资源定义更高阶的控制器,用来实现更复杂的能力。

Prometheus Operator告警/管理Prometheus Server_k8s

特点:

CRD 本身是 Kubernetes 的一种资源,允许用户自定义新的资源类型:

CRD 允许用户甚于已有的 Kubernetes 资源,例如 Deployment、Configmap 等,拓展集群能力;

CRD 可以自定义一套成体系的规范,自造概念:

CRD 本身是一种 Kubernetes 内置的资源类型,即自定义资源的定义,用于描述用户定义的资源是什么样子

Prometheus Operator告警/管理Prometheus Server_镜像源_02

2.2、Prometheus-Operator CRD

Prometheus operator 的本职就是-用户自定义的RD资源以及ontroller 的实现,Prometheus perator 负责监听这些自定义资源的变化,并旦根据这些

资源的定义自动化的完成如Prometheus Server 自以及配置的自动化营理工作,主要包括以下几个功能:

·Kubernetes 自定义资源: 使用 Kubernetes CRD 来部署和管理 Prometheus、Alertmanager 和相关组件

。简化的部署配置:直接通过 ubernetes 资源清单配置 Prometheus,比如版本、持久化、副本、保留策略等等配置

Prometheus 监控目标配置: 基于熟知的 ubernetes 标签查询自动生成监控目标配置,无学习 Prometheus 等地的配置

Prometheus Operator告警/管理Prometheus Server_镜像源_03

Prometheus Operator告警/管理Prometheus Server_k8s_04

三、部署 Kube-Prometheus

3.1、概述

kubeprometheus 是一整套监控解决方案,它使用 Prometheus 采集集群指标,Grafana 做展示,包含如下组件:

The Prometheus Operator

Highly available Prometheus

Highly available Alertmanager

Prometheus node-exporter

Prometheus Adapter for Kubernetes Metrics APIs (k8sprometheus-adapter)

kubestate-metrics

Grafana

注意: kube-promethues与kubernetes的版本对应关系如下:

prometheus-operator/kube-prometheus: Use Prometheus to monitor Kubernetes and applicatons runnine on Kubernetes (eithub .com

3.2、下载 Kube-Prometheus 代码

Prometheus Operator告警/管理Prometheus Server_k8s_05

方法一:

git clone https://github.com/prometheus-operator/kube-prometheus.git
cd kube-pr ometheus
git branch -r
查看挡前分支有哪些
git checkout release-0.9
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

方法二:

git clone -b release-0.9 https://github.com/prometheus-operator/kube-prometheus.git
注:在release-0.11版本之后新增了NetworkPolicy;
默认是允许自己访间,如果了解Networkpoliy 可以修改-下默认的规则,可以用查看 1s netmorkpoliy",如果不修改的活则会影响到修改 NodePort
类型也无法访问;
如果不会Networkpolicy可以直接制除就行;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

3.3、修改 Kube-Prometheus 镜像源

国外镜像源某些镜像无法拉取,我们这里修放prometheus-operator,prometheus,alertmanager, kube-state-metrics,node-exporter, prometheus.adapter的境像源为国内境像源。这里使用的是中科大的镜像源。

#进入修改的目录
cd ./kube-prometheus/manifests/
# 银像替换
sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g"
setup/prometheus-oper ator -deployment .yam1
sed -i 's/quay.io/quay.mirrors,ustc.edu.cn/g'
prometheus-prometheus .yam
sed -i 's/quay.io/quaymirrors.ustc.edu.cn/g
alertmanager-alertmanager .yam1
sed -i 's/quay.io/quay.mirrors,ustc.edu.cn/g’ kube-state-metrics-deployment.yaml
sed -i 's/k8s.gcr.io/1ank8s,cn/g’kube-state-metrics-deployment .yaml
sed -i 's/quay.io/quay,mirrors,ustc,edu,cn/g’ node-exporter-daemonset.yaml
sed -i 's/quay.io/quay.mirrars.ustc.edu,cn/g’ prometheus-adapter-deployment .yaml
sed -i 's/k8s.gcr.io/lank8s.cn/g’prometheus-adapter-deployment .yaml
# 确认一下是否还有国外镜像
grep“image: " -r
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

3.4、安装operator & kube-Prometheus

创建namespace & CRD资源,如下:setup 文件央中包含所有自定义资源配置 CustomResourceDefinition (一般不用修改,也不要轻易修改)

#下载prometheus-operator德像满要花费几分钟,这里等待几分钟,直到prometheus-operator变成running状杰
kubectl create -f manifests/setup
创建所有应用资源:
kubect1 create -f manifests/
# 等待所有镜像变成Running状态
watch kubectl get po -n monitoring
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

需要关注的几个控制器文件:

prometheus-adapter-dep]oyment.yam]: kubernetes自定义监控指标
blackbox-exporter-deployment.yam1: 黑盒监控控制器
kube-state-metrics-deployment,yam]:监听API Server生成有关资源对象的状态指标
setup/prometheus-operator-deployment.yam]:prometheus-operator控制器文件
prometheus-prometheus.yam]: prometheus王控制器文件
alertmanager-alertmanager .yaml:aertmanager主控制器文件
grafana-deployment.yam]:grafana主控制器文件
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

删除所有资源:

# kubect1 delete -ignore-not-foundetrue -f manifests/ f manifests/setup
  • 1.

3.5、配置Ingress盗源对象

四、访问验证

4.1、prometheus

两个Prometheus实例的,Service 添加 sessinAfinity: (lientlP 属性,会 (lientlp 来做 esion 亲和性,所以我们不用担心请求会到不同的副本上去

$ curl prometheus-opera.kubernets.cn
  • 1.

4.2、granfana

$ curl grafana-opera.kubernets.cn
  • 1.

4.3、alertmanager

$ curl prometheus-opera.kubernets.cn
  • 1.
五、总结

Prometheus整体监控结构略微复杂,一个个部署并不简单,kube-prometheus大大提升了部署的方式;

通过自定义资源CRD维护简单,不用再次维护大量的confgmap配置文件,操作流程大大简化;

Kube-Prometheus 则提供了更加全面的监控辉决方案,包括 Prometheus、Grafana和Alertmanager 等组件;

CoreOS主推Kube-Prometheus,目前是k8s集群监控的主流项目