核心操作系统项目kube-prometheus和prometheus运算符有什么区别?

use*_*329 4 kubernetes prometheus-operator

Prometheus Operator的github回购https://github.com/coreos/prometheus-operator/项目说

Prometheus Operator使Prometheus配置Kubernetes成为本机,并管理和操作Prometheus和Alertmanager集群。关于完整的端到端监控,这是一个难题。

kube-prometheus将Prometheus Operator与清单清单结合使用,以帮助开始监视Kubernetes本身和在其之上运行的应用程序。

有人可以详细说明吗?

neo*_*yle 7

我一直有这个完全相同的问题/反复遇到两个问题,但是阅读上述答案并没有为我澄清它/我需要一个简短的解释。我发现这个 github 问题让我很清楚。 https://github.com/coreos/prometheus-operator/issues/2619

引用 GitHub 的 nicgirault:

最后我意识到 prometheus-operator chart 正在打包 kube-prometheus 堆栈,但我花了大约 10 个小时才意识到这一点。

**这是我的总结解释:
“kube-prometheus”和“Prometheus Operator Helm Chart”都做同样的事情:

  1. 基本上是 Ingress/Ingress Controller 概念,应用于 Metrics/Prometheus Operator。
  2. 两者都是在 Kubernetes 上轻松配置、安装和管理大型分布式应用程序(Kubernetes Prometheus Stack)的一种方式:**

    你问的整个 Kube Prometheus 堆栈是什么?
    Prometheus、Grafana、AlertManager、CRD(自定义资源定义)、Prometheus Operator(软件机器人应用程序)、IaC 警报规则、IaC Grafana 仪表板、IaC ServiceMonitor CRD(自动生成 Prometheus 指标收集配置并自动将其热导入到 Prometheus 服务器中)
    (此外,当我说轻松配置时,我的意思是 1,000-10,000++ 行易于人类理解的配置,这些配置生成和自动管理 10,000-100,000 行机器配置 + 具有合理默认值的内容 + 监控配置自助服务、分布式配置分片一个操作员/控制器结合配置+从漂亮的人类可读配置生成详细的样板机器可读配置。

如果他们实现了相同的最终目标,您可能会问他们之间有什么区别?
https://github.com/coreos/kube-prometheus
https://github.com/helm/charts/tree/master/stable/prometheus-operator
基本上,CoreOS 的 kube-prometheus 使用 Ksonnet 部署 Prometheus Stack。
Prometheus Operator Helm Chart 包装了 kube-prometheus / 使用 Helm 实现了相同的最终结果。

那么使用哪一种呢?
没关系+他们达到相同的最终结果+从1开始并切换到另一个应该不会很困难。

Helm 往往更快地学习/发展基本掌握。

Ksonnet 更难学习/发展基本掌握,但是:

  • 它更幂等(更适合 CICD 自动化)(但仅 99% 幂等与 99.99% 幂等的差异。)
  • 具有内置模板,这意味着如果您有多个集群,您需要管理/您希望始终保持彼此一致。然后,您可以利用 ksonnet 的模板,使用具有大量代码重用的 DRY 代码库来管理 Kube Prometheus Stack 的多个实例(用于多个环境)。(如果您只有几个 envs 并且 Prometheus 不需要经常更改,那么手动保持 4 个 helm 值文件同步并不是完全不合理的。我还看到 Jinja2 模板用于模板化 helm 值文件,但是如果您'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''t be人和你不妨考虑一下 ksonnet。)


Pra*_*dha 5

Kubernetes operator是kubernetes专用的应用程序(pod),可自动配置,管理和优化其他Kubernetes部署。它们被实现为自定义控制器。

根据coreOS官方网站:

CoreOS将操作员引入为一类可以操作其他软件的软件,从而将人类收集的操作知识转化为软件。

Prometheus运算符提供了一种在kubernetes集群上部署配置和监视Prometheus实例的简便方法。为此,Prometheus运算符在kubernetes中引入了三种类型的自定义资源定义(CRD)。

  1. 普罗米修斯
  2. 警报经理
  3. 服务监控器

现在,在上述CRD的帮助下,您可以通过提供直接创建一个Prometheus实例,kind: Prometheus并且Prometheus实例已准备好服务,您也可以这样做AlertManager。否则,您将不得不使用其映像,配置和更多内容来设置普罗米修斯的部署。

Prometheus Operator可以使在Kubernetes上运行Prometheus尽可能简单,同时保留Kubernetes本地配置选项。

现在,kube-prometheus实现了prometheus运算符prometheusalertmanagergrafana通过运行单个命令为您提供了最少的yaml文件来创建的基本设置。

git clone https://github.com/coreos/prometheus-operator.git
kubectl apply -f prometheus-operator/contrib/kube-prometheus/manifests/
Run Code Online (Sandbox Code Playgroud)

通过在kube-prometheus目录中运行以上命令,您将获得一个monitoring名称空间,该名称空间将具有Alertmanager实例,prometheus并且grafana用于UI。这对于大多数基本实现来说已经足够了,如果您根据应用需要更多特定信息,则可以添加所需的更多Yaml导出程序。

Kube-prometheus对prometheus-operator项目的贡献更大,该项目很好地实现了prometheus操作员功能,并为您的kubernetes集群提供了完整的监视设置。您可以从kube-prometheus开始,然后根据您的应用程序扩展监视设置的功能。

您可以在这里了解更多关于prometheus-operator的信息

  • 最近,我们又将两个项目又分成了各自的存储库:https://github.com/coreos/prometheus-operator https://github.com/coreos/kube-prometheus将来,这应该会更加清楚。 (2认同)